【靜態頁面架構】CSS之盒子模型

佐珥玎發表於2018-08-28

CSS架構

盒子模型;

以內容區(顯示文字和影像)

內邊距(內容區至邊距的距離)

邊距(內容區的邊界)

外邊距(元素的邊框之間的距離)

1.邊距;

border屬性;

簡寫屬性用來設定邊距的上(top)右(right)下(bottom)左(left)。寬度,顏色和樣式

<style>
        div{
            width: 200px;
            height: 200px;
            background-color: blue;
            border-right: 5px double darkgray;
            border-bottom: 10px dashed red;
            border-left: 15px dotted lime;
        }
    </style>
</head>
<body>
<div></div>
</body>

盒子的陰影;

以box-shadow屬性設定盒子陰影效果

offset-x表示陰影的水平方向偏移量;
負值為左偏移正值為右偏移

offset-y表示陰影的垂直方向偏移量;
負值為左偏移正值為右偏移

 <style>
        div{
            width:200px;
            height: 200px;
            background-color: blue;
            box-shadow: 3px 3px 3px black;
            /*設定盒子陰影*/
        }
    </style>
</head>
<body>
<div></div>
</body>

邊框圓角;

以border-radius定義來設定邊距的圓角;直角,圓角還是橢圓角

<style>
        div {
            width: 100px;
            height: 100px;
        }
        #qq {
            background-color:  red;
            border-radius: 25px;
        }
        #ww {
            background-color:  blue;
            border-radius: 50px;
        }
        #ee {
            background-color: lime;
            border-radius: 50px 25px;
        }
        img {
            border-radius: 50px;
        }
    </style>
</head>
<body>
<div id="qq"></div>
<div id="ww"></div>
<div id="ee"></div>
<img src="imgs/26.jpg" width="100px">
</body>

邊框影像;

以border-image定義來設定在元素的邊框上的影像

 <style>
        div {
            width: 100px;
            height: 100px;
            /*background-color: lightcoral;*/
            border: 30px solid transparent;
            /*
                邊框的影像 - 類似於背景影像的設定
                * border-image-source - 設定邊框影像的路徑
                * border-image-width - 設定邊框影像的寬度
                * border-image-repeat - 設定邊框影像的平鋪方式
             */
            border-image: url("https://mdn.mozillademos.org/files/4127/border.png") 30;
        }

    </style>
</head>
<body>
<div>愛新覺羅</div>
</body

2.內邊距;

paddying屬性;

也屬於簡寫屬性用來設定盒子的內邊距上,右,下,左

<style>
            #qq{
                width: 200px;
                height: 200px;
                background-color: blue;


                padding-top: 50px;
                <!---->
                padding-right: 100px;

                padding-bottom: 150px;

                padding-left: 200px;
            }
            #hh{
                width: 200px;
                height: 200px;
                background-color: red;
            }
        </style>
</head>
<body>
<div id="qq">
    <div id="hh"></div>
</div>
</body>

3.外邊距;

上外邊距和左外邊距;
以margin-left設定元素的水平方向的位置
值為正數,當前元素向右移動
值為負數,當前元素向左移動
margin-top設定元素垂直方向的位置
值為正數,當前元素向下移動
值為負數,當前元素向上移動

上外邊距和右外邊距

以margin-bottom設定下一個元素的位置
值為正數,下一個兄弟元素向下移動
值為負數,下一個兄弟元素向上移動
margin-right設定下一個元素的位置
值為正數,下一個兄弟元素向右移動
值為負數,下一個兄弟元素向左移動

<style>
        div {
            display: inline-block;
        }
        #d1 {
            width: 200px;
            height: 200px;
            background-color: lightcoral;
            /*
                margin-bottom 下外邊距控制塊級元素的下一個兄弟元素的位置
                * 如果值為正數的話,下一個兄弟元素向下移動
                * 如果值為負數的話,下一個兄弟元素向上移動
             */
            /*margin-bottom: -100px;*/
            /*
                margin-right 右外邊距控制內聯元素或行內塊級元素的下一個兄弟元素的位置
                * 如果值為正數的話,下一個兄弟元素向右移動
                * 如果值為負數的話,下一個兄弟元素向左移動
             */
            /*margin-right: -5px;*/
        }
        #d2 {
            width: 200px;
            height: 200px;
            background-color: yellowgreen;

            margin-left: -5px;
        }

    </style>
</head>
<body>
<div id="d1"></div>
<div id="d2"></div>
</body>

外邊距重疊;

以設定兩個相鄰的元素的外邊距,第一個設定下外邊距第二個設定上外邊距

   <style>
        #qq{
            width: 200px;
            height: 200px;
            background-color: blue;
            margin-bottom: 100px;
            /*id為ww的div元素向下移動100px*/
        }
        #ww{
            width: 200px;
            height: 200px;
            background-color: red;
            margin-top: 200px;
            /*id為ww的div元素向下移動200px*/
        }
    </style>
</head>
<body>
<div id="qq"></div>
<!--<p>愛新覺羅</p>-->
<div id="ww"></div>
</body>

外邊距傳遞;

以設定兩個元素師父子元素,當子元素設定上外邊距,該上邊距會在父級元素內出現

<style>
        #qq{
            width: 200px;
            height: 100px;
            background-color: blue;
            /*設定背景顏色*/
            padding-top: 100px;
            /*為子級元素設定上邊距*/
        }
        #ww{
            width:100px;
            height: 100px;
            background-color: red;
            /*設定背景顏色*/
        }
    </style>
</head>
<body>
<div id="qq">
    <!--必須是父級與子級關係的元素-->
    <div id="ww"></div>
</div>
</body>

內容水平居中;

以margin: 0 auto;父級div設定在元素的水平居中

<style>
        p {
            /*該屬性只對文字內容水平對齊*/
            text-align: center;
            /*文字水平方向居中*/
        }
        div{
            width: 100px;
            height: 100px;
            background-color: blue;
            margin: 0 auto;
        }
    </style>
</head>
<body>
<p>星際戰甲</p>
</body>

4.盒子模型;

塊級元素盒子模型;

可設定寬高,設定高度為其中內容的高度

<style>
        div{
            width: 200px;
            height: 200px;
            background-color: blue;
            border: 1px solid black;
            /*設定邊框的樣式*/
            padding: 50px;
            /*設定內邊距*/
            margin: 50px;
            /*設定外邊距*/
        }
    </style>

</head>
<body>
<div></div>
</body>

內塊級元素盒子模型;

是不可設定寬和高,元素的大小事其中內容撐起

<style>
        span{
            width: 200px;
            height: 200px;
            background-color: red;
            border: 1px solid black;
            padding: 30px;
            /*水平方向內邊距是有效;設定文字內容的水平方向位置*/
            /*垂直方向內邊距是有效;文字內容位置沒有變,而內邊距會向上或向下擴充套件*/
            margin: 30px;
            /*垂直方向上或下的外邊距是無效的
              而水平方向的外邊距是有效的*/
        }
    </style>
</head>
<body>
<span>星際戰甲</span>
</body>

行內塊級元素盒子模型;

不自動換行,可設定寬高;

<style>
        div{
            width: 100px;
            height: 100px;
            border: 1px solid black;
            padding: 30px;
            /*設定內邊距*/
            margin: 30px;
             /*設定外邊距*/
        }
        #qq{
            background-color: red;
        }
        #hh{
            background-color: blue;
        }
    </style>
</head>
<body>
<div id="qq"></div>
<div id="hh"></div>
</body>    

box-sizing屬性;

以box-sizing屬性設定盒子模型;
content-box;為預設值為標準盒子模型
設定為內容區;內邊距;邊框;外邊框
border-box;為怪異盒子模型
設定盒子的大小;外邊距

        #qq {
            width: 200px;
            height: 200px;
            /*
                預設值,標準盒子模型
                * 實際的寬度 = width + padding-left + padding-right + border-left + border-right
                * 實際的高度 = height + padding-top + padding-bottom + border-top + border-bottom
             */
            box-sizing: content-box;

            border: 10px solid black;
            <!--設定邊框-->
            padding: 50px;
            /*設定內邊距*/
            margin: 50px;
            /*設定外邊距*/
            background-color: lightcoral;
        }
        #hh {
            width: 200px;
            height: 200px;
            /*
                怪異盒子模型
                * 實際寬度 = width
                * 實際高度 = height
             */
            box-sizing: border-box;

            border: 10px solid black;
            <!--設定邊框-->
            padding: 50px;
            /*設定內邊距*/
            margin: 50px;
            /*設定外邊距*/
            background-color: green;
        }
    </style>
</head>
<body>
<div id="qq"></div>
<div id="hh"></div>

相關文章