CSS 垂直居中的方法

本文详细介绍了CSS实现垂直居中的多种方法,包括设置line-height、添加伪元素、利用display:table-cell、绝对定位和transform、弹性盒Flex等。适用于单行行内元素、多行行内元素以及块元素的垂直居中布局。
CSS垂直居中

针对单行行内元素

  • 设置行高line-height

用法:将line-height设置为和父元素高度一样的值,即在行内元素的上下都加行高的1/2;或直接设置父元素的高度为line-height

适用范围:“单行”的行内元素(inline、inline-block)。如果是多行,还将line-height设置为高度一样的值时,会“溢出”父元素。

  • 添加伪元素

vertical-align:middle,指的是父元素内的所有元素垂直位置相互居中,并不是相对于外框的高度垂直居中,即子元素的“中心”在一条直线上。

所以,可以利用添加伪元素的方式,将伪元素的高度设置为100%,这样其他元素就会达到居中的效果。

适用范围:子元素为“单行”的行内元素(inline、inline-block)。如果是多行行内元素,会“溢出”父元素;如果是块元素,则会被“挤出”父元素

     /* 利用伪元素 */
        .box1{
            height: 200px;
            width: 500px;
        }
        .box1::before{
            content: "";
            width: 0;
            height: 100%;
             /* verticale-align是针对行内元素,所以记得要将display设置为inline-block */
            display: inline-block;
            vertical-align: middle;
        }

针对多行行内元素

  • 利用假表格和vertical-aligh属性

用法:给父元素设置disalay:table-cell和vertiacal-align:middle属性

适用范围:修改display属性时可能造成其他样式属性的连动影响,要注意。

        .box1{
            height: 200px;
            width: 500px;
            background-color: aqua;
            display: table-cell;
            vertical-align: middle;
        }

针对块元素

  • 利用假表格和vertical-aligh属性

用法:给父元素设置disalay:table-cell和vertiacal-align:mideele属性

  • 使用绝对定位和transform(子元素不定高度)

用法:父元素为相对定位;子元素为绝对定位;设置transform属性:

原理:translateY,改变垂直位置,如果使用百分比为单位,则以元素本身的长宽为基准

        /* 方法五:使用定位和transform */
       .cart{
            position: absolute;
            top:50%;
            transform:translateY(-50%)
        }
  • 使用绝对定位和margin-top(子元素定高度)

用法:父元素为相对定位;子元素为绝对定位;设置margin-top:

        .cart{
            height: 20px;
            position: absolute;
            top:50%;
            margin-top:-10px;
        }
  • 使用绝对定位和margin:auto(子元素定高度)

原理:利用CSS的垂直布局,和绝对定位下的计算方式

        /* 使用绝对行为和margin:auto */
        .cart{
            height: 20px;
            position: absolute;
            top:0;
            bottom:0;
            margin: auto;
        }
  • 使用弹性盒Flex

用法:父元素添加display:flex和align-items:center属性

        .box1 {
            width: 100px;
            height: 100px;
            /*利用弹性盒*/
            display:flex;
            align-items: center;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值