盒模型

  自学前端2个月了,感觉没有什么实感,到底学到什么程度,才可以找到一份合适的工作,很迷茫。

  只能总结自己所学,什么是盒模型呢?

  网页中任何一个元素都可以视为一个盒子,由里到外,盒模型包括外边界(margin)、边框(border)、内边界(padding)和内容(content)。

  

  盒模型基本分为3种:

  CSS3属性 box-sizing

  1、标准模型 content-box , width = content

  2、IE模型 border-box ,width = content + padding + border

  3、padding-box

 

  JS获得box宽高的方式:

  1、dom.offsetWidth (最为实用)

  2、window.getComputedStyle(dom).width

  3、dom.style.width (只能获取行间样式)

  4、dom.currentStyle.width (IE)

  5、dom.getBoundingClientRect().width

 

  边距重叠

  1、父子关系边距重叠:子元素有边距,父元素没有边距,导致父元素会产生边距

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <style>
 8     .box {
 9         width: 100px;
10         height: 100px;
11         background: #000000;
12     }
13 
14     .child-box {
15         width: 50px;
16         height: 50px;
17         background: #f25d8e;
18         margin-top: 20px;
19     }
20 </style>
21 <body>
22 <section>
23     <div class="box"></div>
24     <div class="box">
25         <div class="child-box"></div>
26     </div>
27 </section>
28 </body>
29 </html>

 

  2、同级关系边距重叠:同级元素各自有上下边距时,垂直方向上下边距会重叠,取重叠后,2个元素的距离取较大的边距

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <style>
 8     .box {
 9         width: 100px;
10         height: 100px;
11         background: #000000;
12         margin: 20px 0 50px;
13     }
14 </style>
15 <body>
16 <section>
17     <div class="box"></div>
18     <div class="box"></div>
19 </section>
20 </body>
21 </html>

 

  解决父子关系边距重叠:

  1、加入before

.box:before {
        content: '';
        display: table;
}

  2、加入overflow:hidden

<div class="box" style="overflow: hidden">
        <div class="child-box"></div>
</div>

  3、display:inline-block

<div class="box" style="display: inline-block">
        <div class="child-box"></div>
</div>

  4、在对应位置padding

<div class="box" style="padding-top: 1px">
        <div class="child-box"></div>
</div>

  5、在对应位置添加border

<div class="box" style="border-top: 1px solid #000;">
        <div class="child-box"></div>
</div>

  6、浮动

.child-box {
        width: 50px;
        height: 50px;
        background: #f25d8e;
        margin-top: 20px;
        float: left;
    }

  

  解决同级关系边距重叠:

  1、浮动

<div class="box" style="float: left;">

  2、inline-block

<div class="box" style="display: inline-block">

  3、第二个元素添加一个父级,在父级添加overflow:hidden,转化成处理父级关系边距重叠, 同理用before也可以这么处理

<div class="box"></div>
<div style="overflow: hidden">
        <div class="box"></div>
</div>

 

posted @ 2018-10-22 16:37  ConsolePlay  阅读(156)  评论(0编辑  收藏  举报