سؤال

لا يمكن تطبيق طريقة تخفيف على jquery scrollto:

$("#scroller").scrollTo(target,1000,{axis:'x',easing:'linear'});

هذا لا يخفف أي شيء ... لقد بدأت في استخدام jQuery الآن (استخدم النموذج الأولي لفترة طويلة) لذلك هذا بالتأكيد خطأي. هل أحتاج إلى مكون إضافي لتخفيفه لتحقيق ذلك؟ ما هو خيار التخفيف لهذا البرنامج المساعد (إن وجد)؟ الوثائق غير واضحة حول هذا الموضوع. شكرًا.

هل كانت مفيدة؟

المحلول

من jquery:

تطبيقات التخفيف الوحيدة في مكتبة jQuery هي الافتراضي ، المسمى Swing ، والآخر يتقدم بوتيرة ثابتة ، تسمى الخطية.

لذا easing: 'linear' ليس من المفترض أن تظهر أي شيء. محاولة easing: 'swing'.

نصائح أخرى

$("#scroller").scrollTo(target, 1000, {easing: 'easeInOutCirc'});

ويمكن الاطلاع على قائمة رائعة من السفحات هنا:

http://asings.net/

linear هو الخيار الافتراضي للتخفيف: الرسوم المتحركة الخطية => مباشرة إلى النقطة في ثانية.

محاولة easing:'elasout'

أعلم أن هذا موضوع قديم لكنني وجدته وساعدني. كما ذكرت Palmsey في أحد التعليقات ، يظهر Scrollto العرض التوضيحي مثالًا على استخدام التخفيف ، لكنه لم يذكر في الواقع أنه استعار مقتطفًا صغيرًا من الكود من المكون الإضافي الذي تم العثور عليه في http://gsgd.co.uk/sandbox/jquery/ise/. يتضمن العرض التوضيحي على Scrollto هذا الرمز في ملف init.js

    //borrowed from jQuery easing plugin
    //http://gsgd.co.uk/sandbox/jquery.easing.php
    $.easing.elasout = function(x, t, b, c, d) {
        var s=1.70158;var p=0;var a=c;
        if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
        if (a < Math.abs(c)) { a=c; var s=p/4; }
        else var s = p/(2*Math.PI) * Math.asin (c/a);
        return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
    };

ومع ذلك ، إذا قمت بتضمين المكون الإضافي بالكامل المذكور أعلاه ، فيمكنك استخدام أي من الوظائف المذكورة في http://asings.net/

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