إنشاء حدود متعددة الألوان باستخدام CSS
نشرت: 2022-02-16تحتوي خاصية CSS border بعض خيارات التخصيص ، مثل الخيارات مثل صلب ، ومتقطع ، ومنقط ، وما إلى ذلك. ومع ذلك ، عندما يتعلق الأمر بلون الحدود ، يمكننا فقط الحصول على لون خالص لكل جانب. ولكن ، هناك طريقة أخرى لتحقيق خط متعدد الألوان باستخدام بعض الخصائص الإضافية التي ربما لم تفكر بها ، فلنلقِ نظرة.
صلب
متقطع
منقط
حدود متعددة الألوان
لتحقيق حد متعدد الألوان كما هو موضح أعلاه ، سنستخدم خاصية position
والمحدد ::after
بتدرج لوني. أولاً ، سننشئ منطقة رأس باستخدام فئة HTML <div> ثم نصممها باستخدام CSS للحصول على حد متعدد الألوان يقسمها والمحتوى أدناه.
قم بإنشاء HTML الخاص بك:
<div class="ost-multi-header">
<h1>
Header Title
</h1>
</div>
<div class="ost-multi-header">
<h1>
Header Title
</h1>
</div>
الآن ، دعنا نصممها قليلاً باستخدام CSS.
h1{
font-size: 50px;
line-height: 100px;
padding-left: 20px;
font-family: Arial, Helvetica, sans-serif;
}
.ost-multi-header {
position: relative;
height: 100px;
background: #999999;
}
h1{
font-size: 50px;
line-height: 100px;
padding-left: 20px;
font-family: Arial, Helvetica, sans-serif;
}
.ost-multi-header {
position: relative;
height: 100px;
background: #999999;
}
يجب أن يكون لديك الآن شيء يشبه هذا:
باستخدام ذلك ، يمكننا الآن إضافة ::after
إلى .ost-multi-header selector
. ولكن ، قبل أن نفعل ذلك ، أود أن أشرح القليل مما يفعله ::after
ولماذا نحتاج إلى خاصية الموضع للحد متعدد الألوان. ينشئ ::after
عنصرًا زائفًا مع كل ما هو موجود في خاصية المحتوى في نهاية العنصر المحدد. في حالتنا ، هذا العنصر هو .ost-multi-header
. دعونا نجعل "أهلاً بالعالم!" مثال لتوضيح.
أضف هذا إلى CSS الخاص بك:
.ost-multi-header::after{
content: 'Hello World!';
position: absolute;
left: 20px;
bottom: 0;
}
.ost-multi-header::after{
content: 'Hello World!';
position: absolute;
left: 20px;
bottom: 0;
}
كما ترى ، لدينا الآن "Hello World!" عنصر أسفل عنوان الرأس. نظرًا لأن العنصر الأصل ، .ost-multi-header
، له خاصية الموضع relative
، يمكننا إعطاء عنصر فرعي موضعًا absolute
. سيسمح لنا هذا بنقل العنصر الزائف الجديد الذي أنشأناه باستخدام ::after
أينما أحبنا داخل العنصر الأصل بسهولة. نضعه في الأسفل وننقله أكثر من 20 بكسل من اليسار داخل العنصر الأصل. لاحظ أنه إذا لم يتم تعيين خاصية الموضع للعنصر الأصل على نسبي ، فسيكون العنصر المطلق الموضع لدينا في الجزء السفلي و 20 بكسل على يسار منفذ عرض المتصفح.
ماذا عن حدودنا الملونة؟ سنقوم بتصميم خلفية العنصر الزائف لتكون حدودنا متعددة الألوان باستخدام التدرج اللوني. يمكن أن تكون تدرجات CSS خطية أو نصف قطرية. بالنسبة لحدودنا ، سنستخدم linear-gradient
. بكل بساطة ، سيعطينا هذا الحدود التي نسعى إليها.
.ost-multi-header::after{
content: '';
height: 6px;
position: absolute;
left: 0;
right:0;
bottom: 0;
background: linear-gradient(to right, #ed8034 0%,#ed8034 33%,#feb123 33%,#feb123 66%,#2184cd 66%,#2184cd 100%);
}
.ost-multi-header::after{
content: '';
height: 6px;
position: absolute;
left: 0;
right:0;
bottom: 0;
background: linear-gradient(to right, #ed8034 0%,#ed8034 33%,#feb123 33%,#feb123 66%,#2184cd 66%,#2184cd 100%);
}
لكن ، دعنا نبطئ لحظة خطوة بخطوة. أولاً ، لا تزال خاصية content
موجودة على الرغم من أنها فارغة. هذا لأنه بدون خاصية content
، لا يتم أبدًا إنشاء العنصر الزائف ؛ لذلك نحن في حاجة إليها. نحتاج إلى ضبط ارتفاع العنصر الزائف ، ارتفاع الحد. لماذا يتم تعيين كل من الخصائص right
left
0؟ بدون عرض محدد ، سيؤدي هذا إلى تمدد العنصر الزائف ليكون عرضًا بنسبة 100٪ داخل العنصر الأصل. قد يبدو الأمر كثيرًا ، لكن إعدادات linear-gradient
تخبر اللون فقط بالتدفق من اليسار "إلى اليمين" ، ونضع الألوان التي نريدها بنسب مئوية معينة من الخلفية.
على الرغم من أن كل ما نقوم به هو اختيار الألوان التي يجب أن تكون بنسب مئوية محددة ، إلا أنه يتطلب الكثير من العمل على الساق. لحسن الحظ ، هناك موارد مجانية عبر الإنترنت تساعد بشكل كبير في تدرجات الألوان. Ultimate CSS Gradient Generator بواسطة ColorZilla هي أداة رائعة تتضمن خصائص تدرج متعددة لدعم المتصفحات القديمة.
لدينا تدرج إعداد بالفعل على الأداة ، لذا يمكننا استخدام هذا الرابط لمعرفة الإعدادات الدقيقة المستخدمة في هذا البرنامج التعليمي: https://colorzilla.com/gradient-editor/#ed8034+0،ed8034+33،feb123+33 ، feb123 + 66،2184cd + 66،2184cd + 100. يجب أن تبدو هذه:
هناك الكثير من الإعدادات على هذا الموقع ، ولكن دعونا نركز على الإعدادات التي نحتاجها لإنشاء المظهر الذي سنستخدمه لحدودنا. دعنا نقسمها:

- الإعدادات المسبقة - يمكن أن تكون نقطة انطلاق رائعة!
- شريط التمرير - يمكنك إضافة الألوان وإزالتها وتحريرها هنا
- التوقفات - يسمح لك هذا القسم بتغيير الإعدادات الخاصة بعتامة كل لون وموقعه. ما عليك سوى النقر فوق مربع اللون في شريط التمرير أعلاه لتغيير المربع الذي تتحكم فيه في هذا القسم.
- معاينة - هنا يمكنك رؤية نتائج التغييرات التي أجريتها على الفور.
- الاتجاه والحجم - يسمح لك هذا بالتغيير من الأفقي أو الرأسي أو القطري أو الشعاعي. ولضبط حجم التدرج اللوني.
- كود CSS - الكود الذي تم إنشاؤه باستخدام رابط ثابت بحيث يمكنك دائمًا الرجوع وتعديل التدرج اللوني بسهولة.
لم نكن نبحث عن تدرج باهت في حالتنا ، بل كنا نبحث عن انتقال ثابت ثابت بين لونين ، لذلك كل ما علينا فعله هو تكديس اللونين فوق بعضهما البعض حيث نريد أن يحدث هذا. في مثالنا ، قمنا بتكديس الألوان بنسبة 33٪ و 66٪ على التوالي.
لا تتردد في التلاعب بالإعدادات ، مع العلم أن ما تراه في المعاينة هو ما ستنشئه الشفرة. عندما تحصل على إعداد المظهر بالطريقة التي تريدها ، يمكنك استخدام زر "نسخ" في الجانب الأيمن السفلي من مربع الشفرة.
إذا قمت بنسخ الكود كما هو موجود في الرابط ، فإن CSS النهائي الخاص بك سيبدو كما يلي:
h1{
font-size: 50px;
line-height: 100px;
padding-left: 20px;
font-family: Arial, Helvetica, sans-serif;
}
.ost-multi-header {
position: relative;
height: 100px;
background: #999999;
padding-bottom: 6px;
}
.ost-multi-header::after{
content: '';
height: 6px;
position: absolute;
left: 0;
right: 0;
bottom: 0;
/* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#ed8034+0,ed8034+33,feb123+33,feb123+66,2184cd+66,2184cd+100 */
background: rgb(237,128,52); /* Old browsers */
background: rgb(237,128,52); /* Old browsers */
background: -moz-linear-gradient(left, rgba(237,128,52,1) 0%, rgba(237,128,52,1) 33%, rgba(254,177,35,1) 33%, rgba(254,177,35,1) 66%, rgba(33,132,205,1) 66%, rgba(33,132,205,1) 100%); /* FF3.6-15 */
background: -moz-linear-gradient(left, rgba(237,128,52,1) 0%, rgba(237,128,52,1) 33%, rgba(254,177,35,1) 33%, rgba(254,177,35,1) 66%, rgba(33,132,205,1) 66%, rgba(33,132,205,1) 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(left, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: -webkit-linear-gradient(left, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to right, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
background: linear-gradient(to right, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ed8034', endColorstr='#2184cd',GradientType=1 ); /* IE6-9 */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ed8034', endColorstr='#2184cd',GradientType=1 ); /* IE6-9 */
}
h1{
font-size: 50px;
line-height: 100px;
padding-left: 20px;
font-family: Arial, Helvetica, sans-serif;
}
.ost-multi-header {
position: relative;
height: 100px;
background: #999999;
padding-bottom: 6px;
}
.ost-multi-header::after{
content: '';
height: 6px;
position: absolute;
left: 0;
right: 0;
bottom: 0;
/* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#ed8034+0,ed8034+33,feb123+33,feb123+66,2184cd+66,2184cd+100 */
background: rgb(237,128,52); /* Old browsers */
background: rgb(237,128,52); /* Old browsers */
background: -moz-linear-gradient(left, rgba(237,128,52,1) 0%, rgba(237,128,52,1) 33%, rgba(254,177,35,1) 33%, rgba(254,177,35,1) 66%, rgba(33,132,205,1) 66%, rgba(33,132,205,1) 100%); /* FF3.6-15 */
background: -moz-linear-gradient(left, rgba(237,128,52,1) 0%, rgba(237,128,52,1) 33%, rgba(254,177,35,1) 33%, rgba(254,177,35,1) 66%, rgba(33,132,205,1) 66%, rgba(33,132,205,1) 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(left, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: -webkit-linear-gradient(left, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to right, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
background: linear-gradient(to right, rgba(237,128,52,1) 0%,rgba(237,128,52,1) 33%,rgba(254,177,35,1) 33%,rgba(254,177,35,1) 66%,rgba(33,132,205,1) 66%,rgba(33,132,205,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ed8034', endColorstr='#2184cd',GradientType=1 ); /* IE6-9 */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ed8034', endColorstr='#2184cd',GradientType=1 ); /* IE6-9 */
}
وستنتج CSS هذا التسطير متعدد الألوان الذي يستجيب بشكل كامل:
هناك نذهب! لم يكن علينا إضافة مساحة 6 بكسل إلى أسفل .ost-multi-header
، لكن الطفل ذي الموضع absolute
لم يعد يؤثر على ارتفاع العنصر الأصل. يمكننا تركه يطفو فوق المحتوى الخاص بنا في العنصر الرئيسي ، أو إضافة padding
للتأكد من أنه لا يغطي أي محتوى قد لا نريد إعاقته.
إليك رابط لهذا التمرين المعاد إنشاؤه على CodePen ليتمكن الجميع من تحريره والتعلم دون قلق.
ملاحظة أخيرة ، بعض المتصفحات القديمة تدعم فقط النقطتين المفردة :after
المحدد ، وليس المعيار الحديث double ::after
. يمكنك استخدام النقطتين المفردة إذا كنت ترغب في أن تكون بأمان. ستعمل أيضًا في المتصفحات الحديثة في الوقت الحالي.