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 إلى أنماطك العامة.
يمكنك اللعب بالمتغيرات ، ولكن من الناحية الواقعية ، هذا جميل للتوصيل والتشغيل ... ليس هناك الكثير الذي تحتاج إلى تغييره!
