css3之transform屬性實現div不定寬高垂直水平居中

transform的做用

transform 屬性向元素應用 2D 或 3D 轉換。該屬性容許咱們對元素進行旋轉、縮放、移動或傾斜。(w3cschool)css

transform的兼容性

transform的兼容性仍是比較樂觀的。IE9如下不兼容,IE9支持代替的-ms-transform屬性不過只支持2D轉換。web

谷歌和Safari支持代替的-webkit-transform屬性。IE9以上、火狐和歐朋是兼容的。瀏覽器

 

想必你們在實際項目中確定會碰見div不定寬和高垂直水平居中的問題。記得之前都是用js去實現。spa

其實用css來實現也有好幾種方法。可是我的以爲仍是用transform來實現更簡單和方便就是不兼容IE9如下瀏覽器。code

如今給你們展現最近項目當中運用到的實例orm

在寫輪播圖的時候下面那些圓點按鈕是根據圖片張數來肯定按鈕個數的。因此在寫代碼時就不能固定承載這些按鈕元素的寬,並且還要居中顯示。blog

       <div class="scroll">
            <div class="scroll_pic">
                <a href="#"><img src="img/pic1.jpg" alt=""/></a>
                <a href="#"><img src="img/pic2.jpg" alt=""/></a>
                <a href="#"><img src="img/pic3.jpg" alt=""/></a>
                <a href="#"><img src="img/pic.jpg" alt=""/></a>
            </div>
            <ul>
                <li class="scroll_in"></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </div>
.scroll {
    width: 720px;
    height: 410px;
    margin: 0 auto;
    margin-top: 100px;
    overflow: hidden;
    position: relative;
}

.scroll ul {
    padding: 10px 0px;
    -webkit-transform: translateX(-50%);
    -ms-transform: translateX(-50%);
    transform: translateX(-50%);
    position: absolute;
    bottom: 0px;
    left: 50%;
}

.scroll ul li {
    float: left;
    margin: 0px 5px;
    width: 16px;
    height: 16px;
    border-radius: 16px;
    border:1px #73B613 solid;
    background: #FCBE47;
    box-sizing: border-box;    
}

.scroll ul li.scroll_in{
    background:#FF6600;
}

上面實例當中承載這些按鈕的是一個ul元素,ul元素沒用定寬高,寫了一個定位left:50%離左邊百分之五十,若是不寫transform的話這樣並不居中,右邊寬度會包括自身ul的寬度。圖片

transform: translateX(-50%); 這一句的做用就是讓ul相對自身位置水平左移自身50%的寬度。這樣就恰好實現咱們想要的效果。
it

在實際項目當中咱們用的多的還有就是模態框,用div模擬彈窗效果。io

上圖中的圖片是水平垂直居中的。

<div class="demo">
   <img src="img/pic3.jpg" />
</div>
.demo{
    position: fixed;
    top:50%;
    left:50%;
    transform:translate(-50%,-50%);
    -webkit-transform: translateX(-50%);
    -ms-transform: translateX(-50%);
}

其實上面實例和咱們寫彈窗讓其居中是同樣的。是否是很簡單,有了這個咱們就不要用寫這麼多js求來求去的了。

相關文章
相關標籤/搜索