مرحبًا يا أصدقاء،
أحتاج إلى بعض المساعدة بخصوص CSS. كلما نقرت على أي صورة في موقعي، يتحرك العنصر .d-header بمقدار 2 بكسل تقريبًا. حاولت جاهداً إصلاح المشكلة لكنني فشلت. لا أعرف كيفية إصلاح تنسيق CSS للجزء الرمادي خلف الصورة.
أعتقد أن المشكلة ناتجة عن أنه عند اختفاء شريط التمرير، يتم تطبيق style="margin-right: 17px; overflow: hidden; على عنصر body لتعويض عرض شريط التمرير.
لكن .d-header موضوعة بـ fixed، لذا لا "ترث margin-right من عنصر html.
تعديل:
يبدو أن الهامش الخاص بـ html (المساوي لعرض شريط التمرير) يتم حسابه عبر جافا سكريبت من خلال jquery.magnific-popup.min.js.
لست متأكدًا من وجود حل سريع ونظيف لإصلاح هذه المشكلة.
يحدث ذلك للمُؤلِّف أيضًا إذا أردت شيئًا آخر لتتضايق منه
المشكلة هي أن العناصر ذات fixed تُوضع نسبةً إلى عرض نافذة العرض، وأشرطة التمرير تُغيّر عرض نافذة العرض.
وكما ذكر @Canapin، يتم تعويض ذلك على عنصر <HTML> عن طريق هامش إضافي (يبدو وكأنه سلوك نافذة منبثقة من Magnific)… وبما أن العناصر الثابتة ليست نسبةً إلى <HTML>، فإن مؤلِّف الرسالة والرأس يحتاجان إلى إصلاح إضافي.
ما نحتاج إلى فعله هو أخذ عرض شريط التمرير، ثم عند تفعيل النافذة المنبثقة، نضيف بعض الأنماط المضمنة مثل:
.d-header {
left: -15px; /* شريط تمرير بعرض 15 بكسل في هذا المثال */
width: calc(100% + 30px); /* إضافة ضعف عرض شريط التمرير للتعويض عن الإزاحة والعرض */
}
تنفيذ هذا الأمر يتجاوز قدراتي قليلاً… أعتقد أن عرض شريط التمرير يُحسب بمقارنة عرض الصفحة قبل وبعد النافذة المنبثقة؟ لست متأكدًا بنسبة 100%.
ومع ذلك، فإن هذا سيكون مشكلة أقل قليلاً إذا انتقلنا إلى position: sticky بعد إسقاط دعم IE11 هذا العام. لن تحدث الإزاحة بعد الآن، لكن قد يكون هناك فجوة على يمين الرأس حيث كان يوجد شريط التمرير سابقًا.