كيفية محاذاة الصورة والنص عموديا داخل عنصر TD؟
-
22-07-2019 - |
سؤال
<td>
<img src="http://blog.garethjmsaunders.co.uk/wp-content/feed-icon-16x16.gif"/>
My feed
</td>
هذه عن كيفية الشبه:
(مصدر: Garethjmsaunders.co.uk)
خلاصتي
الأيقونة والنص مسيء رأسيا. يوجد الرمز في الجزء العلوي من خلية الجدول ، النص في الأسفل. يحتل كل من النص والأيقونة 16 بكسل ولكن الخلية لا تزال تأكل 19. كيف يمكنني محاذاة لإنقاذ تلك البكسل 3؟
المحلول
حسنًا ، إذا اخترت طريقة صورة الخلفية ، فسيكون الأمر بسيطًا جدًا:
background: url(feed.png) left center no-repeat
نصائح أخرى
تتماشى الصورة مع السطر الأساسي للنص ، وهذا لا يشمل ارتفاع السليل الذي هو "علامة" في رسالة مثل G أو Y.
إذا كان ارتفاع الصف/الخلية ثابتة ، فيمكنك إضافة ارتفاع خط للحصول عليه إلى الوسط رأسيًا. لذلك على سبيل المثال ، على افتراض أن زنزانتك مرتفع 16 بكسل:
td.feed {
line-height:16px;
}
سيكون الخيار الآخر هو إضافة الأيقونة كصورة خلفية ، مع إضافة أحفاد اليسار إلى الخلية:
td.feed {
background: transparent url(/wp-content/feed-icon-16x16.gif) no-repeat left center;
padding-left: 18px; /* width of feed icon plus 2px spacing */
}
والثاني يعني أنه يمكنك إزالة الحاجة إلى الجداول على الإطلاق ، والآن هناك فكرة ...
الإجابات الأخرى التي تشير إلى أن الصورة لا ينبغي أن تكون جزءًا من المحتوى وأنه مجرد الديكور ، وهو أمر قابل للنقاش. أعتقد أنه يجب عليك إضافة فارغة alt
ارتكب على صورتك حتى يتمكن قراء الشاشة من تجاهل الصورة إذا اخترت الاحتفاظ بأسلوبك الحالي.
ال vertical-align
الخاصية هي التي تحتاج إلى استخدامها هنا ، ولكن ما تريد استخدامه هو text-bottom
. سأفترض أيضًا أنك تريد أن يكون هذا رابطًا ، لذا إليك مثال رمز كامل:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>garethjmsaunders.co.uk</title>
<style type="text/css">
a { text-decoration: none; }
a img { border: 0; vertical-align: text-bottom; }
</style>
</head>
<body>
<table>
<tr>
<td>
<a href="" title="garethjmsaunders.co.uk rss feed">
<img alt="" src="http://blog.garethjmsaunders.co.uk/wp-content/feed-icon-16x16.gif" />
My feed
</a>
</td>
</tr>
</table>
</body>
</html>
إذا كان هذا لا يزال غير مرغوب فيه ، فيمكنك تجربة line-height
والقيم الأخرى ل vertical-align
لمعرفة ما هو أفضل بالنسبة لك.
ما الخطأ في جعلها صورة خلفية؟
.feed {
background: transparent url("http://blog.garethjmsaunders.co.uk/wp-content/feed-icon-16x16.gif") no-repeat scroll left center;
padding-left: 16px;
}
ما عليك سوى محاولة "العمودي المحاذاة: الأوسط" على علامة IMG ، بعد مما يمكنك أيضًا تعيين حشوة لـ TD
جرب هذا:
<td>
<img src="http://blog.garethjmsaunders.co.uk/wp-content/feed-icon-16x16.gif"/>
<span class="feedTxt">My feed</span>
</td>
.feedTxt { line-height: 20px; } /* Or whatever the height of the image is. Adjust as needed. */
أود أن أضع العنصرين (الصورة والنص) في خلايا الجدول المنفصلة الخاصة بهم. هل يمكن أن عش جدول آخر. هذا مكان جيد للبدء. ثم يمكنك اللعب مع الحشو ، وما إلى ذلك لضبط.
<td>
<table><tr style="vertical-align:top;"><td><img src="path_here" /></td><td>my feed</td></tr></table>
</td>
يمكنك أن تفعل position: relative; top: 3px;
على ال <img>
بطاقة شعار. يمكنك أيضا المحاولة vertical-align: middle;
على ال <td>
علامة ، لكنني لا أعتقد أنه سيعمل بشكل صحيح ، لأنني متأكد تمامًا من أنني واجهت هذا من قبل. يمكنك أيضا وضعها في منفصلة <td>
العلامات ، ولكن هذا نوع من لا.
جربت طريقة صورة الخلفية ولكن لم يعجبني مثل هذا ...
في CSS ...
.iconLabel {
position: relative;
top: -6px;
padding-left: 8px;
}
في الصفحة ...
<td style="text-align:center;">
<a href="overview.cfm"
><img alt="Overview" src="Globe.png"
align="middle" border="0" height="60" width="60"
><span class="iconLabel">Overview</span
></a>
</td>
- العب مع "أعلى" اعترض على نقل النص/التسمية لأعلى ولأسفل.
- العب مع حشوة قم بتغيير المسافة الأفقية بين الرمز والنص/التسمية.
- يجب عليك التحقق من ذلك عبر أي متصفحات تهتم بها ، لأنها قد تقدم اختلافات طفيفة.