احتمالا میدانید که خیلی از افراد در اطراف ما از موبایلهای سامسونگ استفاده میکنند و از آنجا که مرورگر پیشفرض این گوشیها، سامسونگ اینترنت (Samsung Internet) میباشد، میتوان گفت تعداد افرادی که از سامسونگ اینترنت استفاده میکنند کم نیست.
یکی از مشکلاتی که خیلی از کاربران این مرورگر با آن روبرو هستند، نمایش نامناسب وبسایتها در حالت دارک مود (Dark Mode) یا به قول این مرورگر، Night Mode میباشد. در این پست قصد داریم با رفتار این مرورگر در این حالت را مورد بررسی قرار دهیم.
بعد از کلی بررسی روی مثالها، در این قسمت میخواهیم رفتار سامسونگ اینترنت با وبسایتها در حالت دارک مود را بیان کنیم.
به طور کلی میتوان گفت روشنایی (brightness) در تکستها با نسبت عکس مقدار اولیه افزایش پیدا میکند. در نتیجه:
رفتار سامسونگ اینترنت در برابر backgroundها و borderها در دارک مود دقیقا برعکس متنها میباشد! یعنی brightness در textها با نسبت عکس مقدار اولیه کاهش پیدا میکند. در نتیجه:
رفتار مرورگر نسبت به عکسها خود میتواند به سه حالت مختلف تقسیمبندی شود:
۱ - عکسهایی که در تگ <img> نوشته شدند
این نوع عکسها بدون تغییر باقی میمانند، ولی اندکی از روشنایی آنها کاسته میشود.
۲ - عکسهایی که به عنوان پسزمینه در CSS قرار داده شدند
عکسهایی که در CSS نوشته میشوند نیز مانند عکسهایی که با img نوشته شدهاند به همان شکل اولیهی خود باقی میمانند فقط اندکی تیره میشوند.
۳ - عکسهای <svg>
در این نوع عکسها روشنایی با نسبت عکس مقدار اولیه افزایش پیدا میکند. درست مانند متنها!
شاید اولین راهی که به ذهن برسد این است که کلا صورت مسئله را پاک کنیم و از داخل خود مرورگر قابلیت دارک مود را غیرفعال کنیم. اما آیا روشی برای غیر فعال کردن آن برای توسعهدهندگان یک وبسایت وجود دارد که با وجود فعال بودن این ویژگی، بتوانند از تغییرات ظاهری ناخواستهی وبسایت خود جلوگیری کنند؟
خیلی دیگر از مرورگرها نیز در کنار سامسونگ اینترنت قابلیت دارک مود را دارا هستند. در این مرورگرها میتوان با چند خط کد زدن تعیین کرد که ظاهر سایت در هر یک از حالات dark و light به چه صورتی باشد.
راهحل این مسئله، استفاده از meta tag زیر میباشد:
<meta name="color-scheme" content="light dark">
و همچنین در کنار آن یک مدیا کوئری (media query) به نام prefers-color-scheme میباشد. در لینک مستندات این مدیا کوئری یک مثال آورده شده که به صورت زیر میباشد:
<div class="day">Day (initial)</div>
<div class="day light">Day (changes in light scheme)</div>
<div class="day dark">Day (changes in dark scheme)</div>
<br>
<div class="night">Night (initial)</div>
<div class="night light">Night (changes in light scheme)</div>
<div class="night dark">Night (changes in dark scheme)</div>
حال برای این شش المان، استایلهای زیر را تعریف میکنیم:
:root {
color-scheme: light dark;
}
.day { background: #eee; color: black; }.night { background: #333; color: white; }
@media (prefers-color-scheme: dark) {
.day.dark { background: #333; color: white; }
.night.dark { background: black; color: #ddd; }
}
@media (prefers-color-scheme: light) {
.day.light { background: white; color: #555; }
.night.light { background: #eee; color: black; }
}
خروجی کدهای گفته شده تقریبا در تمام مرورگرها به درستی نمایش داده میشود... بجز سامسونگ اینترنت!
این مرورگر با اینکه بر اساس Google’s Chromium browser engine توسعه داده شده، اما در برخی موارد رفتار آن با مرورگر کروم متفاوت است. یکی از این تفاوتها که برای توسعه دهندگان Front-end دردسر ایجاد کرده، همین بحث دارک مود میباشد. در نتیجه:
خیر. هنوز (در زمان نوشتن این نوشته) راه حلی درست برای کنترل رفتار مرورگر سامسونگ اینترنت در مقابل وبسایتها در حالت دارک مود وجود ندارد!
به end-user ها پیشنهاد میشود تا زمانیکه شرکت سامسونگ مشکلات مطرح شده را برطرف نکرده یا راه حلی بیان نکرده، از حالت دارک مود این مرورگر استفاده نکنند.
به توسعه دهندگان توصیه میشود:
فرض کنید پس زمینهای سفید رنگ دارید و میخواهید روی آن طرحی گرافیکی و طوسی رنگ به فرمت svg استفاده کنید؛ همچنین متون مشکی رنگ در این صفحه قرار دارند.
سامسونگ اینترنت همانگونه که پیشتر بیان شد با این نوع عکسها مانند متن رفتار میکند و در نتیجه در حالت دارک مود، پس زمینهای مشکی با طرح گرافیکی سفید خواهیم داشت.
البته برای حل چنین موضوعی میتوان به جای استفاده از رنگ طوسی (مثلا eee#) از زنگ طوسی با opacity کم (برای مثال aaa5 ) برای طرح گرافیکی استفاده کرد. در چنین حالتی میتوان خروجی قابل قبول تری در حالت دارک مود دریافت کرد:
این برای حالاتی است که در لوگوی شما نوشتهای مشکی رنگ وجود دارد. اگر دارک مود را فعال کنیم، متن لوگو در پس زمینهی مشکی گم خواهد شد. اما در حالتی که لوگو به صورت svg میباشد، رنگ متن سفید میشود. با اینکه میدانیم سایر رنگهای لوگو عوض خواهند شد، اما حداقل با لوگویی خوانا روبرو خواهیم بود!
اگر واقعا وبسایت شما به گونهای طراحی شده که به هیج وحه نباید در حالت دارک مود سامسونگ اینترنت (با توجه به شرایط گفته شده) مورد استفاده قرار گیرد، میتوان در صورتی که user-agent کاربر مساوی با SamsungBrowser
بود، پیامی به کاربر نمایش دهیم و از او درخواست کنیم که برای مشاهدهی وبسایت ما، از مرورگر دیگری استفاده نماید.