بودكاست CSS - 016: الحدود
في وحدة نموذج الصندوق، استخدمنا تشبيه الإطار لوصف كل قسم من نموذج المربّع.
والمربّع الحدودي هو إطار المربعات، وتمنحك خصائص border
مجموعة كبيرة من الخيارات لإنشاء هذا الإطار بأي نمط يمكن أن يخطر ببالك تقريبًا.
خصائص الحدود
توفّر سمات border
الفردية طريقة لتصميم الأجزاء المختلفة من الحد.
النمط
لكي تظهر الحدود،
عليك تحديد
border-style
.
هناك بضعة خيارات يمكنك الاختيار من بينها:
عند استخدام الأنماط ridge
وinset
وoutset
وgroove
،
سيعمل المتصفّح على تعتيم لون الحدود للون الثاني المعروض لتوفير التباين والعمق.
ويمكن أن يختلف هذا السلوك من متصفّح إلى آخر،
لا سيما للألوان الداكنة مثل black
.
في Chrome، ستظهر أنماط الحدود هذه بشكل ثابت وفي Firefox،
سيتم تفتيحها لتوفير لون ثانٍ أغمق.
وقد يختلف سلوك المتصفح باختلاف أنماط الحدود الأخرى أيضًا،
لذا من المهم اختبار موقعك الإلكتروني في متصفحات مختلفة.
ومن الأمثلة الشائعة على هذا الاختلاف كيفية عرض كل متصفِّح للنمطَين dotted
وdashed
.
لضبط نمط الحد على كل جانب من المربع،
يمكنك استخدام
border-top-style
وborder-right-style
وborder-left-style
وborder-bottom-style
.
اختصار
كما هي الحال في margin
وpadding
،
يمكنك استخدام
السمة المختصرة
border
لتحديد جميع أجزاء الحدود الجغرافية في بيان واحد.
.my-element {
border: 1px solid red;
}
ترتيب القيم في اختصار border
هو border-width
،
border-style
ثم border-color
.
اللون
يمكنك ضبط اللون على كل جوانب العلبة أو على كل جانب على حدة باستخدام
border-color
.
ويستخدم تلقائيًا لون النص الحالي للمربّع: currentColor
.
هذا يعني أنه إذا أعلنت فقط خصائص الحد،
مثل العرض،
سيكون اللون تلك القيمة المحسوبة ما لم تقم بتعيينها بشكل صريح.
.my-element {
color: blue;
border: solid; /* Will be a blue border */
}
.my-element {
color: blue;
border: solid yellow;
}
لضبط لون الحدود على كل جانب من المربع،
استخدِم
border-top-color
وborder-right-color
وborder-left-color
وborder-bottom-color
.
العرض
يشير عرض الحدود إلى مدى سُمك الخط، ويتم التحكّم فيه من خلال
border-width
.
العرض التلقائي للحدود هو medium
.
ومع ذلك، لن يكون هذا مرئيًا ما لم تحدّد نمطًا.
يمكنك استخدام قيم عرض أخرى مسماة، مثل thin
وthick
.
تقبل السمات border-width
أيضًا وحدة طول، مثل
px
أو em
أو rem
أو %
.
لضبط عرض الحدود على كل جانب من العلبة، استخدِم
border-top-width
وborder-right-width
وborder-left-width
وborder-bottom-width
.
الخصائص المنطقية
في وحدة الخصائص المنطقية، اكتشفت كيفية الإشارة إلى تدفق الحظر والتدفق المضمّن، بدلاً من عرض جانبي أعلى أو يمين أو أسفل أو يسار صريح.
يمكنك استخدام هذه الإمكانية أيضًا مع الحدود:
.my-element {
border: 2px dotted;
border-inline-end: 2px solid red;
}
في هذا المثال، تحتوي .my-element
على جميع الجوانب التي تم تعريفها على أنها تحتوي على 2px
، حد منقط، وهو لون النص الحالي.
بعد ذلك، يتم تعريف الحد inline-end
على أنّه 2px
، متّصل مع أحمر اللون.
وهذا يعني أنه في اللغات التي تُكتب من اليسار إلى اليمين، مثل الإنجليزية،
سيكون الحد الأحمر على الجانب الأيمن من المربع.
في اللغات التي تُكتب من اليمين إلى اليسار، مثل العربية،
سيكون الحد الأحمر على الجانب الأيسر من المربع.
يتنوع التوافق مع المتصفح للخصائص المنطقية في الحدود، لذا احرص على التحقق من الدعم قبل الاستخدام.
نصف قطر الحد
لإضافة مربّع إلى زوايا مستديرة، استخدِم السمة
border-radius
.
.my-element {
border-radius: 1em;
}
يضيف هذا الاختصار حدًا ثابتًا لكل زاوية من زوايا المربع.
كما هي الحال في سمات الحدود الأخرى،
يمكنك تحديد نصف قطر الحدود لكل جانب باستخدام
border-top-left-radius
وborder-top-right-radius
وborder-bottom-right-radius
وborder-bottom-left-radius
.
يمكنك أيضًا تحديد نصف قطر كل زاوية في الاختصار، يتبع الترتيب: أعلى اليسار، أعلى اليمين، أسفل اليمين ثم أسفل اليسار.
.my-element {
border-radius: 1em 2em 3em 4em;
}
بتحديد قيمة واحدة لزاوية، فأنت تستخدم اختصارًا آخر لأن نصف قطر الحد ينقسم إلى جزأين: الجانب الرأسي والأفقي.
وهذا يعني أنه عند ضبط border-top-left-radius: 1em
، سيتم ضبط النطاق الجغرافي في أعلى يسار الصفحة على أعلى نصف قطر الدائرة أعلى اليسار ونصف قطر أعلى اليسار.
ويمكنك تحديد كِلا الموقعَين، في كل زاوية كما يلي:
.my-element {
border-top-left-radius: 1em 2em;
}
يؤدي ذلك إلى إضافة قيمة border-top-left-top
لـ 1em
وقيمة border-top-left-left
بـ 2em
.
يحوّل هذا نصف قطر الحد الأيسر إلى نصف قطر إهليلجي، بدلاً من نصف القطر الدائري الافتراضي.
يمكنك تحديد هذه القيم في اختصار border-radius
باستخدام /
لتحديد القيم البيضاوية بعد القيم العادية.
وهذا يمكّنك من الإبداع وإنشاء بعض الأشكال المعقدة.
.my-element {
border: 2px solid;
border-radius: 95px 155px 148px 103px / 48px 95px 130px 203px;
}
صور الحدود
لا تحتاج فقط إلى استخدام حد يستند إلى الحد في CSS.
يمكنك أيضًا استخدام أي نوع من الصور باستخدام
border-image
.
تسمح لك خاصية الاختصار هذه بتعيين الصورة المصدر، وكيفية تقسيم هذه الصورة، وعرض الصورة، ومدى بُعد الحد عن الحافة وكيفية تكرارها.
.my-element {
border-image-source: url(https://assets.codepen.io/174183/border-image-frame.jpg);
border-image-slice: 61 58 51 48;
border-image-width: 20px 20px 20px 20px;
border-image-outset: 0px 0px 0px 0px;
border-image-repeat: stretch stretch;
}
تشبه السمة border-image-width
border-width
:
وهي الطريقة التي يمكنك بها ضبط عرض صورة الحدود.
تتيح لك السمة border-image-outset
ضبط المسافة بين صورة الحدود والمربّع الذي يلتف حوله.
border-image-source
يمكن أن تكون السمة border-image-source
(مصدر صورة الحدود) url
لأي صورة صالحة تتضمّن تدرجات CSS.
.my-element {
border-image-source: url('path/to/image.png');
}
.my-element {
border-image-source: linear-gradient(to bottom, #000, #fff);
}
border-image-slice
تُعدّ السمة border-image-slice
خاصية مفيدة تتيح لك تقسيم الصورة إلى 9 أجزاء تتألف من 4 خطوط مقسّمة.
وهو يعمل مثل الاختصار margin
حيث تُحدِّد قيمة الإزاحة العلوية اليمنى واليسرى والسفلية.
.my-element {
border-image: url('image.jpg');
border-image-slice: 61 58 51 48;
}
مع تحديد قيم الإزاحة، لديك الآن 9 أقسام من الصورة: 4 زوايا و4 حواف وقسم متوسط.
يتم تطبيق الزوايا على زوايا العنصر مع صورة الحدود.
يتم تطبيق الحواف على حواف هذا العنصر.
تحدّد السمة border-image-repeat
كيفية تعبئة تلك الحواف لمساحتها، وتتحكّم
border-image-width
في حجم الشرائح.
أخيرًا، تحدِّد الكلمة الرئيسية fill
ما إذا كان سيتم استخدام القسم الأوسط، المتروك من خلال التقسيم، كصورة خلفية للعنصر أم لا.
border-image-repeat
border-image-repeat
هي الطريقة التي توجّه بها CSS إلى الطريقة التي تريد تكرار صورة الحدود بها.
وهي تعمل بالطريقة نفسها التي تعمل بها background-repeat
.
- القيمة الأولية هي
stretch
، وهي تساعد في توسيع صورة المصدر لملء المساحة المتوفرة حيثما أمكن. - تقسّم القيمة
repeat
حواف صورة المصدر لأكبر عدد ممكن من المرات، وقد يتم اقتصاص مناطق الحافة لتحقيق ذلك. - قيمة
round
مماثلة للتكرار، ولكن بدلاً من قص مناطق حافة الصورة لتلائم أكبر عدد ممكن، فإنها تمد الصورة وتكرارها للحصول على تكرار سلس - قيمة
space
هي نفسها مرة أخرى، لكن هذه القيمة تضيف مسافة بين كل منطقة حافة لإنشاء نمط سلس.
التحقّق من استيعابك
اختبر معلوماتك عن الحدود
ما لون الحد الافتراضي؟
black
white
currentColor
text-color
المحسوبة، وهي لون الحدود التلقائي.historicColor
.my-element { border: solid hotpink; }
ما العرض التلقائي للحدود؟
1px
medium
solid
border-style
وليست border-width
.border-inline: 1px solid
:
border-block
في الأعلى والأسفل.