html中的垂直居中实现

在做H5的过程中,经常会遇到文字或者图片的垂直居中问题,试了不同的办法,感觉这是一个困扰前端程序员的难题。网上也能找到许多文章,本文仅列出我所用到过的一些办法。

文字居中

使用line-height

line-height是最简单的让文字居中的办法了,即设置line-height和div高度一样。但这种使用有限制,高度只有使用绝对值,不能使用百分比之类的相对值。
HTML:

<div>this is vertical align text</div>

CSS:

div {
    height: 100px;
    line-height: 100px;
}

如果是多行文字的话,可以这样:
HTML:

<div><span>vertically centered text</span></div>

CSS:

div
{
  height: 200px;
  line-height: 200px;
}

span
{
  display: inline-block;
  vertical-align: middle;
  line-height: 14px; /* <-- adjust this */
}

表格法

可以借助于html的一些标签来实现垂直居中,例如表格就是可以参考的一种。
HTML:

<div class="ext-box" style="width:100%;height:100%">
    <div class="in-box">
        <span>确定</span>
    </div>
</div>

CSS:

.ext-box {
    display: table;
}
.in-box {
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}

在上面的写法中,外层div被设置成了表格显示,内层div被改成了表格的一个单元,利用单元格内垂直居中的属性,实现文字居中。

附上两篇stackoverflow上关于文字居中的帖子,比较有参考意义:

Is it possible to vertically align text within a div?

CSS Center text (Horizontal and Vertical) inside a DIV block

图片居中

之前尝试过使用表格法来设置图片居中,偶尔会出现一些无法严格居中的情形,也没搞清楚到底是为什么,只好尝试别的考虑。

inline-block helper

借助于inline-block相互对齐属性,可以实现图片的居中。
HTML:

<div class=frame>
    <span class="helper"></span><img src="http://jsfiddle.net/img/logo.png" height=21 />
</div>

CSS:

.frame {
    height: 25px;      /* equals max image height */
    width: 160px;
    border: 1px solid red;
    white-space: nowrap;

    text-align: center; margin: 1em 0;
}

.helper {
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}

img {
    background: #3A6F9A;
    vertical-align: middle;
    max-height: 25px;
    max-width: 160px;
}

在上面的代码中,首先设置helper占据frame高度。这个时候,另外一个inline-block标签span就可以中间对齐helper,从而实现图片的居中。当然,这里面的frame也必须是固定高度值。

图片居中,目前只尝试了一个使用办法。附上stackoverflow上的帖子,供大家参考。

How to vertically align an image inside div

可以看出,在对齐的各类办法中,一般都要求高度是固定的。在移动WEB开发中,宽度是固定手机屏大小,但高度一般是可以往下延伸的。不过,我的一般处理办法是尽量避免滚动屏幕,一屏看完所有信息是最好的,所以在设计的时候,布局尽量松散,就是说留有余地,在不同的屏幕上,不会因为这些固定高度的控件挤压布局而出现重叠的情况。

前端开发确实有太多的细节需要考虑,继续积累吧!

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值