1. 程式人生 > >KHL 002 11-計算機-本職-前臺 盒模型

KHL 002 11-計算機-本職-前臺 盒模型

寬度 關系 窗口 tle type 移位 盒模型 oot 屬性

CSS 盒模型

CSS中的盒模型

  • inline

  • inline-block

  • block

  • table

  • absolute position

  • float

盒子3D模型

技術分享

可以看出:
其中 padding 、content 、background-image 、background-color 四者構成Z軸;border與margin、padding三者之間應該是平面上的並級關系,並不能構成Z國的層疊關系。

重置盒模型解析模型

  • W3C的標準盒模型

外盒尺寸計算(元素空間尺寸)
element 空間高度 = 內容高度 + 內距 + 邊框 + 外距
element 空間寬度 = 內容寬度 + 內距 + 邊框 + 外距

內盒尺寸計算(元素大小)
element 空間高度 = 內容高度 + 內距 + 邊框(height為內容高度)
element 空間寬度 = 內容寬度 + 內距 + 邊框(width為內容高度)

  • ID傳統下盒模型(IE6以下,不包括IE6版本或QuirksMode下IE5.5+)

外盒尺寸計算(元素空間尺寸)
element 空間高度 = 內容高度 + 外距(height為內容高度)
element 空間高度 = 內容高度 + 外距(width為內容高度)

內盒尺寸計算(元素大小)
element 空間高度 = 內容高度 +(height包含了元素內容寬度、邊框、內距)
element 空間寬度 = 內容寬度 +(width包含了元素內容寬度、邊框、內距)

目前瀏覽器大部分元素都是基於W3C標準的盒模型,但是對於form中部分元素還基於傳統的盒模型,如input中的submit、reset、button和select等元素,這樣如果給其設置border和padding它們也只會往元素盒內延伸。

CSS3盒模型屬性

box-sizing屬性的語法及參數

  • centent-box : 默認值,讓元素維持W3C的標準盒模型

  • border-box : 此值會重新定義CSS2.1中盒模型組成的模式,讓元素維持IE傳統的盒模型

  • inherit :此值使元素繼承父元素的盒模型模式

box-sizing 使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>KHL 作品 計算機 知識管理系統 小試 博客系統</title>

    <link rel="stylesheet" type="text/css" href="../assets/css/reset.css" />
    <link rel="stylesheet" type="text/css" href="../assets/css/base.css" />
    <link rel="stylesheet" type="text/css" href="../assets/css/index.css" />


</head>
<body>

<!-- header -->
<div id="header" class="clearfix">
    head
</div>
<!-- /header -->

<!-- seacher -->
<div id="seacher">

</div>
<!-- /seacher -->

<!-- body -->
<div id="body-container">
    <!-- body left -->
    <div id="left-container">
        left
    </div>
    <!-- /body left -->

    <!-- body right -->
    <div id="right-container">
        right
    </div>
    <!-- /body right -->
</div>
<!-- body -->

<!-- footer -->
<div id="footer" class="clearfix">
    footer
</div>
<!-- /footer -->

<script type="text/javascript" src="../assets/jquery/jquery.min.js"></script>
<script type="text/javascript">
    $(function () {
        console.log(jc four!);
    });
</script>
</body>
</html>

 1 #header{
 2     width: 100%;
 3     height: 50px;
 4     background-color: #48525E;
 5 }
 6 
 7 #seacher{
 8     width: 100%;
 9     height: 70px;
10     background-image: url("../image/seacher-bg.jpg");
11 }
12 
13 #body-container{
14     width: 1200px;
15     margin: 0 auto;
16 }
17 
18 #left-container{
19     box-sizing: border-box;
20     float: left;
21     width: 900px;
22     height: 400px;
23     background-color: #ffffff;
24     padding-left: 20px;
25     padding-right: 20px;
26     padding-top: 20px;
27 }
28 
29 #right-container{
30     float: right;
31     width: 280px;
32     height: 400px;
33     padding-top: 20px;
34 }
35 
36 #footer{
37     width: 100%;
38     height: 120px;
39     background-color: #48525E;
40 }

技術分享

如果此時給left-container添加20px的內邊距,則顯示如下:

技術分享

對於這種情況,可以把#left-containerbox-sizing設置為border-box,這樣就不必再修改寬度或者再內嵌div了

 1 #left-container{
 2     box-sizing: border-box;
 3     float: left;
 4     width: 900px;
 5     height: 400px;
 6     background-color: #ffffff;
 7     padding-left: 20px;
 8     padding-right: 20px;
 9     padding-top: 20px;
10 }
11 
12 #right-container{
13     float: right;
14     width: 280px;
15     height: 400px;
16     padding-top: 20px;
17 }

技術分享

可以看到left區域已經有了20px的內邊距,且布局並沒有打亂。

overflow屬性

此屬性用於指定如何顯示盒中容納不下的內容

overflow-x/overflow-y

  • visible : 默認值,不剪切容器中的任何內容、不添加滾動條,元素被剪切為包含對象的窗口大小,且clip屬性設置將失效

  • auto : 在需要時剪切內容並添加滾動條

  • hidden : 內容溢出容器時,所有內容被隱藏且不顯示滾動條

  • scroll : 不論內容是否溢出容器,overflow-x都會顯示滾動條,而overflow-y會顯示縱向滾動條

  • no-display : 當內容溢出容器時不顯示元素,此時類似於添加了display:none聲明

  • no-content : 當內容溢出時不顯示內容,此時類似於添加了visibility:hidden聲明

resize 屬性

  • none : 用戶不能拖動元素修改尺寸大小

  • both : 可以拖動元素同時修改元素的寬度和高度

  • horizontal : 可修改寬度

  • vertical : 可修改高度

  • inherit : 繼承父元素的resize屬性值

outline

outline主要是用來在元素周圍繪制一條輪廓線,可以直到突出元素的作用。CSS3中對outline作了一定的擴展

  • outline-color : 定義輪廓線的顏色,默認值為黑色

  • outline-style : 定義輪廓線的樣式,默認為none

  • outline-width : 定義輪廓線的寬度,默認參數為:medium,表示繪制中等寬度的輪廓線

  • outline-offset : 定義輪廓線的偏移位置的數值,此值可取負數值。為正數時向外偏離,為負數時表示向內偏移

  • inherit : 元素繼承父元素的outline效果

與boeder對比

  • boeder屬性盒模型的一部分,直接影響盒子的大小,outline不影響

  • outline的各邊都一樣,不能單獨設置

  • outline可能是非矩形的,如果元素是多行,外輪廓線就至少是能夠包含該元素所有框的外輪廓。

  • border只能向外擴展,outline可以向內擴展

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>KHL 作品 計算機 知識管理系統 小試 博客系統</title>
 6 
 7     <style type="text/css">
 8 
 9         .bar{
10             width: 100%;
11             height: 50px;
12             overflow: hidden;
13         }
14 
15         #one{
16             width: 200px;
17             height: 35px;
18             border: 1px solid red;
19             line-height: 35px;
20             text-align: center;
21             margin: 0 auto;
22             outline: 10px solid #ccc;
23 
24         }
25 
26         #two{
27             width: 200px;
28             height: 35px;
29             border: 1px solid red;
30             line-height: 35px;
31             text-align: center;
32             margin: 0 auto;
33             outline: 10px solid #ccc;
34             outline-offset: 5px;
35         }
36 
37         #three{
38             width: 200px;
39             height: 35px;
40             border: 1px solid red;
41             line-height: 35px;
42             text-align: center;
43             margin: 0 auto;
44             outline: 10px solid #ccc;
45             outline-offset: -5px;
46         }
47     </style>
48 
49 
50 </head>
51 <body>
52     <div id="one"></div>
53 
54     <div class="bar"></div>
55 
56     <div id="two">outline效果</div>
57 
58     <div class="bar"></div>
59 
60     <div id="three">outline效果</div>
61 
62 </body>
63 </html>

技術分享

KHL 002 11-計算機-本職-前臺 盒模型