【发布时间】:2019-01-28 00:46:52
【问题描述】:
我有this 代码。尽管在 td 中,并且指定了这个 CSS:
.day {
text-align: right;
padding: 5px;
vertical-align: middle;
border: 1px solid black;
}
.day--hole {
color: lightgray;
}
.day--today {
background: pink;
}
<table>
<tbody>
<tr>
<td class="day day--hole">30</td>
<td class="day day--hole">31</td>
<td class="day">1</td>
<td class="day">2</td>
<td class="day">3</td>
<td class="day">4</td>
<td class="day">5</td>
</tr>
<tr>
<td class="day">6</td>
<td class="day">7</td>
<td class="day">8</td>
<td class="day">9</td>
<td class="day">10</td>
<td class="day">11</td>
<td class="day">12</td>
</tr>
<tr>
<td class="day">13</td>
<td class="day">14</td>
<td class="day">15</td>
<td class="day">16</td>
<td class="day">17</td>
<td class="day">18</td>
<td class="day">19</td>
</tr>
<tr>
<td class="day">20</td>
<td class="day day--today">21</td>
<td class="day">22</td>
<td class="day">23</td>
<td class="day">24</td>
<td class="day">25</td>
<td class="day">26</td>
</tr>
<tr>
<td class="day">27</td>
<td class="day">28</td>
<td class="day">29</td>
<td class="day">30</td>
<td class="day">31</td>
<td class="day day--hole">1</td>
<td class="day day--hole">2</td>
</tr>
</tbody>
</table>
文本应该居中的位置与文本的当前位置之间存在明显的间隙。它看起来比它应该的“更高”并且没有完全居中。为什么会发生这种情况?如何在不重复更改 HTML 或使用 flexbox 的情况下解决它?
【问题讨论】:
-
我想你最好的选择是在行上设置一个高度并将其用作行高。根据我的经验,垂直对齐通常在将元素与文本而不是文本与元素对齐时起作用
-
您可以将 line-height 重置为 1/0.8em 以降低高度。但是 padding (px)+ unknown(px) font-size 会给出一个平均结果。尝试:
.day { line-height:0.8em; text-align: right; padding: 5px; vertical-align: middle; border: 1px solid black; background: linear-gradient(to top, transparent 5px, rgba(0,0,0,0.2) 5px, rgba(0,0,0,0.2) calc(100% - 5px), transparent calc(100% - 5px) );以查看没有垂直显示间隙,但是,最好,如果你想要正方形。在em中使用width和在em中使用相同值的line-height,而不使用padding。 -
我在文本下方看不到 litlle spacing。你用什么浏览器来测试,你说的小间距有多大?顺便说一句,反馈只对你有用。