لماذا يقوم Mootools بإزالة الهامش عند إنشاء مثيل fx.slide؟

StackOverflow https://stackoverflow.com/questions/1249237

  •  12-09-2019
  •  | 
  •  

سؤال

انا املك <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 الإضافات) تفتقر إلى حد ما في بعض الجوانب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top