أمر محاذاة المركز في HTML المحاذاة باستخدام "محاذاة النص: المركز"

22.06.2019

تعد توسيط العناصر عموديًا باستخدام CSS مهمة تمثل بعض الصعوبة للمطورين. ومع ذلك، هناك عدة طرق لحلها، وهي بسيطة للغاية. يقدم هذا الدرس 6 خيارات لتوسيط المحتوى عموديًا.

لنبدأ بوصف عام للمشكلة.

مشكلة التمركز العمودي

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

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

لكن السمة valign تعمل فقط على خلايا الجدول. وخاصية المحاذاة الرأسية مشابهة جدًا لها. كما أنه يؤثر على خلايا الجدول وبعض العناصر المضمنة.

ترتبط قيمة خاصية المحاذاة العمودية بالعنصر السطري الأصلي.

  • في سطر من النص، تكون المحاذاة نسبة إلى ارتفاع السطر.
  • تستخدم خلية الجدول المحاذاة بالنسبة لقيمة محسوبة بواسطة خوارزمية خاصة (عادةً ارتفاع الصف).

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

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

طريقة ارتفاع الخط

تعمل هذه الطريقة عندما تريد توسيط سطر واحد من النص عموديًا. كل ما عليك فعله هو ضبط ارتفاع الخط ليكون أكبر من حجم الخط.

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

لغة البرمجة:

النص المطلوب

CSS:

#child (ارتفاع الخط: 200 بكسل؛)

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

توسيط الصورة باستخدام ارتفاع الخط

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

لغة البرمجة:

CSS:

#parent (ارتفاع الخط: 200 بكسل;) #parent img (محاذاة رأسية: وسط;)

يجب أن تكون قيمة خاصية ارتفاع الخط أكبر من ارتفاع الصورة.

طريقة جدول CSS

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

ملحوظة:جدول CSS ليس هو نفسه جدول HTML.

لغة البرمجة:

محتوى

CSS:

# الأصل (العرض: الجدول؛) # الطفل (العرض: خلية الجدول؛ المحاذاة العمودية: الوسط؛)

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

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

عيب هذه الطريقة هو أنها لا تعمل في الإصدارات الأقدم من IE. يجب عليك استخدام العرض: خاصية inline-block للحاوية المتداخلة.

تحديد المواقع المطلقة والهوامش السلبية

تعمل هذه الطريقة أيضًا في جميع المتصفحات. لكنه يتطلب إعطاء العنصر الذي يتم تمركزه ارتفاعًا.

يقوم كود المثال بتنفيذ التوسيط الأفقي والرأسي في نفس الوقت:

لغة البرمجة:

محتوى

CSS:

# الأصل (الموضع: نسبي؛) # الطفل ( الموضع: مطلق؛ الأعلى: 50%؛ اليسار: 50%؛ الارتفاع: 30%؛ العرض: 50%؛ الهامش: -15% 0 0 -25%؛ )

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

هذه الطريقة لا تعمل في جميع المتصفحات

تحديد المواقع المطلقة وتمتد

ينفذ رمز المثال التوسيط الرأسي والأفقي.

لغة البرمجة:

محتوى

CSS:

# الأصل (الموضع: نسبي؛) # الطفل ( الموضع: مطلق؛ الأعلى: 0؛ الأسفل: 0؛ اليسار: 0؛ اليمين: 0؛ العرض: 50%؛ الارتفاع: 30%؛ الهامش: تلقائي؛ )

الفكرة وراء هذه الطريقة هي تمديد العنصر المتداخل إلى جميع الحدود الأربعة للعنصر الأصلي عن طريق ضبط الخصائص العلوية والسفلية واليمنى واليسار على 0.

سيؤدي تعيين الهوامش التي يتم إنشاؤها تلقائيًا على جميع الجوانب إلى تعيين قيم متساوية على الجوانب الأربعة وتوسيط عنصر div المتداخل على العنصر الأصلي.

لسوء الحظ، هذه الطريقة لا تعمل في IE7 وما دونه.

مسافات متساوية فوق وتحت

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

لغة البرمجة:

محتوى

CSS:

# الأصل ( الحشو: 5% 0; ) # الطفل ( الحشو: 10% 0; )

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

تُستخدم وحدات القياس النسبية لتغيير حجم العناصر ديناميكيًا. وبالنسبة لوحدات القياس المطلقة، سيتعين عليك إجراء العمليات الحسابية.

على سبيل المثال، إذا كان ارتفاع العنصر الأصلي 400 بكسل وكان العنصر المتداخل 100 بكسل، فستكون هناك حاجة إلى 150 بكسل من المساحة المتروكة في الأعلى والأسفل.

150 + 150 + 100 = 400

يتيح لك استخدام % ترك العمليات الحسابية للمتصفح.

هذه الطريقة تعمل في كل مكان. الجانب السلبي هو الحاجة إلى الحسابات.

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

شعبة عائمة

تستخدم هذه الطريقة عنصر div فارغًا يطفو ويساعد في التحكم في موضع العنصر المتداخل في المستند. لاحظ أنه يتم وضع div العائم قبل العنصر المتداخل في كود HTML.

لغة البرمجة:

محتوى

CSS:

# الأصل (الارتفاع: 250 بكسل؛) # العائم ( تعويم: يسار؛ الارتفاع: 50%؛ العرض: 100%؛ الهامش السفلي: -50 بكسل؛) # الطفل ( واضح: كلاهما؛ الارتفاع: 100 بكسل؛ )

قمنا بإزاحة div الفارغ إلى اليسار أو اليمين وضبطنا ارتفاعه على 50% من العنصر الأصلي. بهذه الطريقة سوف تملأ النصف العلوي من العنصر الأصلي.

نظرًا لأن div عائم، تتم إزالته من التدفق الطبيعي للمستند، ونحتاج إلى إلغاء تغليف النص الموجود على العنصر المتداخل. يستخدم المثال واضح: كلاهما، ولكن يكفي استخدام نفس اتجاه إزاحة عنصر div الفارغ العائم.

الحد العلوي لعنصر div المتداخل يقع مباشرة أسفل الحد السفلي لعنصر div الفارغ. نحتاج إلى تحريك العنصر المتداخل لأعلى بمقدار نصف ارتفاع العنصر الفارغ العائم. لحل المشكلة، استخدم قيمة خاصية الهامش السفلي السالبة لعنصر div الفارغ العائم.

تعمل هذه الطريقة أيضًا في جميع المتصفحات. ومع ذلك، يتطلب استخدامه عنصر div فارغًا إضافيًا ومعرفة ارتفاع العنصر المتداخل.

خاتمة

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

يعد التخطيط والمحاذاة المركزية لصفحات موقع الويب بمثابة مسعى إبداعي وغالبًا ما يسبب صعوبات للمبتدئين. لذلك دعونا نرى كيفية القيام بذلك. لنفترض أننا نريد إنشاء صفحة بالبنية التالية:

تتكون صفحتنا من أربع كتل: الرأس والقائمة والمحتوى والتذييل. لتوسيط الصفحة، سنضع هذه الكتل الأربع في كتلة رئيسية واحدة:

رأس الموقع

محتوى

أسفل الموقع

باستخدام هذا الهيكل كمثال، سننظر في عدة خيارات.

تخطيط وتمركز موقع المطاط

عند وضع موقع مطاطي، فإن وحدة القياس الرئيسية المستخدمة هي -٪، لأن الموقع يجب أن يمتد عبر العرض ويشغل كل المساحة الحرة.

لذلك، سيكون عرض كتل "الرأس" و"التذييل" 100% من عرض الشاشة. دع عرض كتلة "القائمة" يكون 30٪، ويجب أن تكون كتلة "المحتوى" موجودة بجوار كتلة "القائمة"، أي. يجب أن يكون لها هامش أيسر (الهامش الأيسر) بعرض يساوي عرض كتلة "القائمة"، أي. ثلاثون%.

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

#header( الخلفية:#3e4982; العرض: 100%; الارتفاع: 110 بكسل; محاذاة النص: المركز; اللون:#FFFFFF; حجم الخط: 24px; الحشو العلوي: 40px; ) #menu( الخلفية:#6173cb; float :left width:300px; text-align:center; #3e4982؛ واضح: كلاهما؛ العرض: 100%؛ الارتفاع: 50 بكسل؛ اللون: #FFFFFF؛

تم ضبط ارتفاع الكتل بشكل مشروط بحيث تكون النتيجة مرئية. أنظر إلى صفحتنا في متصفحك:

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

... #menu( الخلفية:#6173cb; تعويم: يسار; العرض: 200px; الارتفاع: 300px; ) #content( الخلفية:#ffffff; هامش اليسار:200px; الارتفاع:300px; ) ...

الآن تمتد صفحتنا بشكل طبيعي أكثر. باستخدام التخطيط المرن، تشغل الصفحات عرض الشاشة بالكامل، لذا لا يلزم محاذاة الصفحة.

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

الآن تبدو صفحتنا كما يلي:

تخطيط وتمركز الموقع، عرض ثابت

في هذه الحالة، سيتعين علينا تعيين أحجام ثابتة للكتل لدينا:

#main (العرض: 800 بكسل؛) #header (الخلفية: # 3e4982؛ العرض: 800 بكسل؛ الارتفاع: 150 بكسل؛ محاذاة النص: المركز؛ اللون: #FFFFFF؛ حجم الخط: 24 بكسل؛ الحشو العلوي: 40 بكسل؛) #menu ( الخلفية: #6173cb؛ تعويم: يسار؛ العرض: 200 بكسل؛ الارتفاع: 300 بكسل؛ محاذاة النص: المركز؛ اللون: #FFFFFF؛ حجم الخط: 18 بكسل؛ الحشو العلوي: 10 بكسل؛) #content( الخلفية:#ffffff; الهامش الأيسر: 200 بكسل؛ الارتفاع: 300 بكسل؛ محاذاة النص: المركز) #footer( الخلفية:#3e4982; واضح: كلاهما; العرض: 800 بكسل; الارتفاع: 50 بكسل; محاذاة النص: المركز; اللون:#FFFFFF; الخط- الحجم: 14 بكسل؛

الآن يتم الضغط على صفحتنا على الحافة اليسرى من الشاشة.

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

لنفعل ذلك: امنح العلامة "body" عرضًا يبلغ 800 بكسل (مثل الكتلة "الرئيسية") ومساحة يسار قدرها 50%. بعد ذلك سيتم عرض محتويات الكتلة "الرئيسية" بالكامل على الجانب الأيمن من الشاشة (أي من المنتصف إلى اليمين):

لكي تكون الكتلة "الرئيسية" موجودة في منتصف الشاشة، يجب أن يتطابق وسطها مع منتصف علامة "الجسم". أولئك. تحتاج إلى تحويل الكتلة "الرئيسية" إلى اليسار بمقدار نصف حجمها. يبلغ عرض الكتلة "الرئيسية" 800 بكسل، مما يعني أنك بحاجة إلى تعيين الخاصية "margin-left:-400px" إليها. نعم، يمكن لهذه الخاصية أن تأخذ قيمًا سالبة، ثم يتم تقليل الهامش الأيسر (أي إزاحته إلى اليسار). وهذا هو بالضبط ما نحتاجه.

تبدو ورقة الأنماط الآن كما يلي:

الجسم (العرض: 800 بكسل؛ مساحة اليسار: 50%؛) #main (العرض: 800 بكسل؛ الهامش الأيسر: -400 بكسل؛) #header (الخلفية: #3e4982؛ العرض: 800 بكسل؛ الارتفاع: 150 بكسل؛ محاذاة النص: المركز اللون:#FFFFFF;حجم الخط:24px; حجم الخط: 18 بكسل؛ الحشو العلوي: 10 بكسل؛) #content( الخلفية:#ffffff; الهامش الأيسر: 200 بكسل; الارتفاع: 300 بكسل; محاذاة النص: المركز;) #footer( الخلفية:#3e4982; واضح: كلاهما; العرض: 800 بكسل؛ محاذاة النص: المركز؛ حجم الخط: 14 بكسل؛

وتقع صفحتنا في المتصفح في المنتصف تمامًا:

لقد بحثنا في خيارين لتوسيط صفحات الموقع، وهما في الواقع ليسا عقيدة. يمكنك تجربة الإصدار الخاص بك والتوصل إليه، فقط تحقق من كيفية عمله في المتصفحات المختلفة. لسوء الحظ، ما يتم عرضه بشكل جيد في FireFox أو Opera قد يتم عرضه بشكل غير مفهوم تمامًا في IE والعكس صحيح. ويجب أن نتذكر هذا.

حظا سعيدا لك في سعيكم الإبداعي!

في كثير من الأحيان تكون المهمة هي محاذاة كتلة في وسط الصفحة / الشاشة، وحتى بدون برنامج Java النصي، دون تعيين أبعاد جامدة أو مسافات بادئة سلبية، وحتى تعمل أشرطة التمرير للوالد إذا تجاوزت الكتلة حجمها . هناك الكثير من الأمثلة الرتيبة على الإنترنت حول كيفية محاذاة الكتلة إلى وسط الشاشة. كقاعدة عامة، يعتمد معظمها على نفس المبادئ.

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

الخيار 1: المسافة البادئة السلبية.

التمركز حاجزباستخدام السمات العلوية واليسرى بنسبة 50%، ومعرفة ارتفاع وعرض الكتلة مسبقًا، قم بتعيين هامش سلبي، وهو ما يعادل نصف الحجم حاجز. العيب الكبير لهذا الخيار هو أنك تحتاج إلى حساب المسافات البادئة السلبية. أيضًا حاجزلا يعمل بشكل صحيح تمامًا عندما يكون محاطًا بأشرطة التمرير - فهو ببساطة مقطوع لأنه يحتوي على هوامش سلبية.

الأصل ( العرض: 100%؛ الارتفاع: 100%؛ الموضع: مطلق؛ أعلى: 0؛ يسار: 0؛ تجاوز السعة: تلقائي؛ ) .block ( العرض: 250 بكسل؛ الارتفاع: 250 بكسل؛ الموضع: مطلق؛ أعلى: 50%؛ يسار : 50%؛ الهامش: -125 بكسل 0 0 -125 بكسل؛ img (أقصى عرض: 100%؛ الارتفاع: تلقائي؛ العرض: كتلة؛ الهامش: 0 تلقائي؛ الحدود: لا شيء؛))

الخيار 2. المسافة البادئة التلقائية.

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

الأصل ( العرض: 100%؛ الارتفاع: 100%؛ الموضع: مطلق؛ أعلى: 0؛ يسار: 0؛ تجاوز السعة: تلقائي؛ ) .block ( العرض: 250 بكسل؛ الارتفاع: 250 بكسل؛ الموضع: مطلق؛ أعلى: 0؛ يمين: 0؛ أسفل: 0؛ يسار: 0؛ الهامش: تلقائي؛ الحد الأقصى للعرض: 100%؛ الارتفاع: تلقائي؛ العرض: كتلة؛ الهامش: 0 تلقائي؛ الحدود: لا شيء؛ )

الخيار 3. الجدول.

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

الأصل ( العرض: 100%؛ الارتفاع: 100%؛ العرض: الجدول؛ الموضع: مطلق؛ الأعلى: 0؛ اليسار: 0؛ > .inner ( العرض: خلية جدول؛ محاذاة النص: المركز؛ محاذاة رأسية: الوسط؛ ) ) .block ( العرض: كتلة مضمنة؛ img ( العرض: كتلة؛ الحدود: لا شيء؛ ) )

لإضافة تمرير إلى هذا المثال، سيتعين عليك إضافة عنصر آخر إلى التصميم.
مثال: jsfiddle.net/serdidg/fk5nqh52/3.

الخيار 4. العنصر الزائف.

يخلو هذا الخيار من كافة المشاكل المذكورة في الطرق السابقة، كما يقوم بحل المشاكل الأصلية. النقطة هي أن الأبوينتعيين الأنماط عنصر زائفمن قبل، أي الارتفاع بنسبة 100%، ومحاذاة المركز، ونموذج الكتلة المضمنة. إنه نفس الشيء مع حاجزتم تعيين نموذج كتلة الخط، في المنتصف. ل حاجزلم "تندرج" تحت عنصر زائف، عندما تكون أبعاد الأول أكبر من الأبوين، يشير الأبوينالمسافة البيضاء: nowrap وحجم الخط: 0، وبعد ذلك حاجزقم بإلغاء هذه الأنماط بما يلي - المسافة البيضاء: عادي. في هذا المثال، حجم الخط: 0 مطلوب لإزالة المسافة الناتجة بينهما الأبوينو حاجزبسبب تنسيق التعليمات البرمجية. يمكن إزالة المساحة بطرق أخرى، ولكن من الأفضل تجنبها ببساطة.

الأصل (العرض: 100%؛ الارتفاع: 100%؛ الموضع: مطلق؛ الأعلى: 0؛ اليسار: 0؛ الفائض: تلقائي؛ المسافة البيضاء: nowrap؛ محاذاة النص: المركز؛ حجم الخط: 0؛ &: قبل ( الارتفاع: 100%؛ العرض: كتلة مضمنة؛ محاذاة رأسية: المحتوى الأوسط: ""؛

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

الأصل (الموضع: ثابت؛ أعلى: 0؛ يمين: 0؛ أسفل: 0؛ يسار: 0؛ تجاوز السعة: تلقائي؛ مسافة بيضاء: nowrap؛ محاذاة النص: مركز؛ حجم الخط: 0؛ &: قبل ( الارتفاع: 100% عرض: كتلة مضمنة؛ محاذاة رأسية: المحتوى الأوسط: ""؛

الخيار 5. فليكس بوكس.

واحدة من أبسط الطرق وأكثرها أناقة هي استخدام flexbox. لا يتطلب حركات الجسم غير الضرورية، ويصف بوضوح جوهر ما يحدث، وهو مرن للغاية. الشيء الوحيد الذي يستحق التذكر عند اختيار هذه الطريقة هو دعم IE من الإصدار 10 ضمناً. caniuse.com/#feat=flexbox

الأصل (العرض: 100%؛ الارتفاع: 100%؛ الموضع: ثابت؛ أعلى: 0؛ يسار: 0؛ العرض: مرن؛ محاذاة العناصر: المركز؛ محاذاة المحتوى: المركز؛ ضبط المحتوى: المركز؛ تجاوز السعة: تلقائي؛ ) .block ( الخلفية: #60a839; img ( العرض: كتلة; الحدود: لا شيء; ) )

الخيار 6. التحويل.

مناسب إذا كنا مقيدين بالبنية، ولا توجد طريقة للتعامل مع العنصر الأصلي، ولكن يجب محاذاة الكتلة بطريقة ما. سوف تأتي وظيفة CSS ترجمة () للإنقاذ. ستؤدي قيمة الموضع المطلق بنسبة 50% إلى وضع الزاوية العلوية اليسرى من الكتلة في المنتصف تمامًا، ثم ستحرك قيمة الترجمة السلبية الكتلة بالنسبة لأبعادها الخاصة. يرجى ملاحظة أن التأثيرات السلبية قد تظهر على شكل حواف غير واضحة أو نمط الخط. أيضًا، يمكن أن تؤدي هذه الطريقة إلى مشاكل في حساب موضع الكتلة باستخدام JavaScript. في بعض الأحيان، للتعويض عن فقدان 50% من العرض بسبب استخدام خاصية CSS اليسرى، يمكن استخدام القاعدة المحددة للكتلة. مساعدة: الهامش الأيمن: -50%؛

الأصل ( العرض: 100%؛ الارتفاع: 100%؛ الموضع: ثابت؛ أعلى: 0؛ يسار: 0؛ تجاوز السعة: تلقائي؛ ) .block ( الموضع: مطلق؛ أعلى: 50%؛ يسار: 50%؛ تحويل: ترجمة( -50%، -50%؛ img (العرض: كتلة؛ ) )

الخيار 7. زر.

خيار إنتاج المستخدم حيث حاجزمؤطرة في علامة زر. يتمتع الزر بخاصية توسيط كل ما هو بداخله، أي عناصر النموذج المضمن والخط المضمن (الكتل المضمنة). عمليا لا أنصح باستخدامه.

الأصل ( العرض: 100%؛ الارتفاع: 100%؛ الموضع: مطلق؛ الأعلى: 0؛ اليسار: 0؛ الفائض: تلقائي؛ الخلفية: لا شيء؛ الحدود: لا شيء؛ المخطط التفصيلي: لا شيء؛ ) .block ( العرض: كتلة مضمنة؛ img (العرض: كتلة؛؛ الحدود: لا شيء؛))

علاوة

باستخدام فكرة الخيار الرابع، يمكنك تعيين هوامش خارجية لـ حاجز، وسيتم عرض الأخير بشكل مناسب محاطًا بأشرطة التمرير.
مثال: jsfiddle.net/serdidg/nfqg9rza/2.

يمكنك أيضًا محاذاة الصورة إلى المنتصف، وإذا كانت الصورة أكبر الأبوين، قم بقياسه إلى الحجم الأبوين.
مثال: jsfiddle.net/serdidg/nfqg9rza/3.
مثال مع صورة كبيرة:

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

. حتى مع ظهور HTML5 وظهور منافسين جادين في شكل مقال أو رأس، لا يزال يتم إدراجه في العلامات في كل مكان. لذلك، أقترح عليك فهم مسألة التنسيق وتوسيط كتل div.

ما هو DIV

يأتي اسم العنصر من الكلمة الإنجليزية Division، والتي تعني القسمة. عند كتابة العلامات، يتم استخدامها لتقسيم العناصر إلى كتل. تحتوي عناصر DIV على مجموعات من المحتوى على صفحة ويب. على سبيل المثال، الصور والفقرات مع النص. لا تؤثر العلامة على عرض المحتوى بأي شكل من الأشكال ولا تحمل أي حمل دلالي.

DIV يدعم كافة السمات العالمية. ولكن لتصميم الويب تحتاج فقط إلى فئتين ومعرف. لن تتذكر أي شخص آخر إلا في الحالات الغريبة، وهذه ليست حقيقة. تم إهمال سمة المحاذاة، التي كانت تُستخدم لمحاذاة أقسام div للوسط أو لليسار.

متى يتم استخدام DIVs

تخيل أن الموقع عبارة عن ثلاجة، وأن وحدات DIV عبارة عن حاويات بلاستيكية تحتاج إلى فرز المحتويات فيها. لن تضع الفاكهة في نفس الحاوية التي تحتوي على نبتة الكبد. سوف تضع كل نوع من المنتجات على حدة. يتم إنشاء محتوى الويب بطريقة مماثلة.

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

وثيقة



انظر الآن إلى كل قسم بمزيد من التفاصيل. ابدأ بالرأس. يحتوي رأس الموقع على شعار منفصل وملاحة وعنوان من المستوى الأول وأحيانًا شعار. قم بتعيين كل كتلة دلالية حاوية خاصة بها. لن يؤدي هذا إلى فصل العناصر الموجودة في التدفق فحسب، بل سيجعل تنسيقها أسهل أيضًا. ستجد أنه من الأسهل توسيط كائن ما في علامة DIV عن طريق إعطائه فئة أو معرفًا.

توسيط DIVs باستخدام الهوامش

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

div (الحدود: 1 بكسل صلب #333؛ الحدود اليسرى: لا شيء؛)

تضيف هذه الخصائص مسافة بين الكائنات وتساعدك على محاذاتها ووضعها بشكل صحيح. على سبيل المثال، إذا كانت هناك حاجة إلى نقل كتلة بها صورة من الحافة اليسرى إلى المركز بنسبة 20%، فيمكنك تعيين هامش يسار للعنصر بقيمة 20%:

كتلة مع img (الهامش الأيسر: 20%؛)

يمكن أيضًا تنسيق العناصر باستخدام قيم العرض والحشو السلبي. على سبيل المثال، هناك كتلة بأبعاد 200 بكسل في 200 بكسل. أولاً، دعونا نعينه موضعًا مطلقًا وننقله إلى المركز بنسبة 50%.

القسم (الموضع: مطلق؛ اليسار: 50%؛)

الآن، للتأكد من وضع DIV المركزي بشكل مثالي، نعطيه هامشًا سلبيًا إلى اليسار يساوي 50٪ من عرضه، أي -100 بكسل:

الهامش الأيسر: -100 بكسل؛

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

لذا، عندما تحتاج إلى توسيط DIV، استخدم خاصية تغيير حجم المربع مع القيمة border-box. سيؤدي هذا إلى منع المتصفح من إضافة قيم الحشو والحدود إلى العرض الإجمالي لعنصر DIV. لرفع عنصر أو خفضه، استخدم أيضًا القيم السالبة. ولكن في هذه الحالة، يمكن تعيينها إما للحقل العلوي أو السفلي للحاوية.

كيفية توسيط كتلة DIV باستخدام الهوامش التلقائية

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

استخدم طريقة الحقل التلقائي عند تطوير التطبيقات سريعة الاستجابة. الشيء الرئيسي هو تعيين قيمة العرض للحاوية في em أو النسبة المئوية. سيعمل الرمز الموجود في المثال أعلاه على توسيط DIV وعلى أي جهاز، بما في ذلك الهواتف المحمولة، سيشغل 90% من الشاشة.

المحاذاة عبر خاصية العرض: inline-block

بشكل افتراضي، تعتبر عناصر DIV عناصر كتلة، وقيمة العرض الخاصة بها هي كتلة. لهذه الطريقة سوف تحتاج إلى تجاوز هذه الخاصية. مناسب فقط لـ DIVs التي تحتوي على حاوية أصل:

أي نص

يتم تعيين خاصية محاذاة النص للعنصر الذي ينتمي إلى فئة div الخارجية بقيمة center، والتي تعمل على توسيط النص بالداخل. لكن في الوقت الحالي، يرى المتصفح عنصر DIV المتداخل ككائن كتلة. لكي تعمل خاصية محاذاة النص، يجب التعامل مع القسم الداخلي على أنه أحرف صغيرة. لذا، في جدول CSS الخاص بمحدد القسم الداخلي، تكتب الكود التالي:

القسم الداخلي (العرض: كتلة مضمنة؛)

يمكنك تغيير خاصية العرض من كتلة إلى كتلة مضمنة.

طريقة التحويل/الترجمة

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

تحويل: ترجمة (50%، 50%)؛

تقوم وظيفة الترجمة بنقل العنصر من موضعه الحالي إلى اليسار/اليمين وإلى أعلى/أسفل. يتم تمرير قيمتين بين قوسين:

  • درجة الحركة الأفقية
  • درجة الحركة العمودية.

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

التحويل: ترجمة Y(-20%);

في بعض الأدلة يمكنك العثور على التحويل باستخدام بادئات البائع:

تحويل Webkit: ترجمة (50%، 50%)؛ -ms-transform: ترجمة(50%, 50%)); تحويل: ترجمة (50%، 50%)؛

وفي عام 2018، لم يعد هذا ضروريًا؛ فالخاصية مدعومة من قبل جميع المتصفحات، بما في ذلك Edge وIE.

من أجل توسيط DIV الذي نريده، تتم كتابة وظيفة ترجمة CSS بقيمة 50% للمحور الرأسي والأفقي. سيؤدي هذا إلى قيام المتصفح بإزاحة العنصر من موضعه الحالي بمقدار نصف عرضه وارتفاعه. يجب تحديد خصائص العرض والارتفاع:

وثيقة



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

العمل مع تخطيط Flexbox

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

في الأمثلة السابقة، تعاملنا بالفعل مع خاصية العرض، لكننا قمنا بتعيينها على قيم الحظر والكتلة المضمنة. لإنشاء تخطيطات مرنة سوف نستخدم العرض: flex. نحتاج أولاً إلى حاوية مرنة:



لتحويلها إلى حاوية مرنة في الجداول المتتالية، نكتب:

حاوية مرنة (العرض: فليكس؛)

جميع الكائنات المتداخلة، باستثناء العناصر التابعة لها فقط، ستكون عناصر مرنة:

أولاً
ثانية
ثالث
الرابع


إذا قمت بوضع قائمة داخل حاوية مرنة، فإن عناصر قائمة li لا تعتبر عناصر مرنة. لن يعمل تخطيط Flexbox إلا على ul:

قواعد لوضع العناصر المرنة

لإدارة العناصر المرنة، تحتاج إلى ضبط المحتوى ومحاذاة العناصر. اعتمادًا على القيم التي تحددها، تقوم هاتان الخاصيتان بوضع الكائنات تلقائيًا حسب الحاجة. إذا كنا بحاجة إلى توسيط كافة عناصر DIV المتداخلة، فإننا نكتب justify-content: center وalign-items: center ولا شيء آخر. سيقوم المتصفح ببقية العمل بنفسه:

وثيقة

أولاً
ثانية
ثالث
الرابع


لتوسيط النص على DIVs التي تعتبر عناصر مرنة، يمكنك استخدام تقنية محاذاة النص القياسية. أو يمكنك جعل كل DIV متداخل أيضًا عبارة عن حاوية مرنة وإدارة المحتوى باستخدام ضبط المحتوى. تكون هذه الطريقة أكثر عقلانية إذا كانت تحتوي على مجموعة متنوعة من المحتوى، بما في ذلك الرسومات والكائنات المتداخلة الأخرى، بما في ذلك القوائم متعددة المستويات.

اليوم عزيزي القارئ سوف نتعامل مع مشكلة المحاذاة الرأسية في الكتلة شعبة.

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

صياغة المشكلة:تحتاج إلى توسيط محتويات كتلة متغيرة الارتفاع بالنسبة إلى الوضع الرأسي.

الآن لنبدأ في حل المشكلة.

وهكذا، لدينا كتلة، يمكن أن يتغير ارتفاعها:

حظر المحتوى

أول ما يتبادر إلى ذهنك هو القيام بالخدعة التالية:

حظر المحتوى

هناك كل الأسباب للاعتقاد بأن هذه العبارة حظر المحتوىسيتم محاذاته مع الارتفاع المركزي لحاوية div.

لكنه لم يكن هناك! لن نحقق أي محاذاة مركزية متوقعة بهذه الطريقة. و لماذا؟ يبدو أن كل شيء موضح بشكل صحيح. وتبين أن هذه هي المشكلة: الملكية محاذاة عموديةيمكن استخدامه فقط لمحاذاة محتويات خلايا الجدول أو لمحاذاة العناصر المضمنة بالنسبة لبعضها البعض.

فيما يتعلق بالمحاذاة داخل خلية الجدول، أعتقد أن كل شيء واضح. لكنني سأشرح حالة أخرى مع العناصر المضمنة.

المحاذاة العمودية للعناصر المضمنة

لنفترض أن لديك سطرًا من النص مقسمًا بواسطة علامات الأسطر إلى أجزاء:

أنت يرحب قطعةنص!

العلامة المضمنة هي حاوية لا يؤدي مظهرها إلى التفاف المحتوى في سطر جديد.

يؤدي إجراء علامة الكتلة إلى التفاف محتويات الحاوية في سطر جديد.

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

حاوية سهل الاستخدام عند تحديد جزء من النص بتنسيق خاص (تمييزه بلون أو خط مختلف وما إلى ذلك)

للحاويات قم بتطبيق خصائص CSS التالية:

#perviy( محاذاة عمودية:sub; ) #vtoroy( محاذاة عمودية:3px; ) #tretiy( محاذاة عمودية:-3px; )

سيبدو سطر النص الناتج كما يلي:

هذا ليس أكثر من محاذاة رأسية للعناصر المضمنة وخاصية CSS محاذاة عموديةتتواءم مع هذه المهمة على أكمل وجه.

لقد تشتت انتباهنا قليلاً، والآن نعود إلى مهمتنا الرئيسية.

المحاذاة العمودية في حاوية div

بغض النظر عن الأمر، سنستخدم الخاصية للمحاذاة داخل حاوية div محاذاة عمودية. كما قلت سابقًا، يمكن استخدام هذه الخاصية في حالة محاذاة العناصر المضمنة (ناقشنا هذه الحالة بالتفصيل أعلاه وهي غير مناسبة لنا للمحاذاة في حاوية div)؛ كل ما تبقى هو استخدام حقيقة ذلك محاذاة عموديةيعمل لخلايا الجدول.

كيف يمكننا استخدام هذا؟ ليس لدينا طاولة، بل نعمل باستخدام حاوية div.

ها، اتضح أن الأمر بسيط للغاية.

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

لنفترض أن لدينا فئة div محاذاة النص:

حظر المحتوى

بالنسبة لهذه الكتلة، نحدد خاصية CSS التالية:

محاذاة النص (العرض: خلية الجدول؛)

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

ومع ذلك، لا يمكن أن ينتهي كل شيء بهذه البساطة. لدينا متصفح IE رائع. إنه لا يعرف كيفية العمل مع الممتلكات العرض: خلية الجدول(أقترح عليك قراءة الجدول الذي يوضح وظيفة خاصية CSS هذه في متصفحات مختلفة على موقع الويب htmlbook.ru). لذلك، سيتعين علينا اللجوء إلى الحيل المختلفة.

هناك العديد من الطرق لتحقيق المحاذاة في حاوية div لجميع المتصفحات:

  • الطريقة باستخدام حاوية div مساعدة إضافية
  • طريقة استخدام التعبير. إنه مرتبط بحساب صعب لارتفاعات الكتلة. لا يمكنك القيام بذلك دون معرفة جافا سكريبت.
  • باستخدام خاصية ارتفاع الخط. هذه الطريقة مناسبة فقط للمحاذاة الرأسية في كتلة ذات ارتفاع معروف، وبالتالي لا تنطبق في الحالة العامة.
  • استخدام إزاحة المحتوى المطلق والنسبي في حالة متصفح IE. يبدو لي أن هذه الطريقة هي الأكثر مفهومة وبساطة. بالإضافة إلى ذلك، يمكن تنفيذه لحاوية div متغيرة الارتفاع. سنتناولها بمزيد من التفصيل.

كما تفهم، علينا فقط حل مشكلة المحاذاة الرأسية في IE المرتبطة بسوء فهمها للخاصية العرض: خلية الجدول(لا IE6 ولا IE7 ولا IE8ليس على دراية بهذه الخاصية). لذلك، باستخدام تعليق مشروطسنحدد خصائص CSS مختلفة خصيصًا لمتصفحات IE.

تعليق مشروط

نوع البناء:

... Инструкции, действующие только в случае выполнения условия в квадратных скобках...

يسمى تعليقًا شرطيًا (كن حذرًا، يجب أن يتوافق نوع التعليق الشرطي تمامًا مع المثال الموضح، حتى مسافة).

لن يتم تنفيذ التعليمات الواردة في هذا التعليق الشرطي إلا إذا كان المتصفح الذي يفسر هذا الرمز ينتمي إلى عائلة IE.

وبالتالي، باستخدام التعليق الشرطي، يمكننا إخفاء جزء من التعليمات البرمجية من جميع المتصفحات باستثناء IE.

حل المشكلة

بسبب كل هذا البقدونس، سنحتاج إلى تزويد كود HTML الخاص بنا بحاويتين إضافيتين. هذا هو الشكل الذي ستبدو عليه كتلة النص الخاصة بنا:

هذا نوع من نص التحقق.
يتكون من سطرين.

لحاوية فئة div محاذاة النصيتم تعيين خصائص CSS التي تجعل محتواها عموديًا لجميع المتصفحات العادية (باستثناء IE بالطبع):

العرض: خلية الجدول؛ محاذاة عمودية: وسط؛

وخاصيتان أخريان تحددان العرض والارتفاع للكتلة:

العرض: 500 بكسل؛ الارتفاع: 500 بكسل؛

وهذا يكفي لمحاذاة محتويات الحاوية في المنتصف بالنسبة إلى الوضع الرأسي في جميع المتصفحات باستثناء آي إي.

الآن نبدأ بإضافة الخصائص المتعلقة بالمحاذاة لمتصفحات عائلة IE(لقد استخدمنا لهم كتلًا إضافية شعبةو فترة):

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

قسم محاذاة النص (الموضع: مطلق؛ الأعلى: 50%؛)

يعني هذا التصميم: لجميع علامات div داخل كتلة ذات فئة محاذاة النصتطبيق الخصائص المذكورة.

وفقا لذلك، الأنماط المحددة للكتلة محاذاة النصتم تعديلها:

محاذاة النص (العرض: خلية جدول؛ محاذاة رأسية: وسط؛ العرض: 500 بكسل؛ الارتفاع: 500 بكسل؛ الموضع: نسبي؛)

الآن تم نقل النقطة العلوية اليسرى من كتلة النص إلى الأسفل بنسبة 50%.

ولتوضيح ما يحدث قمت برسم رسم توضيحي:

وكما ترون من الصورة، فقد أحرزنا بعض التقدم. ولكن هذا ليس كل شيء! لقد تحركت النقطة العلوية اليسرى من الكتلة الصفراء بالفعل بنسبة 50٪ إلى الأسفل، مقارنة بالكتلة الأصلية (الأرجوانية). لكننا نريد أن يكون ارتفاعه 50 بالمائة من ارتفاع الكتلة الأرجوانية. مركز الكتلة الصفراء، وليس أعلى نقطة على اليسار.

الآن سوف تدخل العلامة حيز التنفيذ فترةوموقعها النسبي:

نطاق محاذاة النص (الموضع: نسبي؛ الأعلى: -50%؛)

وهكذا نكون قد قمنا بإزاحة الكتلة الصفراء للأعلى بمقدار 50% من ارتفاعها، بالنسبة إلى موضعها الأولي. كما تفهم، فإن ارتفاع الكتلة الصفراء يساوي ارتفاع المحتوى المركزي. والعملية الأخيرة على حاوية الامتداد وضعت المحتوى الخاص بنا في منتصف الكتلة الأرجوانية. مرحا!

دعونا نلعب الحيل قليلا

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

هناك مشكلة صغيرة.إذا كان المحتوى المركزي مرتفعا جدا، فهذا يؤدي إلى عواقب غير سارة: هناك ارتفاع إضافي للتمرير العمودي.

حل للمشكلة:بحاجة إلى إضافة خاصية إخفاء الفائضحاجز محاذاة النص.

تعرف على العقار بالتفصيل تجاوزممكن في .

تعليمات CSS النهائية للكتلة محاذاة النصلديه النموذج:

محاذاة النص (العرض: خلية جدول؛ محاذاة رأسية: وسط؛ العرض: 500 بكسل؛ الارتفاع: 500 بكسل؛ الموضع: نسبي؛ التجاوز: مخفي؛ الحد: 1 بكسل أسود خالص؛)

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

توسيط في كتلة الارتفاع المتغير

في كثير من الأحيان تكون هناك حاجة لتعيين ارتفاع كتلة الفصل محاذاة النصليس بالبكسل، ولكن كنسبة مئوية من ارتفاع الكتلة الأصلية، وقم بمحاذاة محتويات حاوية div في المنتصف.

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

في هذه الحالة، يجب عليك استخدام كتلة خارجية تم تحديد خاصية CSS لها جدول العرضوقمت بالفعل بتعيين القيمة المئوية للارتفاع لها. ثم يتم تضمين الكتلة فيه بتوجيه CSS العرض: خلية الجدول، سوف يرث بسعادة ارتفاع الكتلة الأصلية.

من أجل تنفيذ كتلة متغيرة الارتفاع في مثالنا، سنقوم بتعديل CSS قليلاً:

الى الصف محاذاة النصسوف نقوم بتغيير قيمة العقار عرضمع خلية الجدولعلى طاولةوإزالة توجيه المحاذاة محاذاة عمودية: وسط. يمكننا الآن تغيير قيمة الارتفاع بأمان من 500 بكسل إلى 100% على سبيل المثال.

إذن خصائص CSS لكتلة الفصل محاذاة النصسوف تبدو مثل هذا:

محاذاة النص (العرض: جدول؛ العرض: 500 بكسل؛ الارتفاع: 100%؛ الموضع: نسبي؛ التجاوز: مخفي؛ الحد: 1 بكسل أسود خالص؛)

كل ما تبقى هو تنفيذ توسيط المحتوى. للقيام بذلك، يتم تضمين حاوية div في كتلة فئة محاذاة النص(هذه هي نفس الكتلة الصفراء في الصورة)، تحتاج إلى تعيين خاصية CSS العرض: خلية الجدول، فسوف يرث ارتفاع 100% من الكتلة الأصلية محاذاة النص(كتلة أرجوانية). ولن يمنعنا أي شيء من محاذاة محتويات حاوية div المتداخلة في المركز مع الخاصية محاذاة عمودية: وسط.

نحصل على قائمة إضافية أخرى لخصائص CSS لكتلة div المتداخلة في الحاوية محاذاة النص.

قسم محاذاة النص (العرض: خلية جدول؛ محاذاة رأسية: وسط؛)

هذه هي الحيلة كلها. إذا رغبت في ذلك، يمكن أن يكون لديك ارتفاع متغير مع توسيط المحتوى.

لمزيد من المعلومات حول المحاذاة الرأسية لكتلة ذات ارتفاع متغير، راجع .