۲۴ دیدگاه نظر لقمان آوند
کد اسکرول نرم صفحه با استفاده از چند خط کد jQuery
کد اسکرول نرم صفحه با استفاده از چند خط کد jQuery

حتما در بعضی سایت‌ها دیدید که با کلیک روی بوک مارک ها، صفحه ی وب به صورت آروم و نرم اسکرول میشه. به صورت پیشفرض اسکرول در صفحات وب بک دفعه ای و خیلی تند انجام میشه ولی اگر بخواید اینکار رو زیباتر و روون‌تر انجام بدید باید از جاوااسکریپت کمک بگیرید . و اگر بخواید باز هم راحتتر این کارو بکنید باید از jQuery بهره بگیرید . برای همین در پست امروز با استفاده از جی کوئری این کار رو انجام خواهیم داد . اول از همه می‌تونید دموی زیر رو ببینید که بهتر متوجه بشید منظور از اسکرول نرم (smooth scroll) چیه هسن :

 گام نخست: لود کردن کتابخانه ی جی کوئری

در اولین مرحله باید کتابخونه ی جی کوئری رو در هدر صفحه ی وب و یا قالب سایت و وبلاگ خودتون به این شکل اضافه کنید :<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'></script>در کد بالا jQuery رو از گوگل لود کردیم . شما می‌تونید آدرس رو عوض کنید و آدرس کتابخونه ی آپلود شده ی خودتون رو قرار بدید .

 گام دوم: نوشتن تابع اسکرول نرم

بعد از لود کردن jquery حالا با نوشتن چند خط کد به شکل زیر قابلیت اسکرول نرم رو به صفحه ی وبتون اضافه می‌کنید . این کد رو هم در هدر صفحه و بعد از کد قبلی قرار بدید :<script> $(function() {  $('a[href*=#]:not([href=#])').click(function() {    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {      var target = $(this.hash);      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');      if (target.length) {        $('html,body').animate({          scrollTop: target.offset().top        }, 1000);        return false;      }    }  }); }); </script>بعد از اینکه این تابع رو اضافه کردید قابلیت اسکرول نرم رو به صفحه اضافه کردید و حالا فقط باید از اون استفاده کنید .

 استفاده از اسکرول نرم

برای اینکه از قسمتی از صفحه به جای دیگه ی اون اسکرول کنید باید مبدا و مقصد اسکرول رو تعریف کنید . یعنی اول اون لینکی که با کلیک روی اون به بخش مورد نظر اسکرول میشه و دوم هم مکانی هست که اسکرول به اونجا انجام میشه . اول بهتره که مقصد اسکرول رو تعین کنید . با دادن ویژگی id به تگهای html می‌تونید اون‌ها رو به عنوان مقصد اسکرول مشخص کنید . به طور مثال ما می‌خوایم لینکی رو در صفحه قرار بدیم که با کلیک روی اون صفحه به جایی اسکرول بشه که یه پاراگراف با آیدی paragraph1 قرار داده . برای همین اول باید این پاراگراف با این آیدی رو در صفحه بزارید (یا اینکه id مذکور رو به یک پاراگراف از قبل موجود اضافه کنید):<p id="paragraph1">This is a Paragraph !</p>

با انتساب آیدی به هر تگی در صفحه ی html می‌تونید اونو به عنوان مقصد اسکرول تعیین کنید .
بعد از اینکار با استفاده از یه لینک ساده که به تگ مذکور اشاره میکنه می‌تونید مبدا اسکرول رو هم مشخص کنید . مثلا لینک زیر رو اگه در صفحه اضافه کنید، با کلیک روی اون با اسکرول نرم به همون پاراگراف بالایی میریم :<a href="#paragraph1">Go to Paragraph1</a>
با استفاده از علامت # که آیدی تگ بلافاصله بعد از اون اومده می‌تونید به بخشی از صفحه ی وب که دارای اون آیدی هست لینک بدید .
براتون آرزوی موفقیت می‌کنم .

۲۴ دیدگاه
ما همه سوالات و دیدگاه‌ها رو می‌خونیم و پاسخ میدیم
۲۳ دی ۱۴۰۱، ۲۳:۱۰

من این کد را در فایل جی اسی که در فوتر صفحه ام لود می‌شه قرار دادم، کتابخانه ی جی کوئری رو هم از فوتر لود می‌کنم. کد کار نمی‌کنه؟ ایا دلیلش می‌تونه لوود شدن فایل‌های جی اس در فوتر باشه؟

نازنین کریمی مقدم ۲۵ دی ۱۴۰۱، ۱۱:۱۲

درود در حالت کلی برای سئو بهتره که فایلهای مورد نیاز رو در تگ head لود کنید اما لودشدنش در فوتر نباید باعث خطا بشه. منتها چون بحث ما الان اسکرول هست، بله کار درستی که بره تو فوتر نیست و باید از اونجا برش دارید.

Kasra ۲۹ فروردین ۱۳۹۸، ۰۸:۳۹

سلام دوستان, واقعا مطلب مهمی بود اما من یه مشکل دارم اونم اینه که اسکرول نرم انجام نمیشه(یعنی یواش یواش نمیره پایین و یکدفعه ای میپره) میخواستم ببینم مشکل از کجاست؟ تازه وقتی کدی که باید بعد اضافه کردن jquery بزاریمم حذف میکنم تغییری ایجاد نمیشه!

mohammad ۲۹ آذر ۱۳۹۷، ۱۰:۱۴

سلام حالا اگه بخواهیم اسکرول کند یعنی در مدت زمان 2 ثانیه به پایین برود چکار کنیم ؟

مبین طارمی ۰۷ فروردین ۱۳۹۶، ۱۹:۳۵

با سلام کجا میشه محتوای سایت رو دید که مبدا و مقصد رو تعیین کرد؟

وحید صالحی ۱۸ اردیبهشت ۱۳۹۶، ۰۶:۳۵

باید توسط تگ‌ها نشانه گذاری کنید

سینا ۲۶ اردیبهشت ۱۳۹۵، ۲۰:۵۰

ممنون خیلی دنبالش بودم.. کارم رو راه انداخت, خدا کارتونو راه بندازه D:

dashjalal ۳۱ شهریور ۱۳۹۴، ۰۴:۵۰

سلا م آقای آوند و ممنون از این آموزش . لینک‌ها خوب ریدایرکت نمیشن و باید دستی انجامش داد . سوالی داشتم در این مورد که : چطور میشه سرعت خود اسکرول رو تنظیم کرد و حرکت اون رو نرم‌تر کرد وقتی سایت رو اسکرول میکنیم و میایم پایین . عذر خواهم داخل این کامنت پرسیدم .

وحید صالحی ۰۲ مهر ۱۳۹۴، ۱۶:۰۶

دوست عزیز سوالتون رو در انجمن مطرح کنید

aria ۰۸ مرداد ۱۳۹۴، ۰۹:۲۰

خــــــــــــیلی دستت درد نکنه. دمت گرم داداشی. :?:

khashayar ۱۳ تیر ۱۳۹۴، ۰۷:۴۳

سلام خسته نباشید... یه سوال داشتم من این کد و اضافه کردم خیلیم خوب کار می‌کنه... ولی اسلاید شو منو خراب کرد دیگه اسلایدم کار نمی‌کنه باید چیکار کنم؟

وحید صالحی ۱۷ تیر ۱۳۹۴، ۱۱:۴۴

سلام چند دلیل میتونه داشته باشه یکیش این که باید چک کنید که تداخلی با فایل‌های اسلایدرتون نداشته باشه

خشایار ۱۷ تیر ۱۳۹۴، ۱۲:۵۶

مرسی ممنون آره تداخل داشت با تگ iframe درستش کردم مرسی واقعا...

shima a ۰۳ تیر ۱۳۹۴، ۰۳:۳۰

سلام خیلی ممنون کد مفیدی بود

parham ۲۷ خرداد ۱۳۹۴، ۰۶:۲۳

سلام ببخشید برای ایجاد جی کوئری یا نوشتن پلاگین باید خود جی کوئری فقط بلد بود؟

لقمان آوند ۲۷ خرداد ۱۳۹۴، ۲۰:۱۶

بله البته اگر جاوااسکریپت هم بلد باشید دیدتون بازتره و کمکتون می‌کنه در کدنویسی.

نیلوفر ۲۰ اسفند ۱۳۹۳، ۱۸:۵۲

مطلب خیلی مفیدی است اما نمیدونم چرا برای من رفتن به بالا به آرامی انجام میشه ولی به آرامی پایین نمیاد!!!

وحید صالحی ۲۶ اسفند ۱۳۹۳، ۱۱:۰۹

سلام نباید هم اینطور باشه:-) بالا و پایین نباید ترم و آرام باشه چون ماهیت کد همینه اونجا که مبینید در ابتدا به آرامی بالا میره مربوط به صفحه ریدایرکت سون لرن هست نه کد مذکور...

hannanstd ۰۹ آبان ۱۳۹۳، ۱۷:۲۲

سلام . چطور میشه کاری کرد که اگر در حین پایین اومدن کسی هرجا کلیک کرد اسکرول متوقف بشه؟

فرشد ۲۲ تیر ۱۳۹۳، ۰۴:۱۶

ممنون . امکان خیلی جالبی بود .

حامد مودی ۲۱ تیر ۱۳۹۳، ۰۵:۴۷

سلام استاد بالاخره انگشت به کیبورد شدین! مطلب خیلی جالبیه. آینده ای نزدیک به دردم میخوره ممنون

لقمان آوند ۲۲ تیر ۱۳۹۳، ۰۷:۳۵

سلام حامد جان متاسفانه وقتم خیلی کمه وگرنه خیلی دوست دارم بیشتر بنویسم

افشردی ۲۰ تیر ۱۳۹۳، ۱۳:۴۶

سلام خدا قوت، خیلی خوب و کاربردی بود.

محمد اسفندیاری ۲۰ تیر ۱۳۹۳، ۱۱:۰۰

ممنون از شما بسایر عالی بود :?:

  •  گام نخست: لود کردن کتابخانه ی جی کوئری
  •  گام دوم: نوشتن تابع اسکرول نرم
  •  استفاده از اسکرول نرم
اشتراک گذاری مقاله در :