CSS垂直居中问题解决方法
2017-09-15 14:43
465 查看
在实际运用中,经常需要用到垂直居中的地方主要有一下两种情况:
1、导航栏
导航栏常用到的ul,li标签均为块级元素,a标签为行内元素。要使得a标签的文字垂直居中于li中,只需要a标签的高度与li的高度一致皆可。
然而,a标签是行内元素,不能直接设置其height值,因此,可以选择a的dispaly方式为block,即可为之设置高度line-height。具体代码如下:
为了使看起来更直观,我设置了a的边框以及ul的边框,在实际工作中,可以按照不同的要求改变样式。效果图:
![](https://img-blog.csdn.net/20170915155615015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVub3VyZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2、div内容垂直居中
在多数情况下,第一种方法并不适用,因为第一种方法实际上的子元素的高度填满了上级元素。
要在不改变元素高度的情况下设置垂直居中显示,可以通过给父元素的伪元素添加高度实现。
具体代码如下:
效果图:
1、导航栏
导航栏常用到的ul,li标签均为块级元素,a标签为行内元素。要使得a标签的文字垂直居中于li中,只需要a标签的高度与li的高度一致皆可。
然而,a标签是行内元素,不能直接设置其height值,因此,可以选择a的dispaly方式为block,即可为之设置高度line-height。具体代码如下:
<ul class="nav"> <li> <a href="#">首页</a> </li> <li> <a href="#">活动</a> </li> <li> <a href="#">论坛</a> </li> <li> <a href="#">分类</a> </li> </ul>
.nav{ width: 200px; height: 50px; border: 1px solid #007AFF; text-align: center; padding: 0; margin: 0 auto; } .nav li{ margin: 0 auto; display: inline-block; width: 22%; height: 50px; } .nav li a{ display: inline-block; text-decoration: none; line-height: 50px; border: 1px solid #DDDDDD; }
为了使看起来更直观,我设置了a的边框以及ul的边框,在实际工作中,可以按照不同的要求改变样式。效果图:
2、div内容垂直居中
在多数情况下,第一种方法并不适用,因为第一种方法实际上的子元素的高度填满了上级元素。
要在不改变元素高度的情况下设置垂直居中显示,可以通过给父元素的伪元素添加高度实现。
具体代码如下:
<div class="container"> <ul class="tab"> <li> <a href="#">首页</a> </li> <li> <a href="#">活动</a> </li> <li> <a href="#">论坛</a> </li> <li> <a href="#">分类</a> </li> </ul> </div>
.container { width: 80%; margin: 0 auto; height: 200px; border: 1px solid #000000; vertical-align: middle; text-align: center;/*子元素水平居中*/ } /*伪元素撑开容器,使子元素垂直居中*/ .container::before{ height: 100%; vertical-align: middle; content: " "; display: inline-block; } .tab { width: 80%; /*以下两句是垂直居中的重点*/ display: inline-block; vertical-align: middle; /*以上两句是垂直居中的重点*/ border: 1px solid #ddd; height: 40px; text-align: center; line-height: 40px; background: #fff; border-radius: 10px; overflow: hidden; padding: 0; } .tab li { float: left; width: 25%; position: relative; overflow: hidden; } .tab li:before, .tab li:after, .tab li a { -webkit-transition: all 0.5s ease-in-out; transition: all 0.5s ease-in-out; text-decoration: none; } .tab li:before, .tab li:after { content: ""; display: block; } /*竖线*/ .tab li:not(:first-child):after { background: #ddd; height: 20px; width: 1px; left: 0; top: 10px; position: absolute; } .tab li a { display: block; position: relative; z-index: 2; color: #000; font-size: 14px; } .tab li:before { width: 0; height: 0; top: 50%; left: 50%; z-index: 1; position: absolute; } .tab li:hover a { color: #fff; } .tab li:hover:before { box-shadow: 0 0 0 100px #007AFF; } /*竖线消失*/ .tab li:hover+li:after, .tab li:hover:after { height: 0; top: 20px; }
效果图:
相关文章推荐
- CSS解决页面图片水平垂直居中问题的方法
- CSS-垂直|水平居中问题的解决方法总结
- CSS解决未知高度垂直居中的问题
- Div垂直居中及容器内图片垂直居中的CSS解决方法
- CSS解决未知高度垂直居中方法
- CSS 解决表单单行文本框中的文字垂直居中问题
- Div垂直居中及容器内图片垂直居中的CSS解决方法
- IE9不支持CSS line-height的文字垂直居中解决方法
- [教程] [推荐] CSS图片垂直居中方法整理集合 !(常见问题解答)
- [推荐] CSS图片垂直居中方法整理集合 !(常见问题解答)
- 垂直居中及容器内图片垂直居中的CSS解决方法
- div+css解决图片垂直居中问题
- CSS解决DIV垂直居中的问题
- ie9不支持line-height_ie9不支持字体垂直居中兼容问题解决篇_IE9中字体不能垂直居中解决方法
- h2在div IE7中不垂直居中问题解决方法
- CSS解决未知高度垂直居中的问题
- 垂直居中及容器内图片垂直居中的CSS解决方法
- 垂直居中及容器内图片垂直居中的CSS解决方法
- CSS完美解决垂直居中问题
- CSS解决未知高度垂直居中的问题