-
June 27th, 2015, 13:12
#1
مشکل با css animate
سلام
وقتی من کلاس مورد نظرم رو به بخش دلخواه میدم وقتی صفحه رو اسکرول میکنم تا به بخش مورد نظر برم افکت داده شده اجرا نمیشه. اما وقتی روی افکت مورد نظر باشم و f5 بزنم وقتی صفحه لود میشه و همونجا باشه افکت نمایش داده میشه. من میخوام مثل بسیاری از سایت ها هنگامی که صفحه اسکرول میخوره انیمیشن مورد نظر کار کنه . در بعضی از سایت ها دیدم که وقتی اسکرول میخوره و یک بار انیمیشن اجرا میشه مجدد که به انجا اسکرول کنی انیمیشن نمایش داده نمیشه ولی بعضی ها هر بار که اون بخش دیده بشه انیمیشن هم اجرا میشه. در کل چطور میشه اینو کنترل کرد ؟
با تشکر
- - - Updated - - -
چیزی که متوجه شدم با جی کوئری باید کلاس اضافه کرد.
مثلا باید وقتی به کلاس ... رسید کلاس ... رو اضافه کن (دلخواه: و وقتی که خارج شد کلاس ... حذف کن)
ولی نمیدونم از چی باید استفاد کرد
-
-
June 27th, 2015 13:12
# ADS
-
June 27th, 2015, 14:21
#2
عضو انجمن
پاسخ : مشکل با css animate
با سلام٬
کد:
// به جای 400 فاصله مورد نظرتون تا بالای صفحه بر حسب پیکسل رو بنویسید
var num = 400;
$(window).bind('scroll', function () {
if ($(window).scrollTop() > num) {
$('.item').addClass('animate');
}
});
در کد بالا این قانون وضع شده که وقتی صفحه اسکرول شد و از محل اولیهش 400 پیکسل فاصله گرفت٬ به کلاس item کلاس animate هم اضافه شود.
-
تعداد تشکر ها از mojtaba05 به دلیل پست مفید
-
پاسخ : مشکل با css animate
بدون در نظر گرفتن ارتفاع می خوام. شاید n تا قسمت داشته باشم که بخوام استفاده کنم. اونوقت مشکل میشه. بخصوص اگه سایت رسپانسیو هم باشه که باز مشکل بیشتر میشه...
-
-
عضو انجمن
پاسخ : مشکل با css animate
ممکنه یک مثال بزنید تا من دقیقا متوجه منظورتون بشم؟
-
-
July 13th, 2015, 14:02
#5
پاسخ : مشکل با css animate

نوشته اصلی توسط
mojtaba05
ممکنه یک مثال بزنید تا من دقیقا متوجه منظورتون بشم؟
مثال : :www.theknot.com/
تغریبا وسطای صفحه (بعد از اسلایدشو و چند عکس)
هر وقت اسکرول به بخش مورد نظر میرسه و نمایش داده میشه با افکت دیده میشه. در ظاهرا یک کلاس اضافه و حذف میشه. چطور میشه اینو تعریف کرد ؟
-
-
July 13th, 2015, 20:56
#6
عضو انجمن
پاسخ : مشکل با css animate
بله با همون روشی که گفتم می تونید عمل کنید، تعیین می کنید که وقتی یک مقدار معینی از بالا فاصله گرفتیم چه اتفاقی بیفتد.
حالا می توانید مستقیما دستور Css بدید و یا با تغییر کلاس، فرمان های لازم رو به عناصر مورد نظرتون اعمال کنید.
اتفاقا در قالبی که در حال حاضر در حال طراحی هستم (http://modernbeauty.ir/) از تکنیک مشابه در زیر اسلایدشو بهره بردم.
-
-
July 14th, 2015, 02:37
#7
عضو انجمن
پاسخ : مشکل با css animate
شما باید کاری کنید که انیمیشن زمانی شروع بشه که المان مربوطه تو دید کاربر هست یا اصطلاحا تو view port هست
برای راحتی کار از کتابخونه زیر استفاده کنید که قابلیت تشخیص view port رو هم داره
http://jackonthe.net/css3animateit/
موفق باشید...
طراحی و برنامه نویسی
حرفه ای وب - سی ام اس
اختصاصی - ساخت تجهیزات
الکترونیکی - پرینترهای
سه بعدی
همه و همه در
نگاره
-
تعداد تشکر ها ازiFire به دلیل پست مفید
-
July 27th, 2015, 15:22
#8
عضو انجمن
پاسخ : مشکل با css animate

نوشته اصلی توسط
iFire
شما باید کاری کنید که انیمیشن زمانی شروع بشه که المان مربوطه تو دید کاربر هست یا اصطلاحا تو view port هست
برای راحتی کار از کتابخونه زیر استفاده کنید که قابلیت تشخیص view port رو هم داره
http://jackonthe.net/css3animateit/
موفق باشید...
سلام، از این پلاگینی که آدرس دادید من نتونستم استفاده کنم، یه پلاگین مشابه بود که برای من کار کرد:
https://github.com/protonet/jquery.inview
و یک روش هم بدون استفاده از پلاگین و با آزمون و خطا تونستم درست کنم:
کد:
$(document).ready(function(){
$(window).on('scroll', function(){
//اول مقدار اسکرول از بالا را در یک متغیر ذخیره می کنیم
var scrollTop = $(window).scrollTop(),
//بعد مقدار فاصله عنصر از بالای پرونده (و نه صفحه نمایش) رو در یک متغیر ذخیره می کنیم
elementOffset = $('.element').offset().top,
// دو متغیر قبل رو از هم کم می کنیم که حاصلش مساوی است با فاصله عنصر ما از بالای صفحه یا همون ویوپورت
distance = (elementOffset - scrollTop),
//ارتفاع صفحه نمایش یا همون ویوپورت رو در یک متغیر ذخیره می کنیم
height = $(window).height();
// حالا شرط می کنیم که اگر فاصله بالای عنصر ما تا بالای ویوپورت کمتر از ارتفاع ویوپورت شد، کار دلخواه ما رو انجام بده
if(distance < height){
// کاری انجام بده
}
});
});
یه دموی آنلاین ساختم می تونید ببینید:
http://jsfiddle.net/sabeti05/3qc7ujx0/
-
تعداد تشکر ها از mojtaba05 به دلیل پست مفید