阅读数:

css实现文字垂直居中

0

说明

UI可能如此设计:一行有多列数据,纯div span布局,非table布局,每一列为了自适应有的是一行文字,有的是多行文字,也就说高度不一致,
蛋疼的要求是每一列还得水平垂直居中,水平好办,text-align,垂直怎么办呢?很多同学可能会说line-height,但是有个问题,你并不知道高度。
你也可能会说我可以计算,但是像移动端手机宽度不一样,按照百分比拿到的每列宽度也不一样,但是字体大小又必须是UI设定的,那么问题来了,
一行你放几个字合适呢?今天分享一种非line-height的实现方式

实现

  • 先看我们的list item布局
1
2
3
4
5
6
7
8
<div className="tech_greenlist_item" key={'list_' + index}>
<div className="tech_greenlist_itemc">
<span className="tech_greenlist_item_title1 ellipsis">{index + 1}</span>
<span className="tech_greenlist_item_title2">{item.xhgh}</span>
<span className="tech_greenlist_item_title3">{item.xm}</span>
<span className="tech_greenlist_item_title4">{item.bjname}</span>
</div>
</div>
  • 最终效果
    list1
    list2

  • 样式表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
.tech_greenlist_item{
font-size: 15px;
color: #505050;
border-bottom: 1px solid #dcdcdc;
height: auto;
line-height: 20px;
padding: 18px 5px 18px 5px;
.tech_greenlist_itemc {
position: relative;
width: 100%;
display: table;
}
.tech_greenlist_item_title1 {
display: table-cell;
vertical-align: middle;
*position: absolute;
*top: 50%;
*left: 0;
text-align: center;
width: 12.93%;
}
.tech_greenlist_item_title2 {
display: table-cell;
vertical-align: middle;
*position: absolute;
*top: 50%;
*left: 0;
text-align: center;
width: 34%;
}
.tech_greenlist_item_title3 {
display: table-cell;
vertical-align: middle;
*position: absolute;
*top: 50%;
*left: 0;
text-align: center;
width: 32.3%;
}
.tech_greenlist_item_title4 {
display: table-cell;
vertical-align: middle;
*position: absolute;
*top: 50%;
*left: 0;
text-align: center;
width: 20%;
}
}

^-^欢迎回复交流^-^


0
赏点咖啡钱^.^