اکثر میاناهای کاربر تولیدشده توسط مرورگر را میتوان تا حدودی بااستفاده از CSS سفارشیسازی کرد. حتی اگر به ویژگیهای نو نیاز داشته باشد، در مرورگرهای قدیمیتر بهخوبی تنزل میکند و بنابراین اغلب به شبیهساز مرورگر یا بازگشت نیاز ندارد.
قبلاز بازآفرینی واسط کاربر مرورگر (کنترلهای فرم، نوارهای پیمایش، انتخابها، پیامهای خطا، و غیره)، ابتدا بررسی کنید که:
- رابط کاربری مرورگر را نمیتوان بهاندازه کافی برای نیازهای شما سفارشیسازی کرد، حتی با CSS مدرن،
- سفارشیسازی موردنظر بهاندازه کافی مهم باشد که توجیهکننده معاوضههای بازآفرینی واسط کاربر داخلی باشد — بهویژه ازدست دادن معناشناسی دسترسپذیر، مدیریت صفحهکلید، IME، و ادغام AT که واسط کاربر بومی بهطور رایگان ارائه میدهد.
نمونه سفارشیسازیهایی که امکانپذیر است:
- از
::selectionبرای سفارشیسازی رنگهای نوشتار برجستهشده استفاده کنید. - نباید
user-select: noneرا روی نوشتار محتوا اعمال کنید — کپی-جایگذاری، ابزارهای ترجمه، و اشارههای «خواندن از اینجا» در فناوری کمکی را خراب میکند. آن را به chrome (دستگیرههای کشیدن، نوارابزارها، برچسبهای دکمه زائد) محدود کنید. - از
accent-colorبرای اعمال رنگ تأکیدی صفحه به هر واسط کاربری تولیدشده توسط مرورگر استفاده کنید. - از
color-schemeاستفاده کنید تا واسط کاربر مرورگر با حالت روشن/تاریک سازگار شود. - از
scrollbar-colorبرای سفارشیسازی رنگهای نوار پیمایش و ازscrollbar-widthبرای کنترل ضخامت نوار پیمایش استفاده کنید — زبانه را بهطور واضح از مسیر متمایز نگه دارید (≥۳:۱)، وscrollbar-width: noneرا روی مناطق پیمایشپذیر تنظیم نکنید (فقط زمانی از آن استفاده کنید که پیمایش کاملاً با امکان دیگری جایگزین شده باشد). - از
:user-invalid/:user-validبرای سبکبندی اعتبار استفاده کنید، نه:invalid/:valid— اینها فقط پساز تعامل کاربر با فیلد مطابقت دارند و از پیشفرض نامطلوب پرچمگذاری فیلدهای خالی الزامی بهعنوان خطا در بارگیری صفحه جلوگیری میکنند. هنگام هدفیابی گستردهinput(مثلاًinput:not(input[type="range"]):user-valid)، لغزندههای محدوده را مستثنی کنید تا تنظیم لغزنده باعث اعمال حاشیهها یا پسزمینههای اعتبار فیلد به آن نشود. - دکمهها و فیلدهای نوشتاری (ازجمله
<textarea>) معمولاً میتوانند بهعنوان عناصر عادی سبکبندی شوند. - از
font-sizeبرای مقیاسبندی و از دیگر ویژگیهای نوشتاری برای کنترل تایپوگرافی استفاده کنید
سبکبندی فیلدهای نوشتاری (<input> و <textarea>)
برای اکثر اهداف سبکبندی (مثلاً رنگها، حاشیهها، پسزمینهها، تایپوگرافی، و غیره) با این عناصر بهعنوان محفظههای نوشتار معمولی رفتار کنید.
- برای سبکدهی به جایبانهای ورودی، از
:placeholder-shownو::placeholderاستفاده کنید. - برای تغییر اندازه فیلدهای نوشتاری براساس محتوا، از
field-sizing: contentاستفاده کنید. - برای عناصر
<textarea>، ازresize: verticalبرای غیرفعال کردن تغییر اندازه افقی یاresize: noneبرای غیرفعال کردن همه تغییر اندازهها استفاده کنید.
کنترلهای چندگزینهای (انتخاب، دکمههای رادیویی، چارگوشهای انتخاب)
- برای انتخاب یکی از گزینههای متعدد ارائهشده در منو کرکرهای: از
<select>+appearance: base-select+::picker(select)استفاده کنید. برای اطلاعات بیشتر، به سبکبندی انتخاب نمانامدار مراجعه کنید - انتخاب یک یا چند گزینه از میان گزینههای متعدد که بهصورت درونخطی در صفحه چیده شدهاند: برای هر گزینه، از
<input type=checkbox>یا<input type=radio>در داخل<label>استفاده کنید. سبک ازطریقlabel:has(:checked). - سبکبندی چارگوشهای انتخاب، دکمههای رادیویی، و کلیدها ازطریق
appearance: none+ محتوای تولیدشده (::before/::after) یا تصاویر پسزمینه برای ترسیم وضعیت انتخابشده.
<input>های غیرنوشتاری (دکمهها، لغزندهها، ورودیهای فایل، و غیره)
- ورودیهای فایل: از
::file-selector-buttonبرای سبکدهی به دکمه استفاده کنید. - از
<input>باtypebutton،submit، یاresetاستفاده نکنید. درعوض از<button>استفاده کنید و آن را بهعنوان عنصر معمولی سبکبندی کنید. - لغزندهها: برای کنترل دقیقتر، از شبهعناصر
appearance: none+ thumb (::-webkit-slider-thumb،::-moz-range-thumb، و غیره) و شبهعناصر track (::-webkit-slider-runnable-track،::-moz-range-track، و غیره) استفاده کنید.