[英]Vertical alignment of text inside div
在這方面,我真的需要幫助:第二天就讓我難受。 我有以下代碼:
* {
margin: 0;
padding: 0;
font: 16px Verdana, Arial, sans-serif;
color: #444;
line-height: 1.5rem;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
text-decoration: none;
}
.inlbtn {
width: 2rem;
height: 2rem;
display: table;
text-align: center;
font-weight: bold;
color: #666;
border: 1px solid #939393;
}
.plus {
font-size: 1.5rem;
font-weight: bold;
display: table-cell;
vertical-align: middle;
}
.plus:before {
content: "+";
}
<div class='inlbtn'><span class='plus'></span></div>
它基本上在內部具有div和span,並帶有“ +”符號。 水平對齊方式看起來不錯,但垂直方向有些下移。 如何使其在垂直方向上完美居中?
我玩過代碼,看來*下的代碼是罪魁禍首,但是為什么呢?
您做的一切正確,我始終使用相同的方法。 問題是這條線
content: "+";
是一段文字,因此它會自動在保留為大寫字母的line-height
內的頂部具有邊距(並且+符號不是一個); 頁邊距值也可以根據字體而有所不同。
作為證明,請嘗試以下操作:
content: "A";
這看起來居中。
您可以做些什么來避免這種現象:
line-height
屬性,但我對此方法有疑問 我將只使用一個HTML元素,因為不需要使用額外的元素或:before
偽類:
<div class='inlbtn'>+</div>
然后,我將使用display: inline-block
,而不是table。
正如Simon在回答中提到的, +
字符小於A
但是,我不使用負邊距或填充,而是更改了行高:
.inlbtn {
width: 2rem;
height: 2rem;
font-size: 1.5rem;
line-height: 1.5rem;
display: inline-block;
text-align: center;
font-weight: bold;
color: #666;
border: 1px solid #939393;
}
嘗試這樣: 演示
.inlbtn {
width: 2rem;
height: 2rem;
display: block;
text-align: center;
font-weight: bold;
color: #666;
border: 1px solid #939393;
}
.plus {
font-size: 1.5rem;
font-weight: bold;
display: inline-block;
vertical-align: middle !important;
}
.plus:before {
content:"+";
display: inline-block;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.