خصائص `overflow` و `contain`
تشرح هذه المقالة خصائص overflow
و contain
۔
يمكنك تعلم كيفية وصف أشياء مثل عرض شريط التمرير والاقتصاص باستخدام خاصية overflow
۔
YouTube Video
HTML للمعاينة
css-overflow-contain.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-overflow-contain.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Overflow Content</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Overflow And Contain Properties</h2>
20 </header>
21 <article>
22 <h3>overflow</h3>
23 <section>
24 <header><h4>overflow: visible</h4></header>
25 <section class="sample-view">
26 <section class="overflow-visible">
27 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
28 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
29 </section>
30 </section>
31 <header><h4>overflow: hidden</h4></header>
32 <section class="sample-view">
33 <section class="overflow-hidden">
34 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
35 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
36 </section>
37 </section>
38 <header><h4>overflow: scroll</h4></header>
39 <section class="sample-view">
40 <section class="overflow-scroll">
41 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
42 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
43 </section>
44 </section>
45 <header><h4>overflow: auto</h4></header>
46 <section class="sample-view">
47 <section class="overflow-auto">
48 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
49 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
50 </section>
51 </section>
52 <header><h4>overflow-x: scroll; overflow-y: hidden;</h4></header>
53 <section class="sample-view">
54 <section class="overflow-xy">
55 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
56 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
57 </section>
58 </section>
59 <header><h4>overflow: clip</h4></header>
60 <section class="sample-view">
61 <section class="overflow-clip">
62 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
63 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
64 </section>
65 </section>
66 </section>
67 </article>
68 <article>
69 <h3>contain</h3>
70 <section>
71 <header><h4>contain: layout</h4></header>
72 <section class="sample-view">
73 <section class="contain-layout">
74 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
75 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
76 </section>
77 </section>
78 <header><h4>contain: paint</h4></header>
79 <section class="sample-view">
80 <section class="contain-paint">
81 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
82 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
83 </section>
84 </section>
85 <header><h4>contain: size</h4></header>
86 <section class="sample-view">
87 <section class="contain-size">
88 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
89 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
90 </section>
91 </section>
92 <header><h4>contain: style</h4></header>
93 <section class="sample-view">
94 <section class="contain-style">
95 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
96 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
97 </section>
98 </section>
99 <header><h4>contain: content</h4></header>
100 <section class="sample-view">
101 <section class="contain-content">
102 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
103 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
104 </section>
105 </section>
106 </section>
107 </article>
108 </main>
109</body>
110</html>
خصائص overflow
و contain
overflow
خاصية overflow
في CSS هي خاصية مهمة تتحكم في كيفية عرض محتويات عنصر عندما تتجاوز حجم صندوقه.۔ تُستخدم بشكل شائع لتشكيل تخطيط وواجهة المستخدم لصفحات الويب، مما يساعد في إدارة عرض شريط التمرير والاقتصاص وتجاوز العناصر.۔
أساسيات خاصية overflow
خاصية overflow
لها أربع قيم رئيسية: visible
، hidden
، scroll
، و auto
۔
visible
1section.overflow-visible {
2 width: 400px;
3 height: 100px;
4 overflow: visible;
5}
visible
هي القيمة الافتراضية، حيث تتجاوز محتويات العنصر حجم الصندوق ولكنها تظل مرئية.۔ قد تتداخل الأجزاء الزائدة مع عناصر أخرى، ولكنه لا يتم عرض شريط التمرير بشكل خاص.۔
الميزات:
- يتم عرض المحتوى دون قيود۔
- لا يتم عرض شريط التمرير۔
hidden
1section.overflow-hidden {
2 width: 400px;
3 height: 100px;
4 overflow: hidden;
5}
hidden
هو الإعداد الذي إذا تجاوزت فيه محتويات العنصر حجم الصندوق، فلن يتم عرض الأجزاء الزائدة.۔ لا يتم عرض شريط التمرير، ولن يكون المحتوى الزائد مرئيًا.۔
الميزات:
- عندما يتجاوز المحتوى حدود العنصر، يتم إخفاء الجزء الزائد.۔
- لا يتم عرض شريط التمرير۔
scroll
1section.overflow-scroll {
2 width: 400px;
3 height: 100px;
4 overflow: scroll;
5}
عند استخدام scroll
، يتم عرض شريط التمرير إجباريًا إذا تجاوز محتوى العنصر حجم الصندوق.۔ حتى إذا لم يتجاوز المحتوى الحدود، يتم دائمًا عرض شريط التمرير.۔
الميزات:
- يتم عرض شريط التمرير حتى إذا كان المحتوى يتناسب داخل حدود العنصر.۔
- يمكن التمرير في الاتجاهين الأفقي والعمودي.۔
auto
1section.overflow-auto {
2 width: 400px;
3 height: 100px;
4 overflow: auto;
5}
auto
تعرض شريط التمرير فقط عند تجاوز المحتوى؛ إذا كان المحتوى يناسب داخل حدود العنصر، لن يتم عرض شريط التمرير.۔
الميزات:
- يظهر شريط التمرير فقط عندما يتجاوز المحتوى.۔
- ينشئ منطقة قابلة للتمرير تلقائيًا۔
overflow-x
و overflow-y
1section.overflow-xy {
2 width: 400px;
3 height: 100px;
4 overflow-x: scroll;
5 overflow-y: hidden;
6}
يمكن أيضًا التحكم في خاصية overflow
بشكل فردي للاتجاه الأفقي (محور x
) والاتجاه العمودي (محور y
)۔
بهذه الطريقة، يمكنك استخدام overflow-x
و overflow-y
لتعيين عرض أشرطة التمرير الرأسية والأفقية بشكل مستقل۔
اعتبارات تتعلق بخاصية Overflow
عند استخدام خاصية overflow
، هناك بعض النقاط التي يجب الانتباه إليها۔
تأثيرات على التصميم بسبب عرض أشرطة التمرير
استخدام scroll
أو auto
لعرض أشرطة التمرير قد يعطل تصميم الصفحة العام۔ على وجه الخصوص، إذا تم وضع العناصر عند الحافة اليمنى أو السفلية، فقد تجعل أشرطة التمرير هذه العناصر أقل وضوحًا۔
سلوك المتصفح الافتراضي
طريقة عرض وتشغيل أشرطة التمرير يمكن أن تختلف بين المتصفحات۔ خاصة بين Windows و macOS، هناك اختلافات في أنماط عرض أشرطة التمرير، مما قد يؤدي إلى ظهور التصميمات بشكل غير مرغوب فيه۔ من المهم إجراء اختبارات عبر المتصفحات۔
تجاوز عناصر الطفل
تعيين overflow: hidden
على عنصر الأب يخفي عناصر الطفل التي تتجاوز صندوق الأب۔ قد يتسبب ذلك في عدم عرض النوافذ المنبثقة والنوافذ العامة بشكل صحيح۔
overflow: clip
(CSS Level 3)
1section.overflow-clip {
2 width: 400px;
3 height: 100px;
4 overflow: clip;
5}
في مواصفات CSS الجديدة، تم تقديم قيمة تسمى overflow: clip
أيضًا۔ هذا مشابه لـ hidden
، لكنه لا يسمح بالتمرير ويقتصر فقط على اقتصاص المحتوى۔ حاليًا، يتم دعمه فقط من قبل بعض المتصفحات۔
الميزات:
- إذا تجاوز المحتوى، فسيتم إخفاء ذلك الجزء بالكامل۔
- لا يتم عرض شريط التمرير۔
الخاتمة
خاصية overflow
في CSS هي أداة أساسية للتحكم في عرض المحتوى في تصميم الويب۔ من خلال إدارة الحالات التي يتجاوز فيها المحتوى صندوق العنصر ومن خلال تطبيق أشرطة التمرير أو الاقتصاص بشكل مناسب، فإنه يوفر للمستخدمين واجهة أكثر ملاءمة۔ علاوة على ذلك، فإن استخدام overflow-x
و overflow-y
يسمح بالتحكم الدقيق۔
باستخدام هذه القيمة، يتم عرض أشرطة التمرير بشكل إجباري عند تجاوز محتوى العنصر للصندوق۔ حتى إذا لم يتجاوز المحتوى الحدود، يتم دائمًا عرض شريط التمرير.۔
contain
لمحة عامة عن خاصية contain
خاصية contain
في CSS تحد من تأثير العنصر على العناصر الأخرى والصفحة بأكملها، مما يحسن عملية العرض في المتصفح.۔ على وجه التحديد، تحد الخاصية من عمليات الترتيب وإعادة الرسم عن طريق منع تغييرات النمط أو التخطيط داخل عنصر من التأثير على المحتوى الخارجي للعناصر الأخرى.۔
هذا أمر مهم لأداء صفحات الويب، وهو فعال بشكل خاص لاستخدامه في المواقع التي تحتوي على تخطيطات معقدة أو كميات كبيرة من المحتوى.۔
القيم الخاصة بخاصية contain
خاصية contain
تحتوي على القيم التالية:۔
layout
1section.contain-layout {
2 width: 300px;
3 height: 300px;
4 contain: layout;
5}
layout
يطبق قيوداً تتعلق بالتخطيط.۔ عند استخدام هذه القيمة، فإن حجم وموقع العنصر لن يؤثران على العناصر الأخرى.۔ على سبيل المثال، حتى إذا تم تغيير حجم العنصر داخلياً، فلن تؤثر تلك التغييرات على تخطيط العناصر الخارجية.۔
paint
1section.contain-paint {
2 width: 300px;
3 height: 300px;
4 contain: paint;
5}
paint
يحد من تأثير عملية الرسم.۔ عند تعيين هذه القيمة، فإن عملية الرسم داخل العنصر لن تؤثر على العناصر الخارجية، مما يحد من نطاق حسابات إعادة الرسم.۔
size
1section.contain-size {
2 width: 300px;
3 height: 300px;
4 contain: size;
5}
size
يضمن أن حجم العنصر لا يعتمد على العناصر الخارجية.۔ على وجه التحديد، تمنع هذه القيمة تغيير حجم العناصر الفرعية من التأثير على حجم العنصر الرئيسي، مما يحسن من استقرار التخطيط.۔
style
1section.contain-style {
2 width: 300px;
3 height: 300px;
4 contain: style;
5}
style
يضمن أن نمط العنصر لا يؤثر على العناصر الخارجية.۔ على سبيل المثال، يضمن تعيين contain: style;
أن تغييرات النمط في ذلك العنصر لن تؤثر على العناصر الأخرى، مما يقلل من نطاق إعادة الحسابات.۔
content
1section.contain-content {
2 width: 300px;
3 height: 300px;
4 contain: content;
5}
content
هو قيمة مركبة تطبق layout
و paint
و size
و style
.۔ باستخدام هذه القيمة، يمكنك ضمان أن تخطيط العنصر، والرسم، والحجم والنمط لن يكون لها أي تأثير على العناصر الخارجية.۔
فوائد الأداء
السبب الرئيسي لاستخدام خاصية contain
هو تحسين أداء صفحات الويب.۔ على وجه الخصوص، تكون فعالة في الحالات التالية:۔
-
تحسين إعادة التدفق: عند تغير حجم أو تخطيط عنصر ما، يمكن تقليل تأثيره إلى أصغر نطاق ممكن.۔ هذا يقلل من نطاق عمليات إعادة التدفق غير الضرورية (إعادة الحسابات الخاصة بالتخطيط) ويخفف العبء على المتصفح.۔
-
تقليل إعادة الرسم: من خلال تحديد منطقة الرسم، يمكن تقليل الجزء الذي يحتاج إلى إعادة رسم عند تغيير نمط العنصر أو محتواه.۔
-
التطوير القائم على المكونات: حيث يعمل كل مكون أو وحدة بشكل مستقل عن العناصر الأخرى، مما يعزز أداء كل مكون حتى في التطبيقات واسعة النطاق للويب.۔
ملاحظات
عند استخدام خاصية contain
، يجب أن تأخذ النقاط التالية في الاعتبار۔
-
فهم نطاق التطبيق: خاصية
contain
مفيدة لتحسين الأداء، ولكن لا ينبغي تطبيقها على كل عنصر۔ من المهم استخدامها بشكل مناسب في الأماكن الملائمة۔ على سبيل المثال، استخدام هذه الخاصية على العناصر المتغيرة بشكل متكرر أو أجزاء من هيكل DOM كبير قد يؤدي بدلاً من ذلك إلى انخفاض الأداء۔ -
التوافق مع المتصفحات: خاصية
contain
هي ميزة جديدة نسبيًا في CSS وليست مدعومة بالكامل من جميع المتصفحات۔ تُدعم الخاصية في المتصفحات الرئيسية (Chrome وFirefox وEdge وSafari)، ولكن قد لا تكون قابلة للتطبيق في الإصدارات القديمة۔
الخاتمة
خاصية contain
في CSS هي أداة قوية لتحسين أداء صفحات الويب والتطبيقات۔ من خلال الحد من التأثير الذي يمكن أن يسببه عنصر معين على الآخرين، يتم تقليل تكاليف إعادة التدفق وإعادة الطلاء، مما يحسن عملية العرض بشكل عام۔ لكن من المهم التفكير بعناية في المكان الذي يجب تطبيقها فيه واستخدامها بشكل مناسب۔
يمكنك متابعة المقالة أعلاه باستخدام Visual Studio Code على قناتنا على YouTube.۔ يرجى التحقق من القناة على YouTube أيضًا.۔