أقوم بتخصيص قالب مخصص طويل الأمد، وأردت منح قائمة الهامبرغر/الشريط الجانبي (.menu-panel) المظهر الشفاف والمموّه الذي يعمل بالفعل بشكل جيد على .d-header. الشفافية تعمل، لكن التمويه لا يعمل — وأودّ الإشارة إلى هذا كالتغذية الراجعة، لأن بعض الأمور المتعلقة بكيفية تنسيق هذا المكوّن في الأنماط الأساسية جعلت الأمر أصعب مما توقعت.
ما أحاول تحقيقه
لوحة قائمة شبه شفافة مع backdrop-filter: blur() خلفها، بحيث لا يزال بإمكان المحتوى في الصفحة أن يُلمح من خلال اللوحة، مما يشبه مظهر الزجاج المصقول الذي تستخدمه العديد من التطبيقات الأصلية. كلا التأثيرين — الشفافية و التمويه — مهمان لي؛ فالشفافية بدون تمويه تبدو فوضوية فوق قوائم المواضيع المزدحمة.
ما يعمل بالفعل
على .d-header، هذا كل ما يلزم ويعمل بشكل موثوق (تم الاختبار على iOS Safari و Chrome على سطح المكتب):
.d-header {
background-color: color-mix(in srgb, var(--header_background) 50%, transparent);
-webkit-backdrop-filter: blur(3px) saturate(1.2);
backdrop-filter: blur(3px) saturate(1.2);
}
ما لا يعمل
تطبيق نفس الوصفة بالضبط على .menu-panel يمنحني الشفافية، لكن ليس التمويه أبداً، على iOS Safari:
.menu-panel {
background-color: color-mix(in srgb, var(--secondary) 85%, transparent) !important;
-webkit-backdrop-filter: blur(6px) saturate(1.2);
backdrop-filter: blur(6px) saturate(1.2);
border-radius: 14px;
}
أشياء حاولتها لجعل التمويه يظهر، ولم تنفع أي منها:
- إضافة
!importantإلى إعلاناتbackdrop-filter/-webkit-backdrop-filterنفسها. - إجبار طبقة تركيب مخصصة باستخدام
transform: translateZ(0)معoverflow: hidden(حل شائع لمشاكل أخرى مع backdrop-filter في Safari) — لم يكن لهذا أي فرق هنا، لذا أزلته مرة أخرى بدلاً من الاحتفاظ بحيلة لم تكن تستحق مكانها. - تأكدت من أنني أستهدف العنصر الصحيح: وفقاً لـ
menu-panel.scss، يتم تعيين الخلفية غير الشفافة مباشرة على.menu-panel(وليس على عنصر فرعي مثل.panel-body)، وهو ما أخطأت في البداية ثم صححته.
إذا كان هناك أي شخص يعرف لماذا يتصرف .menu-panel بشكل مختلف عن .d-header هنا، أو لديه وصفة تعمل، فسأكون سعيداً بسماع ذلك.
المشكلة الثانية: خلفيات صلبة على صفوف القائمة الفردية
حتى مع جعل خلفية اللوحة نفسها شفافة، لا يزال عدة أشياء داخلها تُعرض ككتل صلبة، لأن الأنماط الأساسية تعيّن خلفيتها مباشرة بدلاً من ذلك من خلال خلفية اللوحة نفسها:
.user-notifications-list .readو.bookmark— الإشعارات المقروءة والعلامات المرجعية في قائمة المستخدم تحصل علىbackground-color: var(--secondary)مباشرة، لذا يظهر كل صف ككتلة غير شفافة تطفو على اللوحة الشفافة..hamburger-panel .sidebar-footer-wrapper .sidebar-footer-container— تذييل الملف الشخصي/تسجيل الدخول في أسفل الشريط الجانبي لديه نفس المشكلة.
يمكنني (وقد فعلت بالفعل) تجاوز هذه في قالبتي، لكن هذا يعني البحث عن كل var(--secondary) الصلبة في menu-panel.scss واحدة تلو الأخرى، وسيتكسر الأمر مرة أخرى المرة القادمة التي تضيف فيها الأنماط الأساسية عنصراً جديداً بنفس النمط. سيكون من المفيد جداً لو عادت هذه إلى خاصية CSS مخصصة بدلاً من ذلك، على سبيل المثال شيء ما مثل --d-menu-panel-background بقيمة افتراضية var(--secondary)، بحيث يحتاج القالب إلى إعادة تعريف متغير واحد فقط لجعل اللوحة بأكملها — بما في ذلك صفوفها — شفافة بشكل متسق، بدلاً من مطاردة المحددات الفردية.
سعيد بمشاركة لقطات شاشة قبل/بعد الإصلاح إذا كان ذلك مفيداً، واختبار أي إصلاح مقترح من جهتي.

