首頁  >  文章  >  web前端  >  css垂直居中的整理總結

css垂直居中的整理總結

高洛峰
高洛峰原創
2017-02-27 15:15:221200瀏覽

前言:這是筆者學習後自己的理解與整理。如果有錯誤或疑問的地方,請大家指正,我會持續更新!

垂直居中用到的地方有很多,解決的方法也有很多。

已知元素寬度 可以用position定位+ margin負值的方法

#絕對定位+ 4個方向全部0px + margin:auto可以做到基於父容器水平垂居中;如果只需要垂直居中,那可以把left和right刪掉,並且水平居中的方法也很多
絕對定位+ 左50% + margin左:寬度一半的負值可以做到水平居中 右也可以
絕對定位+ 上50% + margin上:高度一半的負值可以做到垂直居中 底部也可以

css垂直居中的整理總結


<!DOCTYPE html><html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                padding: 0;
                margin: 0;
            }
            .wrapper{
                width: 500px;
                height: 500px;
                background: #f90;
                left: 0;
                right: 0;
                top: 0;
                bottom: 0;
                position: absolute;
                margin: auto;
                /*绝对定位 + 4个方向全部0px + margin:auto 可以做到基于父容器水平垂居中*/
                /*如果只需要垂直居中,那可以把left和right删掉,并且水平居中的方法也很多*/
            }
            .content{
                width: 100px;
                height: 200px;
                background: #0f8;
                position: absolute;
                /*position: absolute基于第一个不是position:static的父级元素定位*/
                left: 50%;
                top: 50%;
                margin-left: -50px;
                margin-top: -100px;
                /*绝对定位 + 左50% + margin左:宽度一半的负值 可以做到水平居中  右也可以*/
                /*绝对定位 + 上50% + margin上:高度一半的负值 可以做到垂直居中  底部也可以*/
            }
        </style>
    </head>
    <body>
        <p class="wrapper">
            <span class="content"></span>
        </p>
    </body></html>


#View Code

# 未知元素寬度




# 可以用position定位+ transform:translate(x,y)移動

絕對定位+ 上50% + 下50% + transform:translate(-50%,-50%) 可以做到垂直居中css垂直居中的整理總結

<!DOCTYPE html><html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                padding: 0;
                margin: 0;
            }
            .wrapper{
                width: 500px;
                height: 500px;
                background: #f90;
                left: 0;
                right: 0;
                top: 0;
                bottom: 0;
                position: absolute;
                margin: auto;
                /*绝对定位 + 4个方向全部0px + margin:auto 可以做到基于父容器水平垂居中*/
                /*如果只需要垂直居中,那可以把left和right删掉,并且水平居中的方法也很多*/
            }
            .content{
                width: 100px;
                height: 200px;
                background: #0f8;
                position: absolute;
                /*position: absolute基于第一个不是position:static的父级元素定位*/
                left: 50%;
                top: 50%;
                transform: translate(-50%,-50%);
                /*transform变化、使...变形、转换;transform属性应用于元素的2D或3D转换。这个属性允许你将元素移动,旋转,缩放,倾斜*/
                /*translate平移,是transform的属性值的一部分*/
                /*transition过渡、转变;可多个样式的变换效果*/
            }
        </style>
    </head>
    <body>
        <p class="wrapper">
            <span class="content"></span>
        </p>
    </body></html>


#p中img圖片垂直置中


可以用vertical-align:middle,但這個屬性只有在inline-block類型(inline也有影響)的元素身上起作用,vertical-align的理解我得繼續學習下,也歡迎大家指正


方法一:圖片vertical-align:middle + 父元素的height與line-height一致


###
<!DOCTYPE html><html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                padding: 0;margin: 0;
            }
            .wrapper{
                height: 300px;
                line-height: 300px;
                width: 300px;
                margin:100px auto;
                background: #f90;
                text-align: center;
            }
            .wrapper img{
                width: 150px;
                vertical-align: middle;
            }
        </style>
    </head>
    <body>
        <p class="wrapper">
            <img src="images/1.jpg" alt="美女" title="美女"/>
        </p>
    </body></html>
####### #########View Code#########方法二:父元素設定display:table-cell與vertical-align############
<!DOCTYPE html><html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                padding: 0;margin: 0;
            }
            .wrapper{
                width: 300px;
                height: 300px;
                background: #f90;
                text-align: center;
                vertical-align: middle;
                display: table-cell;
            }
            .wrapper img{
                width: 150px;
            }
        </style>
    </head>
    <body>
        <p class="wrapper">
            <img src="images/1.jpg" alt="美女" title="美女"/>
        </p>
    </body></html>
## #更多css垂直居中的整理總結相關文章請關注PHP中文網! ################
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn