لماذا يقوم Mootools بإزالة الهامش عند إنشاء مثيل fx.slide؟
سؤال
انا املك <div>
مع قاعدة CSS margin: 0 auto;
وأنا أستخدم 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
:
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.Slide
يأخذ العنصر (this.element
) تنطبق على ذلك، يلفه في المجمع DIV (this.wrapper
) مع overflow: hidden
و ال margin
و position
من العنصر ثم يزيل margin
من العنصر.
إحياء ذلك margin
هو حسب التصميم. ما لا أفهمه هو سبب عدم نقل الهامش إلى المجمع. قد يكون لديك بعض CSS تعديل Divs عادي في العنصر الأصل الذي يستخدمه !important
ويمنع Fx.Slide
من نقل الخصائص بشكل صحيح.
هل تستخدم Mootools 1.2.3 مع أحدث إصدار من Mootools أكثر (1.2.3.1)؟
أيضا، ل Fx.Slide
للعمل بشكل صحيح، صفحتك الاحتياجات أن تكون في وضع المعايير. هل لديك XHTML أو HTML (صارمة أو انتقالية) docypepe كأول شيء في علامتك؟ (لا xml prolog). أسوأ حالة، إذا لم تكن لا تعمل، فاستخدم ما يلي:
$('mydiv').getParent().setStyle('margin', '0 auto');
mootools. هو إطار جافا سكريبت كبير للعمل معه وأشعر شخصيا إنه أكثر قوة من مسج (باستثناء حقيقة أن مسج لديه مجتمع ضخم). لسوء الحظ، ال More
الحزمة (التي تعادل الإضافات jquery's الإضافات) تفتقر إلى حد ما في بعض الجوانب.