DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS3基礎 >> 13.6 盒子內部對齊box-pack屬性與box-align屬性
13.6 盒子內部對齊box-pack屬性與box-align屬性
編輯:CSS3基礎     

當彈性元素與非彈性元素混合排版時,有可能會出現所有子元素的尺寸大於或小於盒子的尺寸,從而出現盒子空間不足或者富余的情況。這時就需要一種方法來管理盒子的空間。如果子元素的總尺寸小於盒子的尺寸,則可以使用box-align和box-pack屬性進行管理。

CSS3新增的box-pack屬性和box-align屬性,分別用於定義盒元素內部“子元素”的水平方向和垂直方向上的富余空間管理方式。這些對齊方式,對盒元素內部的文字、圖形以及子元素都是有效的。

一、水平對齊box-pack屬性

box-pack屬性可以在水平方向上對盒子的富余空間進行管理。

語法:

box-pack:取值;

說明:

box-pack屬性取值如下:

box-pack屬性取值 屬性值 說明 start 所有子元素都顯示在盒子的左側,富余的空間顯示在盒子的右側 end 所有子元素都顯示在盒子的右側,富余的空間顯示在盒子的左側 justify 富余的空間在子元素之間平均分配。在第一個子元素之前和最後一個字元素之後不分配空間 center 富余的空間在盒子的兩側平均分配

二、垂直對象box-align屬性

box-align屬性可以在垂直方向上對盒子的富余空間進行管理。

語法:

box-align:取值;

說明:

box-align屬性取值如下:

box-align屬性取值 屬性值 說明 start 所有子元素沿著盒子的上邊緣排列,都顯示在盒子的上部,富余的空間顯示在盒子的底部 end 所有子元素沿著盒子的下邊緣排列,都顯示在盒子的底部,富余的空間顯示在盒子的上部 center 富余的空間在盒子的上下兩側平均分配,即上面一半,下面一半 baseline 所有盒子沿著它們的基線排列,富余的空間可前可後顯示 stretch 每個子元素的高度被調整到適合盒子的高度顯示

三、實際應用

在CSS2中,如果想要讓文字垂直居中,往往都是設置height屬性值等於line-height屬性值 ,不過學習了這一節,我們只要讓div元素使用box-align屬性(排列方向默認為horizontal),文字就可以垂直居中了。

舉例1:文字自適應居中(包括垂直居中和水平居中)

在線測試
 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>盒子內部對齊box-pack屬性與box-align屬性</title>
    <style type="text/css">
        div
        {
            width:200px;
            height:160px;
            display:-webkit-box;
            -webkit-box-align:center;
            -webkit-box-pack:center;
            background-color:pink;
        }
    </style>
</head>
<body>
    <div> 學習網</div>
</body>
</html>

在浏覽器預覽效果如下:

分析:

如果想要實現“無論元素高度如何改變,文字都能垂直居中”的自適應高度的話,假如我們使用“height屬性值等於line-height屬性值”的方法,就不可能實現了。但是使用box-pack和box-align屬性卻能夠輕松實現。

大家可以在“在線代碼測試”中自行修改div元素高度,會發現:無論高度如何變化,文字都能垂直居中。

上面這種方法,不僅可以實現單行文字居中,還可以實現多行文字居中,大家可以嘗試一下!

舉例2:圖片自適應居中(包括垂直居中和水平居中)

在線測試
 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>盒子內部對齊box-pack屬性與box-align屬性</title>
    <style type="text/css">
        #control
        {
            margin-bottom:10px;
        }
        #view
        {
            width:160px;
            height:100px;
            display:-webkit-box;
            -webkit-box-orient:horizontal;
            -webkit-box-align:center;
            -webkit-box-pack:center;
            border:1px solid silver;
        }
    </style>
    <script src="jquery-1.11.3.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $("#range_width").change(function () {
                var num = $(this).val();
                $("#value_width").text(num + "px");
                $("#view").css("width", num + "px");
            });
            $("#range_height").change(function () {
                var num = $(this).val();
                $("#value_height").text(num + "px");
                $("#view").css("height", num + "px");
            });
        })
    </script>
</head>
<body>
    <div id="control">
        寬度:<input id="range_width" type="range" min="160" max="320" value="160"/><span id="value_width">160px</span><br />
        高度:<input id="range_height" type="range" min="100" max="240" value="100"/><span id="value_height">100px</span>
    </div>
    <div id="view"><img src="../App_images/lesson/run_css3/css3.png" alt=""/></div>
</body>
</html>

在浏覽器預覽效果如下:

分析:

其實圖片的自適應居中,跟文字的自適應居中是一樣的。我們只需要使用“display:box”定義外層元素為彈性盒子模型,然後使用“box-pack:center;”和“box-align:center;”即可。

以後凡是遇到自適應居中問題,我們都可以嘗試使用以上方法來解決,非常好的一個方法。其實,對於box-pack屬性和box-align屬性,基本掌握center這個屬性值就行了,其他屬性值用得不多,因此不在此啰嗦講解。如果你想要深入了解,請自行找度娘。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved