چرتک بلاگ

کدنویسی، آموزش وبلاگ، تفریح و دلنوشت با کمی چاشنی طنز

اسکرول بار سفارشی CSS

اسکرول بار سفارشی CSS

توسط Mohsen シ در تاریخ ۱۸ شهریور ۱۴۰۰

سلام دوستان امیدوارم که حالتون خوب باشه. امروز قراره یاد بگیریم که چطور برای وبلاگ و یا وبسایتمون یا یک قسمتی از صفحه یک اسکرول‌بار سفارشی بسازیم. اگر نمیدونین، اسکرول‌بار همون چیز مستطیل شکل زشت خاکستری رنگ هست که سمت راست صفحه رو گرفته و میشه باهاش توی صفحه بالا و پایین رفت. و امروز قراره خوشگلش کنیم :) اونم نه به کمک جاوا اسکریپت بلکه تنها به کمک CSS. یعنی اگر توی بلاگ بیان وبلاگی دارین می‌تونین بدون خرید امکان جاوا اسکریپت همین حالا اسکرول‌بار وبلاگتون رو تغییر بدین. 

اول از همه به سراغ ابزارهای موجود برای ساخت اسکرول‌بار سفارشی میریم (چون اینو میدونم بعضیا علاقه‌ای به کدنویسی و این چیزا ندارن) بعدش به بررسی کدها می‌پردازیم.

W3 Generator

اولین سایت برای ساخت اسکرول‌بار سفارشی w3 Generator هستش. اگر به سایت برین دو تا تب میبینین که یکیش thumb هست و برای سفارشی سازی دسته اسکرول‌بار هست (همونیکه نسبت به بدنه تیره‌تر هستش) و تب track هستش که برای سفارشی‌سازی بدنه اسکرول‌بار هستش. توی هر تب می‌تونین چیزهای مختلف رو تغییر بدین و همزمان ببینین که نتیجه کار چه شکلی میشه.

توی قسمت thumb، تب dimension برای ضخامت اسکرول‌بار، تب color برای رنگ، hover-color برای زمانیکه موستون رو بر روی اسکرول‌بار می‌برین و border هم برای حاشیه اسکرول بار هستش (برای گرد کردن اسکرول‌بار باید radius رو از این قسمت بیشتر کنین). 

توی قسمت track هم تنها چیزی که جدیده inset-shadow هست که میتونین باهاش داخل اسکرول‌بار سایه بندازین.

امکان جالبی که این سایت داره اینه میتونین از گرادیانت‌ها هم توی اسکرول‌بارتون استفاده کنین. یعنی کافیه مثلا به سربرگ color برین و یک رنگ جدید اضافه کنین تا اسکرول‌بارهای جذاب‌تری بسازین.

قسمت save template برای زمانی هستش که می‌خواین کد اسکرول‌بار رو با فرد دیگه به اشتراک بزارین یا در قالب آدرس ذخیره کنین. 

توی همون صفحه یک قسمت جالب دیگه به اسم Templates هست که قالب‌های آماده برای اسکرول‌بار هستن و میتونین اونا رو انتخاب کنین و به دلخواه از بالا تغییرشون بدین.

در نهایت بعد اینکه اسکرول‌بارتون رو ساختین میتونین به قسمت code بیاین و روی دکمه css بزنین تا کد css رو بگیرین. حالا چطور از این کد استفاده کنیم؟

استفاده از کد در بلاگ بیان

اگر قصد دارین فقط اسکرول‌بار کل صفحه رو تغییر بدین پیشنهاد میدم قبل از هر :: یک body بنویسین که فقط اسکرول‌بار صفحه تغییر داده بشه (و مثلا اسکرول بار قسمت نظرات مثل قبل بمونه) برای اینکه یک قسمت خاص رو هدف قرار بدین کافیه از سلکتورهای css استفاده کنین.

بعدش کافیه به قسمت قالب، ویرایش css قالب فعلی برین و کد رو آخر همه کدها جاگذاری کنین و روی دکمه ذخیره بزنین. کار تمومه!

پشتیبانی از فایرفاکس

نکته‌ای که در مورد این روش هست اینه که این کد فقط روی مرورگرهایی کار میکنه که از webkit استفاده می‌کنن (مرورگرهای کروم، سافاری، اوپرا، سامسونگ و اندروید ویو) و این ترفند روی مرورگرهای فایرفاکس و اینترنت اکسپلورر (لعنت الله علیه!) و نسخه‌های قبل 79 ادج کار نمیکنه. برای فایرفاکس 64 به بعد یک روشی هست که میتونین فقط رنگ اسکرول‌بار رو تغییر بدین. مثلا اگر قصد دارین اسکرول‌بار اصلی صفحه‌تون رو تغییر بدین باید کد زیر رو به فایل css اضافه کنین:

html {
scrollbar-color: rebeccapurple green;
}

که رنگ اول به دسته اسکرول‌بار و رنگ دوم به خود اسکرول‌بار اعمال میشه. میتونین از کد HEX هم برای رنگ‌ها استفاده کنین.

بررسی بیشتر کد

این کد رو در نظر بگیرین:

body::-webkit-scrollbar{
width: 12px;
}

body::-webkit-scrollbar-thumb{
background: radial-gradient(circle, #05A571 0%,#267F62 100%);
border-radius: 4px;
}

body::-webkit-scrollbar-thumb:hover{
background: radial-gradient(circle, #A3A3A3 0%,#858585 100%);
}

body::-webkit-scrollbar-track{
background: #282726;
border-radius: 0px;
box-shadow: inset 0px 0px 0px 0px #F0F0F0;
} 

اگر به دستورات نگاه کنین متوجه میشین که تماما دستورات css معمولی هستش که تو بقیه جاها استفاده میکنیم و چیز جدیدی وجود نداره. اما باید توجه کنین که نمیشه از هر دستوری استفاده کرد. برای مثال نمیتونین به دسته اسکرول‌بار خصوصیت margin بدین (که از حاشیه‌ها فاصله بگیره. فرقی نمیکنه استفاده از padding توی track هم برای این هدف کار نمیکنه)

اما یک روش جالب برای دور زدن این کار وجود داره. شما میتونین به اسکرول‌بارتون خصوصیت box-sizing: border-box; بدین تا اندازه کلی اسکرول‌بار به همراه حاشیه حساب بشه و اون border که برای دسته اسکرول‌بار تعریف کردین داخلش بیوفته. بعدش کافیه برای خود دسته اسکرول‌بار یک حاشیه نامرئی بسازین و با استفاده از دستور background-clip: content-box;  بگین که تنها بک گراند رو برای قسمتی نشون بده که محتوا داره (قسمتی که حاشیه هست رو نادیده بگیره) و اینطوری میتونین اطراف دسته اسکرول‌بار فاصله بندازین. کد کامل اینطوری میشه:

body::-webkit-scrollbar{
/* add box sizing */ 
box-sizing : border-box ;
width: 12px;
}

body::-webkit-scrollbar-thumb{
background: radial-gradient(circle, #05A571 0%,#267F62 100%);
/* adding invisible border and background clip */
border: 2px solid transparent ;
background-clip:content-box;
border-radius: 4px;
}

body::-webkit-scrollbar-thumb:hover{
background: radial-gradient(circle, #A3A3A3 0%,#858585 100%);
/* adding background clip */
background-clip:content-box;
}

body::-webkit-scrollbar-track{
background: #282726;
border-radius: 0px;
box-shadow: inset 0px 0px 0px 0px #F0F0F0;
}

فقط به ترتیب کدها دقت کنین که background-clip بعد از background باشه و هر جایی که تغییر دادین این خصوصیت رو هم بهش اضافه کنین (من جمله زمانی که ماوس بر روش میره یا همون :hover). برای اطلاعات بیشتر میتونین این مقاله رو بخونین

طراحان قالب هم میتونن از این روش استفاده کنن تا جذابیت قالب‌ها بیشتر بشه. فکر کنم فقط یک یا دو قالب رو میشناسم که از این ترفند استفاده کرده.

این بود آموزش ساخت اسکرول‌باری سفارشی برای وبلاگ. قرار بود خودم برای ابزارش کدنویسی کنم ولی خدا رو شکر قبلا یکی زحمتش رو کشیده :) تنبل هم خودتونین :)) امیدوارم که براتون مفید بوده باشه و لذت برده باشین. 

نظرات

برو به فرم ارسال نظر

تا الان ۱۱ نظر داریم.

زری ... ۱۸ شهریور ۱۴۰۰، ۲۱:۴۳

تشکرات :)

Mohsen シ ۱۹ شهریور ۱۴۰۰، ۰۲:۲۷

خیلی ممنون! :)

نویسنده آشنا ۱۸ شهریور ۱۴۰۰، ۲۳:۳۴

سلام،خوبی؟:)
من به کسی میگم تنبل که مطالب رو کپی پیست کنه، این پست پر از زحمت و توضیح هست ;)
به نظرم هممون باید درست کنیم ،چون هم طریقه درست کردنش رو یاد میگیریم و هم با آزمون و خطا کلی نکته جدید دستمون میاد تا داخل پروژه های مهم خراب کاری نکنیم، و الا انقدر ابزار ساختن داخل کدپن و گیتهاب و غیره...

چایی خدمت شما☕🌹:))خسته نباشی

Mohsen シ ۱۹ شهریور ۱۴۰۰، ۰۲:۳۱

سلام دوست همیشگی 😃 مرسی قربان تو.

آره درسته یک چیز عجیبی که این ابزار میسازه height هستش که نمیدونم دقیق به چه دردی میخوره... اسمش که گویاست ولی احساس می‌کنم تاثیری نداره. بخاطر همین اینشم هست که ممکنه ابزار‌ها همیشه درست کار نکنن و برای همیشه نباشن. ولی خوب UI و UX ابزار خوب بود امکاناتشم که باز بود گفتم بیخیال همین کافیه.
اگر بعدا نیاز بود کدنویسی میکنمش تنها کارش گرفتن مقادیر و جاگذاری تو رشته هستش.
مرسییی 😂🌹 لطف داری!

ᴺᵃᶳᵗᵃʳᵃᶰ ‌ ۱۹ شهریور ۱۴۰۰، ۰۳:۰۰

آقا عه
من هی میام وب شما، پستا رم کامل میخونم
حتی کامنتم مینویسم ولی سند نمیکنم:/

مرسیییی بابت این آموزش کامل و جامع😍🌹

Mohsen シ ۱۹ شهریور ۱۴۰۰، ۰۳:۳۰

همین که میخونین لطف بزرگیه ممنون 😃🌹

اگر سند میکنین ولی ارسال نمیشه یا میبینین یکهو کل صفحه میره و چیزی دیده نمیشه مطمئن باشین کار موجودات فضایی هستش و احیانا یکی یادش نرفته که تگ <checkif> رو ببنده 😶 بعله... باید روی حرفم حساب باز کنین 😂
خواهش میکنم 😊 ممنون بابت دلگرمیتون

ᴺᵃᶳᵗᵃʳᵃᶰ ‌ ۱۹ شهریور ۱۴۰۰، ۰۸:۲۸

نه معمولا یچیزی پیش میاد یا یادم میره دکمه ارسالو بزنم:"

^___^

Mohsen シ ۲۰ شهریور ۱۴۰۰، ۱۳:۵۳

آهان عیب نداره نیت مهمه 😂 مرسی باز از نظرات ارسال نشدتون :) 

میم مهاجر ۱۹ شهریور ۱۴۰۰، ۰۹:۰۴

چه خوب توضیح دادید
من چیزی از کد نویسی نمی‌دونم و تا بحث تغییرات قالب و... میشه یک دور عزا می‌گیرم ولی این پست خیلی قابل فهم بود
ممنونم

Mohsen シ ۲۰ شهریور ۱۴۰۰، ۱۳:۵۳

خیلی ممنون لطف دارین :) خوشحالم مورد توجهتون قرار گرفته و مفید بوده.

فاطـــღـــمـه ツ ۱۹ شهریور ۱۴۰۰، ۱۳:۳۹

مستطیل زشت 😂😂
اینترنت اکسپلور لعنت الله علیه 😂😂
وای بیشتر خندم گرفت که 😅🤌
پست عالی بود 👌 دمتون گرم
خسته نباشید 🌹

Mohsen シ ۲۰ شهریور ۱۴۰۰، ۱۳:۵۴

خیلی خوشحالم که اینترنت اکسپلورر کاربر زیادی نداره وگرنه باید مایکروسافت رو به خاک و خون میکشیدم 😂

خیلی ممنون که لطف کردین و خوندین 😊🌹

محمد صادق عبداللهی ۲۰ شهریور ۱۴۰۰، ۲۳:۱۶

😁عالی بود
این رو توی کد بعضی قالبای بیان دیده بودم
من کدایی که استفاده می کنم رو mhp2011.blog.ir ساخت برام

body::-webkit-scrollbar{width: 12px;} body::-webkit-scrollbar-thumb{background: radial-gradient(circle, #00a3a3 0%,#088 100%);border-radius: 4px;} body::-webkit-scrollbar-thumb:hover{background: radial-gradient(circle, #ffbf00 0%,#fb0 100%);} body::-webkit-scrollbar-thumb:active{background: radial-gradient(circle, #ff6600 0%,#f50 100%);} body::-webkit-scrollbar-corner{ background:#fff;} body::-webkit-scrollbar-button{ background:#777; border-radius:0px;} body::-webkit-scrollbar-button:hover{ background:#666;} body::-webkit-scrollbar-button:active{ background:#555;}

Mohsen シ ۲۱ شهریور ۱۴۰۰، ۰۲:۱۲

خیلی ممنون :)

آره منم یکی دو قالب رو میشناسم که پیشفرض دارن. نمیدونم همچنان هستن یا نه.
اسکرولبار خوبیه. دمشون گرم!

سید محمدرضا ۲۱ اسفند ۱۴۰۰، ۰۹:۲۰

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

Mohsen シ ۲۱ اسفند ۱۴۰۰، ۱۱:۰۹

سلام! خیلی ممنون لطف دارین.

میتونین کد رو همینطوری وارد css قالبتون کنین (توی مدیریت - قالب - ویرایش css قالب فعلی) و همه چیز باید درست کار کنه. اما اگر خواستین برای مثال فقط اسکرول بار یک قسمت خاصی تغییر پیدا کنه باید کدتون مشابه کدی باشه که تو قسمت «بررسی بیشتر کد» گذاشتم. یعنی مثلا body که همون صفحه اصلی هستش تغییر پیدا کنه. یکمی باید css بلد باشین علی الخصوص Seletor ها رو :)
ممنون از نظرتون

سید محمدرضا ۲۱ اسفند ۱۴۰۰، ۱۲:۰۴

تشکر از پاسخگویی کامل و سریع شما
فقط یه نکته سایت که در مطلب آدرسش رو درج کردید کار نمی کنه!؟
وی پی ان میخواد؟

Mohsen シ ۲۲ اسفند ۱۴۰۰، ۱۰:۴۶

ظاهرا به خاطر درخواست‌های بالایی که داشته در حال به روزرسانی و تعمیره. چند روز بعد باز چک کنین احتمالا درست میشه :) البته میتونین از کدی که گذاشتمم استفاده کنید و کمی تغییرش بدین.

نه وی پی ان نمیخواد

محمدحسـ ـین ۰۹ شهریور ۱۴۰۲، ۱۶:۴۵

سلام. چرا ie لعنت الله علیه؟

محمدحسـ ـین ۰۹ شهریور ۱۴۰۲، ۱۶:۵۵

خب چه کاریه بجای body و اینا یه * بزاریم خب هرجا که اسکرول داشته باشه توی وبمون رو با این استایل مگه نمیزاره؟

کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
تجدید کد امنیتی