美文网首页Web前端之路让前端飞程序员
2018-06-06 盒模型、外边距叠加和定位模型

2018-06-06 盒模型、外边距叠加和定位模型

作者: eb247a4a4211 | 来源:发表于2018-06-06 19:21 被阅读16次
css相关知识.png

一、盒模型

1.1 标准模式
width = content.width;设置的宽度只等于内容的宽度
height=content.height;设置的高度只等于内容的高度

标准盒模型.png

1.2 怪异模式(IE浏览器)
在IE6,在混杂模式中使用自己的非标准盒模型。这些浏览器的width属性不是内容的宽度而是内容,内边距和边框的宽度总和。
width = content.width + padding.width + border.width
height = content.height + padding.height + border.height


怪异盒模型.png

IE现在的版本的盒模型是符合标准模式的。

1.3 box-sizing
border-box:怪异模式
content-box:标准模式

二、外边距叠加

当两个或更多垂直边距相遇时,它们将形成一个边距,这个外边距的高度等于两个发生叠加的外边距的高度中的较大者。

2.1 当一个元素包含在另一个元素中时(假设没有内边距或边框将外边距分开),它们的顶和或底外边距也会发生叠加。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css">
        body{
            padding: 0px;
            margin: 0px;
        }
        .box1{
            width: 200px;
            height: 200px;
            background-color: #e8e8e8;
            margin-top: 10px;
        }
        .box2{
            width: 200px;
            height: 150px;
            background-color: green;
            margin-top:20px;
        }
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
</body>
</html>
叠加1.png

然而在有内边距和边框分开的情况下,就可以消除这种叠加效果的产生。

.box1{
    width: 200px;
    height: 200px;
    background-color: #e8e8e8;
    margin-top: 10px;
    border: 1px solid yellow;
}
.box2{
    width: 200px;
    height: 150px;
    background-color: green;
    margin-top:20px;
    border: 1px solid red;
}
添加边框.png

所以,避免叠加1效果的产生的最好方法就是为元素设置上内边距和边框。

2.2 当一个元素出现在另一个元素上面时,第一个元素的底外边距和第二个元素的顶外边距发生叠加。

.box1{
    width: 200px;
    height: 150px;
    background-color: #e8e8e8;
    margin-bottom: 30px;
}
.box2{
    width: 200px;
    height: 150px;
    background-color: green;
    margin-top: 20px;
}
叠加2.png

但是这种情况下为两个元素都添加边框就不起效果了

.box1{
    width: 200px;
    height: 200px;
    background-color: #e8e8e8;
    margin-bottom: 10px;
    border: 1px solid yellow;
}
.box2{
    width: 200px;
    height: 150px;
    background-color: green;
    margin-top:20px;
    border-top: 1px solid green;
}
添加边框.png

消除这种情况出现的最好方法就是,为相邻的元素设定相同的外边距,要设置margin-top就都设置margin-top

2.3 一个空元素,它有外边距,但是没有边框和内边距。在这种情况下,顶外边距和底外边距就碰到了一起,它们会发生叠加。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css">
        body{
            padding: 0px;
            margin: 0px;
        }
        .box1{
            width: 200px;
            margin-top: 30px;
            margin-bottom: 20px;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
</body>
</html>
叠加3.png

实际上,从效果上面看上去,margin-top和margin-bottom都是依旧存在的,然而接下来再添加一个元素的时候就会发现区别。

所以避免这种外边距叠加的效果出现,最好的就是千万不要为空元素添加外边距。

2.4 上面的空元素的外边距如果碰到另一个元素的外边距,会继续发生叠加,正好可以看到上面一种情况叠加的效果。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css">
        body{
            padding: 0px;
            margin: 0px;
        }
        .box1{
            width: 200px;
            margin-top: 30px;
            margin-bottom: 20px;
        }
        .box2{
            width: 200px;
            margin-top: 30px;
            margin-bottom: 20px;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2">外边距叠加</div>
</body>
</html>
叠加4.png

叠加4的效果是在叠加3的margin-top和margin-bottom叠加成为margin-bottom之后,然后与下一个元素的margin-top继续叠加,产生现在的效果。

只有普通文档流中块框的垂直外边距才会发生外边距叠加。行内框、浮动框或绝对定位框之间的外边距不会叠加。

三、定位模型 :普通流、浮动和绝对定位。

3.1 普通流

  1. 除非专门指定,否则所有框都在普通流中定位。顾名思义,普通流中元素框的位置由元素在HTML中的位置决定。

  2. 相对定位实际上被看做普通流定位模型的一部分,因为元素的位置是相对于它在普通流中的位置的。

3.2 浮动:脱离文档流

  1. float属性
    float:left
    float:right
    clear:both

  2. 清除浮动
    请参考2018-05-23 清除浮动、左边固定右边自适应、水平垂直居中这篇文章

3.3 绝对定位 :脱离文档流

  1. position:absolute
    绝对定位的元素的位置是相对于距离它最近的那个已定位的祖先元素确定的。如果元素没有已定位的祖先元素(也就意味着一定要使用position设置定位方式),那么它的位置是相对于包含块的。

  2. 固定定位 position:fixed
    固定定位是绝对定位的一种,差异在于固定元素的包含块是视口,这就使得我们能够创建总是出现在窗口中相同位置的浮动元素。

3.举例:右下角回到顶部
我们经常在网站上看到在页面下拉时右下角出现回到顶部的按钮,那么这样的按钮就是通过固定定位来实现的,往往需要通过使用JS来控制其动态效果。

.top_btn{
    position: fixed;
    right: 10px;
    bottom: 10px;
}

相关文章

  • 2018-06-06 盒模型、外边距叠加和定位模型

    一、盒模型 1.1 标准模式width = content.width;设置的宽度只等于内容的宽度height=c...

  • CSS基础第三次课

    本节大纲 盒模型、内边距、外边距、边距合并 定位、相对定位、绝对定位 浮动、清除浮动、文档流概念 课程内容 盒模型...

  • 理解盒模型

    1:怎么理解盒模型 ? 解: 标准模型 和 IE盒模型. 由外边距margin、内边距padding、边框bord...

  • 盒模型(9)

    掌握盒模型相关知识点了解IE盒模型和W3C 盒模型区别 问答 一、盒模型包括哪些属性? 内边距(上右下左) 外边距...

  • 盒子模型.md

    盒子模型有两种IE盒子模型和标准盒子模型。盒子由内容,内边距,外边距,边框和外边距组成。 在标准盒子模型下,整个盒...

  • 盒子模型

    标准盒模型 IE盒模型 盒模型的转化 css 外边距合并 上下方向相邻的元素框垂直相遇时,外边距会合并,合并后的外...

  • css-盒模型和box-sizing

    盒模型: 可以看到,一个盒模型包括margin(外边距)-->border(边框)-->padding(内边距)-...

  • hc16(13-1~14-2)

    盒模型代码简写 还记得在讲盒模型时外边距(margin)、内边距(padding)和边框(border)设置上下左...

  • 慕课网6 css 简写 颜色值 长度值

    盒模型代码简写 还记得在讲盒模型时外边距(margin)、内边距(padding)和边框(border)设置上下左...

  • HTML+CSS学习笔记 (13) - CSS代码缩写,占用更少

    盒模型代码简写 还记得在讲盒模型时外边距(margin)、内边距(padding)和边框(border)设置上下左...

网友评论

    本文标题:2018-06-06 盒模型、外边距叠加和定位模型

    本文链接:https://www.haomeiwen.com/subject/xjhbsftx.html