شعار زيفيرنت

ما الذي يجب أن يتعلمه أي شخص عن CSS إذا كان آخر مرة قام فيها باستخدام CSS3؟

التاريخ:

حقق "CSS3" نجاحًا هائلاً لـ CSS. تم إسقاط مجموعة كاملة من الأشياء بشكل أساسي مرة واحدة وكان ذلك رائعًا جدًا للحصول على أيدينا في CSS. التدرجات, animation/transition, border-radius, box-shadow, transform... WOOT! والأفضل من ذلك ، انطلق اسم اللافتة CSS3 (والمظلة الروحية "HTML5") وكانت الصناعة عادلة مشبع في مواد تعليمية عن كل شيء. مجرد إلقاء نظرة على كل مادة مُدبلجة بـ "CSS3" تم نشرها هنا في CSS-Tricks على مر السنين.

لا شك أن الكثير من الناس قد استفادوا من هذه التقنيات خلال تلك الفترة. أعتقد أيضًا أنه ليس هناك شك في أن هناك الكثير من الأشخاص الذين لم يتعلموا الكثير من CSS منذ ثم.

إذن ماذا نقول لهم؟

بعض الناس الآخرين تكهنوا بالمثل. سكوت فانديهي في "CSS الحديثة باختصار" كتب عن صديقه الذي لم يواكب CSS منذ حوالي عام 2015 ولا يعرف حقًا ما الذي يتعلمه. سأحاول إعادة صياغة قائمة سكوت وما تغير منذ أيام CSS3.

لا تزال المعالجات الأولية مستخدمة على نطاق واسع منذ يوم CSS3 ، ولكن تضاءلت أسباب استخدامها ، لذلك ربما لا تهتم. وهذا يشمل المزيد من الأساليب الحديثة مثل ميزات polyfilling المستقبلية. يتضمن هذا أيضًا Autoprefixer. CSS-في-JS أمر شائع ، ولكن فقط في المشاريع التي يكون فيها سير العمل بأكمله موجودًا بالفعل في JavaScript. ستعرف عندما تكون في مشروع ذي صلة ويمكنك تعلم بناء الجملة إذا كنت بحاجة إلى ذلك. يجب ان تتعلم خصائص مخصصة, حول flexboxو شبكة بالتأكيد.

يبدو لي أنه صحيح. لكن اسمح لي بإعداد قائمة خاصة بي من الأشياء الجيدة لما بعد CSS3 والتي تتوسع في تلك القائمة.

ما الجديد منذ CSS3؟

وبواسطة "CSS3" دعنا نقول 2015 أو نحو ذلك.


.card { display: grid; grid-template-columns: 150px 1fr; gap: 1rem;
}
.card .nav { display: flex; gap: 0.5rem;
}

تصميم

أنت حقا يجب أن تتعلم حول flexbox و شبكة إذا لم تكن كذلك - فهي حقًا حجر الزاوية في تطوير CSS هذه الأيام. أكثر من أي ميزة حصلنا عليها في CSS3.

الشبكة قوية للغاية عندما تقوم بالتعامل معها شبكة فرعية و ماسونية، لا يمكن الاعتماد على أي منهما عبر المتصفح حتى الآن ، ولكن من المحتمل أن يكون قبل وقت طويل جدًا.

html { --bgColor: #70f1d9; --font-size-base: clamp(1.833rem, 2vw + 1rem, 3rem); --font-size-lrg: clamp(1.375rem, 2vw + 1rem, 2.25rem);
} html.dark { --bgColor: #2d283e;
}

خصائص CSS المخصصة

خصائص مخصصة هي أيضًا مشكلة كبيرة لعدة أسباب. يمكن أن تكون منزلك للحصول على رموز التصميم في مشروعك ، مما يسهل صيانة المشروع والحفاظ عليه. يعد تلوين السمات حالة استخدام كبيرة ، مثل وضع الظلام.

يمكنك الذهاب إلى أبعد من ذلك تصميم مواقع كاملة استخدام في الغالب خصائص مخصصة. وعلى طول هذه الخطوط ، لا يمكنك تجاهلها الريح الخلفية هذه الأيام. يضرب أسلوب تصميم موقع بأكمله مع فئات في HTML الوتر الصحيح مع الكثير من الأشخاص (والتوافق الخاطئ مع الكثير من الأشخاص ، لذلك لا تقلق إذا لم ينسجم معك).

@media (prefers-reduced-motion: reduce) { * { animation-duration: 0.001s !important; }
} @media (prefers-color-scheme: dark) { :root { --bg: #222; }
}

استعلامات التفضيل

استعلامات التفضيل بشكل عام @media الاستفسارات كما اعتدنا على الاستجابة لأحجام المتصفحات المختلفة على مدار العام ، ولكننا نقوم الآن بتضمين طرق لاكتشاف تفضيلات المستخدم المحددة على مستوى نظام التشغيل. مثالان prefers-reduced-motion و prefers-color-scheme. هذه تسمح لنا ببناء واجهات تحترم عن كثب تجربة المستخدم المثالية. اقرأ منشور أونا.

.block { background: hsl(0 33% 53% / 0.5); background: rgb(255 0 0); background: /* can display colors no other format can */ color(display-p3 0.9176 0.2003 0.1386) background: lab(52.2345% 40.1645 59.9971 / .5);} background: hwb(194 0% 0% / .5);
}

تغييرات اللون

ينتقل بناء جملة اللون إلى الوظائف التي تقبل ألفا (الشفافية) دون الحاجة إلى تغيير اسم الوظيفة. على سبيل المثال ، إذا كنت تريد اللون الأزرق النقي في أيام CSS3 ، فقد تفعل ذلك rgb(0, 0, 255). اليوم ، ومع ذلك ، يمكنك القيام بذلك بأسلوب بدون فاصلة (كلا العملان): rgb(0 0 255)، ثم أضف ألفا بدون استخدام وظيفة مختلفة: rgb(0 0 255 / 0.5). نفس الوضع بالضبط ل hsl(). مجرد دقة صغيرة ، وكيف ستعمل وظائف الألوان في المستقبل فقط عمل.

الحديث عن بناء جمل الألوان في المستقبل:

body { font-family: 'Recursive', sans-serif; font-weight: 950; font-variation-settings: 'MONO' 1, 'CASL' 1;
}

الخطوط المتغيرة

أصبحت خطوط الويب شيء مهم في CSS3. الآن يوجد خطوط متغيرة. قد تعرف جيدا أنها موجودة. كلاهما يفتح بعض إمكانيات التصميم الرائعة ويمكن أن يكون مفيدًا في بعض الأحيان للأداء (مثل عدم الحاجة إلى تحميل ملفات خطوط مختلفة للإصدارات الغامقة والمائلة من نفس الخط ، على سبيل المثال). هناك شيء مثل خطوط ملونة أيضًا ، لكنني أقول إنهم لم يروا شعبية كبيرة على الويب ، على الرغم من ذلك الدعم.

.cut-out { clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}
.mask { mask: url(mask.png) right bottom / 100px repeat-y;
}
.move-me { offset-path: path('M 5 5 m -4, 0 a 4,4 0 1,0 8,0 a 4,4 0 1,0 -8,0'); animation: move 3s linear infinite;
} @keyframes move { 100% { offset-distance: 100%; }
}

مسارات

SVG انفجرت أيضًا منذ CSS3. تستطيع محصول مستقيم أي عنصر في الأشكال عبر clip-path، بجلب صفات تشبه SVG إلى CSS. ليس هذا فقط ، ولكن يمكنك تحريك العناصر على طول المسارات ، وتعويم العناصر على طول المسارات ، وحتى تحديث مسارات عناصر SVG.

كل هؤلاء يشعرون بأنهم مرتبطون بي نوعًا ما:

  • clip-path - يسمح لنا حرفيًا بقص العناصر إلى أشكال.
  • masks - مشابه للقص ، لكن يمكن أن يكون للقناع صفات أخرى مثل كونه قائمًا على قناة ألفا للقناع.
  • offset-path - يوفر مسارًا يمكن وضع عنصر عليه ، بشكل عام لغرض بتحريكه على طول هذا المسار.
  • shape-outside - يوفر مسارًا لعنصر عائم تلتف حوله العناصر الأخرى.
  • d - ملف SVG d السمة على أ <path> يمكن أن يكون تم التحديث عبر CSS.
.disable { filter: blur(1px) grayscale(1);
} .site-header { backdrop-filter: blur(10px);
} .styled-quote { mix-blend-mode: exclusion;
} 

مرشحات CSS

هناك الكثير من عمليات التلاعب بالصور (ناهيك عن عناصر DOM الأخرى) وهو أمر ممكن هذه الأيام مباشرة في CSS. هناك حرفيا تماما filter، لكنها حصلت على أصدقاء وجميعهم لديهم استخدامات مختلفة.

كل هؤلاء يشعرون بأنهم مرتبطون بي نوعًا ما:

  • filter - جميع أنواع التأثيرات المفيدة الشبيهة ببرنامج Photoshop مثل السطوع والتباين وتدرج الرمادي والتقليل وما إلى ذلك. يعد التعتيم قوة فريدة حقًا.
  • background-blend-mode - مرة أخرى ، يستحضر برنامج فوتوشوب كيف يمكنك مزج الطبقات. اضرب الطبقات لتغميق ودمجها. تراكب لخلط الخلفية واللون. يعتبر التفتيح والتغميق من التأثيرات الكلاسيكية التي لها فائدة حقيقية في تصميم الويب ، ولن تعرف أبدًا متى سيخلق تأثير الإضاءة الباطني مظهرًا رائعًا.
  • backdrop-filter - نفس القدرات التي تمتلكها filter، لكنهم فقط تطبيق في الخلفية وليس العنصر بأكمله. يعد عدم وضوح الخلفية فقط تأثيرًا مفيدًا بشكل خاص.
  • mix-blend-mode - نفس القدرات التي تمتلكها background-blend-mode، ولكن للعنصر بأكمله بدلاً من الاقتصار على الخلفيات.
import "https://unpkg.com/extra.css/confetti.js";
body { background: paint(extra-confetti); height: 100vh; margin: 0;
}

هوديني

هوديني عبارة عن مجموعة من التقنيات التي تستند جميعها أساسًا إلى توسيع CSS باستخدام JavaScript ، أو على الأقل على تقاطع CSS و JavaScript.

  • واجهة برمجة تطبيقات الرسام - تُرجع صورة مبنية من <canvas> واجهات برمجة التطبيقات ويمكن التحكم من خلال الخصائص المخصصة.
  • خصائص وقيم API / OM مكتوب - يعطي أنواعًا للقيم (على سبيل المثال 10px) كان من الممكن أن تكون سلاسل.
  • تخطيط API - قم بإنشاء الخاصة بك display خصائص.
  • واجهة برمجة تطبيقات الرسوم المتحركة

مجتمعة ، هذه تجعل للبعض في الحقيقة رهيبة العروض، على الرغم من دعم المتصفح منتشر. جزء من سحر Houdini هو أنه يشحن كـ Worklets يسهل استيرادها واستخدامها ، لذلك لديها القدرة على تشكيل وظائف قوية مع جعلها سهلة الاستخدام بشكل تافه.

my-component { --bg: lightgreen;
} :host(.dark) { background: black; } my-component:part(foo) { border-bottom: 2px solid black;
}

الظل DOM

يظهر Shadow DOM قليلاً إذا لعبت به <svg> و <use> عنصر. العنصر "المستنسخ" الذي يأتي من خلاله له ظل DOM له قيود على كيفية تحديد "من خلاله". ثم ، عندما تدخل <web-components>، إنها نفس كرة الشمع.

إذا وجدت نفسك بحاجة إلى تصميم مكونات الويب ، تعرف أن هناك أربعة خيارات أساسية من الخارج." وقد تكون مهتمًا بمعرفة وحدات CSS الأصلية و أوراق الأنماط القابلة للإنشاء.

مجموعة عمل CSS

من الجدير بالذكر أن مجموعة عمل CSS لديها طريقتها الخاصة في رسم الخطوط في الرمال عامًا بعد عام ، مع الإشارة إلى مواضع معينة في نقطة زمنية معينة:

هذه كثيفة جدا بالرغم من ذلك. بالتأكيد ، إنها مراجع رائعة وتوثيق الأشياء حيث يمكننا رؤية ما تغير منذ CSS3. ولكن لا يمكنني إرسال مطور أمامي غير رسمي إلى هؤلاء لاختيار ما يجب تعلمه.

نعم - ولكن ماذا سيحدث؟

سأقول ربما لا تقلق بشأن ذلك. 😉

الهدف من هذا هو اللحاق بالأشياء المفيدة التي يجب معرفتها الآن منذ عصر CSS3. ولكن إذا كنت مهتمًا بمعرفة ما يخبئه مستقبل CSS ...

  • استفسارات الحاويات ستكون صفقة ضخمة. ستتمكن من تحديد خيارات التصميم بناءً على حجم عنصر الحاوية بدلاً من حجم المتصفح وحده. وهي polyfillable اليوم.
  • وحدات الحاويات سيكون مفيدا لتحجيم الأشياء بناءً على حجم عنصر الحاوية.
  • التحولات المستقلة، على سبيل المثال scale: 1.2;، سيبدو أكثر منطقية في الاستخدام من الاضطرار إلى استخدامه دائمًا transform.
  • التعشيش هي ميزة تمتلكها جميع معالجات CSS المسبقة إلى الأبد ومن الواضح أن المطورين يفضلون استخدامها ، خاصة للاستعلامات الإعلامية. من المحتمل أن نحصل عليه في CSS الأصلي قريبا.
  • الفحص سيكون وسيلة لمعرفة كتلة من CSS ينطبق فقط على منطقة معينة (بنفس الطريقة التي تعمل بها مكتبات CSS-in-JS) ، وتساعد في مفهوم التقارب الصعب.
  • طبقات تتالي افتح ملف مفهوم جديد تمامًا عن الأساليب التي "تربح" على العناصر. ستتغلب الأنماط الموجودة في الطبقات العليا على الأنماط الموجودة في الطبقات السفلية ، بغض النظر عن الخصوصية.
  • وحدات منفذ العرض سوف تتحسن بشكل كبير مع إدخال أطوال إطار العرض "النسبية". سوف تكون مفيدة للغاية dvh و dvw، نظرًا لأنها تضع في اعتبارها المساحة الفعلية القابلة للاستخدام في نافذة المتصفح ، مما يمنع حدوث مشكلات فظيعة مثل تداخل واجهة مستخدم المتصفح مع واجهة مستخدم الموقع.

براموس فان دام لديه مقال جيد يغطي هذه الأشياء وأكثر في كتابه "CSS في عام 2022" جمع الشمل. يبدو أن عام 2022 يجب أن يكون عام إعلان حقيقي لـ CSS. ربما تكون سنة لافتة أكثر من CSS3 لعام 2015.

المصدر: https://css-tricks.com/whats-new-since-css3/

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة