Menu
flag Ar iconالعربيةdown icon

كيفية توسيط صورة في HTML وCSS

العنصر <img> سطري، لذلك يتوسط كالنص: text-align: center على أبيه. أو اجعله block مع margin: 0 auto، أو وسّطه باستخدام flexbox أو grid، بما في ذلك عموديًا. كل طريقة تعمل مباشرة وتقيس النتيجة.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

الإجابة السريعة: text-align على الأب

العنصر <img> عنصر سطري: يقع في سطر النص ككلمة. لذلك توسّطه بالطريقة نفسها التي توسّط بها النص، عبر text-align: center على أبيه:

التنسيق يوضع على الـ div، لا على الصورة. وضع text-align: center على <img> نفسها لا يفعل شيئًا، لأن الصورة لا تحتوي على نص بداخلها لمحاذاته.

الطريقة 2: display block وmargin auto

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

الصورة الرمادية عليها margin: 0 auto لكنها تبقى في بداية السطر: الهوامش التلقائية لا تفعل شيئًا على عنصر سطري. display: block هي القطعة الناقصة. وmax-width: 100% مع height: auto تمنعان الصورة من تجاوز الشاشة الضيقة مع الحفاظ على نسبها.

الطريقة 3: flexbox أو grid، بما في ذلك التوسيط العمودي

لتوسيط صورة في الاتجاهين داخل صندوق، أعطِ الصندوق ارتفاعًا ووسّط محتواه باستخدام grid أو flexbox:

المكافئ في flexbox هو display: flex; justify-content: center; align-items: center;. في الحالتين يحتاج الصندوق إلى ارتفاع أكبر من الصورة، وإلا فلا مساحة للتوسيط فيها. الطرق نفسها توسّط أي عنصر؛ وتقارن صفحة توسيط div بينها جميعًا.

توسيط صورة مع وصف

الصورة مع وصفها مكانها عنصر <figure>. وسّط محتوى الـ figure، فتصطف الصورة والوصف معًا:

عدة صور في صف موسّط

صف من الشعارات أو الصور المصغرة مهمة flexbox. توسّط justify-content: center المجموعة، وتباعد gap بينها، وتسمح flex-wrap بالتفافها على الشاشات الصغيرة مع بقائها موسّطة:

أي طريقة تستخدم

الحالةاستخدم
صورة داخل فقرة أو عنصر كتلي بسيطtext-align: center على الأب
لا يمكنك تنسيق إلا الصورةdisplay: block; margin: 0 auto;
التوسيط في الاتجاهين داخل صندوقGrid مع place-items: center (أو flexbox) على الصندوق
صف من الصورFlexbox مع justify-content: center
صورة مع وصف<figure> مع text-align: center
صورة خلفية لا محتوىbackground-position: center، راجع background-image

الطرق القديمة، ولماذا لا تستخدمها

ما زلت ستجد هذه في الدروس القديمة:

<!-- obsolete: do not use -->
<center><img src="logo.png" alt="Logo"></center>
<img src="logo.png" alt="Logo" align="center">

أُزيل <center> والسمة align من HTML. ما زالت المتصفحات تعرض <center> للتوافق مع الصفحات القديمة، وalign="center" على الصورة لا توسّطها أفقيًا أصلًا: تعاملها المتصفحات كمحاذاة عمودية داخل السطر. استخدم إحدى طرق CSS أعلاه.

أخطاء شائعة

  • text-align: center على <img>. ضعها على الأب.
  • margin: 0 auto على صورة سطرية. أضف display: block.
  • التوسيط العمودي من دون ارتفاع للأب. يتقلص الصندوق إلى حجم الصورة، فلا تبقى مساحة للتوسيط.
  • float: center. لا توجد قيمة كهذه. العناصر العائمة تذهب إلى أحد الجانبين فقط.
  • نسيان alt. الصورة الموسّطة ما زالت تحتاج إلى نص بديل؛ استخدم alt="" للصور الزخرفية البحتة فقط.
  • صورة ممطوطة. ضبط width وheight معًا في CSS بقيم ذات نسبة مختلفة يشوّهها. اضبط أحدهما واستخدم height: auto، أو أضف object-fit: cover.

الأسئلة الشائعة

كيف أوسّط صورة في HTML؟

ضع text-align: center على العنصر الذي يحتويها، مثلًا <p style="text-align: center;"><img src="logo.png" alt="Logo"></p>. الصورة سطرية افتراضيًا، فتتوسط ككلمة من النص.

كيف أوسّط صورة باستخدام margin auto؟

اجعل الصورة عنصرًا كتليًا أولًا: img { display: block; margin: 0 auto; }. الهوامش التلقائية لا توسّط العناصر السطرية، والصورة سطرية حتى تغيّر ذلك.

كيف أوسّط صورة عموديًا وأفقيًا؟

اجعل حاويتها grid (أو flexbox) بارتفاع محدد: .box { display: grid; place-items: center; height: 300px; }. عندها تقع الصورة في منتصف الصندوق.

هل يمكن استخدام الوسم <center> أو align="center" لتوسيط صورة؟

لا. الوسم <center> والسمة align على <img> ملغيان في HTML5. ما زالت المتصفحات تعرض <center> للصفحات القديمة، لكن align="center" على الصورة تحاذيها عموديًا في السطر لا أفقيًا. استخدم CSS.

لماذا توجد فجوة صغيرة تحت الصورة الموسّطة؟

الصورة السطرية تقع على خط أساس النص، تاركة مساحة تحتها للأجزاء النازلة من الحروف. اضبط display: block على الصورة، أو vertical-align: middle، فتختفي الفجوة.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن