2009-08-08 4 views
0

CSS 규칙이 margin: 0 auto;<div>을 가지고 있으며 필요시 MooTools를 사용하여 슬라이드합니다.Fx.Slide의 인스턴스를 만들 때 MooTools가 여백을 제거하는 이유는 무엇입니까?

Fx.Slide 개체의 단순한 인스턴스 내 요소의 여백을 제거 것으로 보인다. 즉, 요소가 부모 내부에 가운데에 맞춰졌지만 이제는 왼쪽으로 정렬됩니다.

var slide = new Fx.Slide('mydiv'); 

나는이 같은 수행하여이 효과를 상쇄 할 수 있습니다 : 그냥 혼자 선은이 작업을 수행 할 것으로 보인다

var slide = new Fx.Slide('mydiv'); 
$('mydiv').setStyle('margin', '0 auto'); 

을하지만이 조잡하고 난 분명이 일을하고 싶지 않아 이 상황을 겪을 때마다 그리고 더 많은 것을 알고 싶습니다. 왜 MooTools가 먼저 여백을 제거합니까? 내가 모르는 매개 변수가 있습니까? 제가 MooTools를 처음 접했을 때 알려주세요. 그 응용 프로그램이 jQuery의 응용 프로그램보다 훨씬 더 빠르다는 것을 빨리 알게되었지만 (필자의 목적으로는) 필자는 설명서가 구문보다 훨씬 덜 장황 함을 발견했다. Fx.Slide.js에서

답변

2

:

Fx.Slide = new Class({ 

    /* .. */ 

    initialize: function(element, options){ 
     this.addEvent('complete', function(){ 
      this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0); 
      if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper); 
     }, true); 
     this.element = this.subject = document.id(element); 
     this.parent(options); 
     var wrapper = this.element.retrieve('wrapper'); 
     this.wrapper = wrapper || new Element('div', { 
      styles: $extend(this.element.getStyles('margin', 'position'), {overflow: 'hidden'}) 
     }).wraps(this.element); 
     this.element.store('wrapper', this.wrapper).setStyle('margin', 0); 
     this.now = []; 
     this.open = true; 
    }, 

    /* .. */ 

당신이 볼 수 있듯이, Fx.Slideoverflow: hidden와 래퍼 DIV (this.wrapper)에서 그것을 감싸고 요소의 marginposition, 당신이 그것에 적용되는 요소 (this.element)을한다 요소의 margin을 제거합니다.

는 그래서 margin을 제거하는 디자인입니다. 내가 이해하지 못하는 이유는 여백이 래퍼로 전송되지 않는 이유입니다. !important을 사용하는 부모 요소에 일반 DIV를 수정하는 CSS가있을 수 있으며 Fx.Slide이 속성을 제대로 전송하지 못하게 할 수 있습니다.

당신은 Mootools의 최신 버전 더 (1.2.3.1)과 1.2.3을 Mootools의를 사용하고 있습니까?

또한 Fx.Slide이 제대로 작동하려면 페이지에이 표준 모드 여야합니다. 마크 업에서 가장 먼저 XHTML 또는 HTML (엄격 또는 과도기) doctype을 사용하고 있습니까? (XML 프롤로그 없음).

$('mydiv').getParent().setStyle('margin', '0 auto'); 

MooTools이 작업에 큰 자바 스크립트 프레임 워크와 나는 개인적으로 it is way more powerful than jQuery (jQuery를 거대한 커뮤니티를 가지고 있다는 사실을 제외) 느낌 : 그것은 여전히 ​​작동하지 않으면 최악의 경우는, 다음을 사용합니다. 아쉽게도 More 패키지 (jQuery의 플러그인과 동일) 일관성은 일부 측면에서는 다소 부족합니다.

+0

나는 두 버전을 모두 사용하고 있습니다. 몇 시간 전에 다운로드 했어요. 내 페이지가 HTML 5 (그냥 )이지만 결과를보기 위해 XHTML 전환으로 전환했는데 여전히 같은 결과입니다. –

+0

상위 요소에 일반 DIV에 영향을 미치는 CSS가 있습니까? –

+0

부모 div도 0 자동이고 해당 div의 부모는 본문입니다. 여백은 0으로 설정되어 있습니다.하지만 그 영향은 영향을 미치지 않는 것 같습니다. 왜냐하면 방금 선언을 제거 했으므로 아무 것도 변경되지 않았기 때문입니다. 내가 생성자를 잘못 이해하지 않는다면 명시 적으로 래퍼에 여백이 없다고 말하는 것이 아닌가? 왜 당신이 물었던 것처럼 마진이 이전되지 않았습니까? –

관련 문제