How To Marquee Elements in 2022 (Best Practices)
نشرت: 2022-08-23ستناقش هذه المقالة أفضل الطرق لعمل عناصر مستطيلة متحركة في تصميم الويب الحديث.
إطار التحديد هو قسم لا نهائي من النص و / أو العنصر المرئي (مثل الصور) والذي يتم تمريره أفقيًا تلقائيًا.
على الرغم من إهمال عنصر HTML <marquee> الرسمي وعدم تشجيعه بشدة على استخدامه ، فإن التأثير العام للتمرير والعناصر المستمرة المستخدمة لإضفاء الحيوية على صفحة ويب ما زالت حية وبصحة جيدة في عام 2022 ، وتظهر في العديد من مواقع الويب العصرية.
لا يزال البعض يستخدم عنصر Marquee ، والذي لا يزال مدعومًا من قبل جميع المتصفحات على الرغم من عدم تشجيعه (مرة أخرى) على استخدامه. على سبيل المثال ، إليك "شاشة توقف" DVD الكلاسيكية المرتدة التي تم إنشاؤها باستخدام شاشة اسمية بتنسيق HTML.
هذا ليس ذكيًا ، لكنه لا يزال يعمل. أسباب تجنب استخدام هذا العنصر في عام 2022 واضحة:
- لا يمكن الوصول إليه حقًا
- لقد تم إهلاكها بنسبة 100٪ ويمكن إزالة الدعم لها (وربما سيتم إزالتها في وقت ما)
- لم يكن أبدًا عنصر HTML حقيقي لتبدأ به (ليس جزءًا من أي معيار)
ومع ذلك ، فقد كنا دائمًا معجبين بالخراطيش في Isotropic.
ألق نظرة على العديد من مواقع Awwwards العصرية وسترى نصًا أو صورًا أو مزيجًا من الاثنين يتحركان أفقيًا ، مثل:
هذا سرادق تجريبي
بالطبع ، ليس من الجيد أبدًا وضع المعلومات المهمة للمهمة في أقسام التمرير أو الرسوم المتحركة. ولكن بالنسبة لشيء مثل المثال أعلاه ، يبدو رائعًا ، ويميز الموقع ويجعله لا يُنسى. استخدمه بحكمة واعتدال.
المظلات رائعة جدًا ، حتى أننا نشرنا أداة مفيدة ستنشئ تلقائيًا قسم نمط "شريط الأسهم" لتمرير النص باستخدام ظلال مربع CSS. إنه أمر رائع ، لكنني أعتقد أن الطريقة التي تمت مناقشتها في هذه المقالة أفضل.
تم الحصول على الكود الخاص بعمل هذا العرض التوضيحي من CodePen بواسطة Ryan Mulligan ، وهي (على الأرجح) أفضل طريقة لإحداث تأثير مستطيل في عام 2022. كما يكتب عن هذا الرمز في مدونته ، https://ryanmulligan.dev/ مدونة / Css-Marquee.
يمكن الوصول إليه (يدعم الحركة المنخفضة) ، لانهائي ، يسمح لأي نوع من عناصر html ، وخفيف الوزن وسهل التنفيذ.
كما أنها مصنوعة من 100٪ CSS ولا تحتوي على JS.
<div class = "marquee"> <div class = "marquee__group"> <img src = 'https: //images.unsplash.com/photo-1548199973-03cce0bbc87b؟ <img src = 'https: //images.unsplash.com/photo-1583511666445-775f1f2116f5؟ <img src = 'https: //images.unsplash.com/photo-1586917383423-c25e88ac05ce؟ <img src = 'https: //images.unsplash.com/photo-1560743173-567a3b5658b1؟ <img src = 'https: //images.unsplash.com/photo-1603232644140-bb47da511b92؟ </div> <div aria-hidden = "true" class = "marquee__group"> <img src = 'https: //images.unsplash.com/photo-1548199973-03cce0bbc87b؟ <img src = 'https: //images.unsplash.com/photo-1583511666445-775f1f2116f5؟ <img src = 'https: //images.unsplash.com/photo-1586917383423-c25e88ac05ce؟ <img src = 'https: //images.unsplash.com/photo-1560743173-567a3b5658b1؟ <img src = 'https: //images.unsplash.com/photo-1603232644140-bb47da511b92؟ </div> </div> <div class = "Marquee Marquee - border"> <div class = "marquee__group"> <p> كلاب Unsplash </p> <p aria-hidden = "true"> كلاب Unsplash </p> <p aria-hidden = "true"> كلاب Unsplash </p> </div> <div aria-hidden = "true" class = "marquee__group"> <p> كلاب Unsplash </p> <p> كلاب Unsplash </p> <p> كلاب Unsplash </p> </div> </div> <div class = "Marquee Marquee - reverse"> <div class = "marquee__group"> <img src = 'https: //images.unsplash.com/photo-1546421845-6471bdcf3edf؟ <img src = 'https: //images.unsplash.com/photo-1518378188025-22bd89516ee2؟ <img src = 'https: //images.unsplash.com/photo-1571772805064-207c8435df79؟ <img src = 'https: //images.unsplash.com/photo-1602067340370-bdcebe8d1930؟ <img src = 'https: //images.unsplash.com/photo-1508948956644-0017e845d797 </div> <div aria-hidden = "true" class = "marquee__group"> <img src = 'https: //images.unsplash.com/photo-1546421845-6471bdcf3edf؟ <img src = 'https: //images.unsplash.com/photo-1518378188025-22bd89516ee2؟ <img src = 'https: //images.unsplash.com/photo-1571772805064-207c8435df79؟ <img src = 'https: //images.unsplash.com/photo-1602067340370-bdcebe8d1930؟ <img src = 'https: //images.unsplash.com/photo-1508948956644-0017e845d797 </div> </div>
import url ("https://fonts.googleapis.com/css2؟family=Corben:wght@700&display=swap") ؛ * { تحجيم الصندوق: مربع الحدود ؛ } هيئة { الحد الأدنى للارتفاع: 100 فولت ؛ } هيئة { - الفضاء: 2rem ؛ عرض: شبكة ؛ محاذاة المحتوى: مركز ؛ إخفاء الفائض؛ فجوة: var (- مساحة) ؛ العرض: 100٪؛ عائلة الخطوط: "Corben"، system-ui، sans-serif؛ حجم الخط: 1.5rem ؛ ارتفاع الخط: 1.5 ؛ } .marquee { - المدة: 60 ثانية ؛ - الفجوة: var (- مسافة) ؛ عرض: فليكس ؛ إخفاء الفائض؛ تحديد المستخدم: لا شيء ؛ فجوة: فار (- فجوة) ؛ تحويل: انحراف (-3 درجة) ؛ } .marquee__group { فليكس يتقلص: 0 ؛ عرض: فليكس ؛ محاذاة العناصر: مركز ؛ تبرير المحتوى: الفضاء حول ؛ فجوة: فار (- فجوة) ؛ العرض الأدنى: 100٪ ؛ الرسوم المتحركة: التمرير var (- المدة) الخطي اللانهائي ؛ } media (يفضل تقليل الحركة: تقليل) { .marquee__group { حالة تشغيل الرسوم المتحركة: متوقف مؤقتًا ؛ } } marquee__group. img { أقصى عرض: مشبك (10rem ، 1rem + 28vmin ، 20rem) ؛ نسبة العرض إلى الارتفاع: 1 ؛ الكائن المناسب: غطاء ؛ نصف قطر الحدود: 1rem ؛ } .marquee__group p { صورة الخلفية: التدرج الخطي ( 75 درجة hsl (240deg 70٪ 49٪) 0٪ ، hsl (253deg 70٪ 49٪) 11٪ ، hsl (267deg 70٪ 49٪) 22٪ ، hsl (280deg 71٪ 48٪) 33٪ ، hsl (293deg 71٪ 48٪) 44٪ ، hsl (307deg 71٪ 48٪) 56٪ ، hsl (320deg 71٪ 48٪) 67٪ ، hsl (333deg 72٪ 48٪) 78٪ ، hsl (347deg 72٪ 48٪) 89٪ ، hsl (0deg 73٪ 47٪) 100٪ ) ؛ -webkit-background-clip: نص ؛ -لون تعبئة النص -webkit: شفاف ؛ } .marquee - الحدود { كتلة الحدود: 3 بكسل الصلبة dodgerblue ؛ كتلة الحشو: 0.75rem ؛ } .marquee - عكس .marquee__group { اتجاه الرسوم المتحركة: عكس ؛ تأخير الرسوم المتحركة: احسب (var (- المدة) / -2) ؛ } keyframes التمرير { 0٪ { التحويل: translateX (0) ؛ } 100٪ { التحويل: translateX (calc (-100٪ - var (- gap))) ؛ } }
دعنا نلقي نظرة على كيفية إنشاء هذا ولماذا هو رائع جدًا.
فيما يلي نظرة عامة ، قبل أن نلقي نظرة على جميع الكود:
- يمكننا بسهولة التحكم في سرعة واتجاه تأثير التمرير. للسرعة ، حددنا
.marquee--reverse
. - إنه نمطي - يمكنك الحصول على أي عدد تريده من المجموعات عن طريق تغليف المحتوى في div بفئة
.marquee
والمحتوى الداخلي بـ.marquee__group
. - التحجيم سريع الاستجابة وسلاسة لأنه يستخدم متغيرات CSS والمشابك.
- يمكن الوصول إليه باستخدام تسميات aria والإيقاف المؤقت إذا تم ضبط الحركة المنخفضة في CSS على تقليلها.
- الحركة عبارة عن رسم متحرك CSS قياسي يستخدم إطارات مفتاحية (بحيث يمكنك التوقف مؤقتًا عند التمرير إذا كنت تريد). لا يوجد JS على الإطلاق.
- إنه أيضًا نسخ / لصق جميل. ما عليك سوى تبديل المحتوى الخاص بك ، وتنفيذ HTML و CSS ، وستحصل على شاشة اسمية صغيرة رائعة.
لقد تم إجراؤه بشكل جيد حقًا ، ويجب أن تكون (imo) هي الطريقة القياسية التي يتم بها تنفيذ تأثير الشاشة الاسمية في عام 2022.
ها هو HTML:
يمكننا أن نرى في العرض التوضيحي ثلاثة خراطيش. يتم عكس الأول والثالث بفئة .marquee--reverse
. لديهم سرعة قياسية وتحتوي على صور.
الثاني (الأوسط) هو النص بالكامل ، ويقوم بتنفيذ حدود بفئة مخصصة. كما أن لها مدة أبطأ تحددها سمة النمط: .
ستلاحظ أيضًا وجود نسخ مكررة بشكل أساسي داخل .marquee
div ، وهي نفسها باستثناء علامة aria.
هذا لجعل الرسوم المتحركة غير محدودة بسلاسة ، مع القدرة أيضًا على التكيف مع نسب منفذ العرض المختلفة (المزيد حول هذا عندما ننظر إلى CSS).
يمكن الوصول إلى هذا باستخدام aria-hidden="true"
، مما يزيل المحتوى المكرر من شجرة إمكانية الوصول.
أيضًا ، يتم تقديم الصور مباشرة من Unsplash. قد تجد هذا المورد مثيرًا للاهتمام: كيفية إنشاء صور عشوائية عن طريق URL (مطور الويب)
بشكل عام ، إنها بنية HTML أنيقة وبسيطة.
الآن دعونا نلقي نظرة على CSS
وإليك CSS (مأخوذ مباشرة من CodePen):
يمكننا أن نرى ما يلي:
- كل شيء يستخدم REM والمتغيرات والمشابك ، مما يعني أن التأثير مائع وسيتفاعل مع حجم الشاشة وإعدادات المتصفح.
- الرسوم المتحركة 100٪ CSS. يتم تنفيذ ذلك باستخدام "Animation
animation: scroll var(--duration) linear infinite;
" سطر في.marquee__group
. الرسوم المتحركة لا حصر لها ، وخطية ، وتمرير مسمى. يتم التحكم في مدة الجذر بواسطة المتغير--duration
، والذي يمكن استبداله للتحكم في سرعة مجموعة معينة في ترميز HTML (المذكور أعلاه). - التمرير هو تحول أساسي يترجم X.
- لعكس الحركة ، لدينا ببساطة "
animation-direction: reverse;
" في فئة.marquee--reverse .marquee__group
. - نحن نستفيد من calc و --gap لغالبية المسافات. هذا يجعل الأمور مرنة ويمكنك تغيير الفجوة لتناسب احتياجاتك.
- يوجد تأثير انحراف (3٪) يجعله قطريًا ، ويمكن إزالته لجعله أفقيًا بنسبة 100٪.
- إنه يمكن الوصول إليه ومسؤول لأنه لن يتحرك إذا كان يفضل تقليل الحركة: تم تعيين تقليل (تعرف على كيفية اختبار ذلك هنا).
بشكل أساسي ، يقوم بكل شيء بشكل جيد حقًا ، وهو أفضل طريقة لتنفيذ تأثير التمرير الشبيه بالتمرير في عام 2022.
للتنفيذ ، ما عليك سوى إضافة HTML إلى صفحتك ، وتبديل النص / الصور ، وإضافة CSS إلى أنماطك العامة.
يمكنك اللعب بالمتغيرات ، ولكن من الناحية الواقعية ، هذا جميل للتوصيل والتشغيل ... ليس هناك الكثير الذي تحتاج إلى تغييره!