盒模型

一、基础选择器

*(统配选择器): html, body, body下用于显示的标签
<style>
*
{
width: 20px;
height: 20px;
background-color: #FF0000;
}
</style>
<div>123</div>

div(标签选择器): 该标签名对应的所有该标签
div
{
width: 50px;
height: 20px;
background-color: #FF0000;
}

.(class选择器)(eg: .div => class="div"): 类名为div的所有标签
.div2 {
background-color: brown;
}

#(id选择器)(eg: #div => id="div"): id名为div的唯一标签
#did1 {
background-color: tan;
}

 

二、选择器的优先级

# 理解: 控制范围约精确,优先级越高,所设置的样式就会覆盖优先级低的相同属性样式
# 结论: 优先级顺序  统配 < 标签 < class < id < 行间式 < !important
# 注意: !important书写在属性值后;前
#       行间式后面加上!important可获得最高优先级
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>选择器优先级</title>
    <style>
        #div {
            
        }
​
        .div {
            
        }
​
        div {
            
        }
​
        * {
            width: 100px;
            height: 100px;
            
        }
        /*!important 优先级要强于行间式, 在属性值与;之间设定*/
    </style>
</head>
<body>
    <div class="div" id="div" style="</div>
    <!--总结: 行间式优先级要高于内连外连所有选择器的优先级, 但是不能高于!important-->
</body>
</html>
View Code

三、长度与颜色

# 长度单位: px mm cm em rem vw vh in
'''颜色设置方式:
1.颜色单词
2.#000000 ~ #FFFFFF (#abc == #AABBCC)
3.rgb(0~255, 0~255, 0~255)|rgba(0~255, 0~255, 0~255, 0~1)
'''

 

四、显示方式display

1、标签特性

a、有些标签支持宽高, 有些标签不支持宽高,如span不支持宽高,p,img支持宽高;

b、有些标签同行显示span img, 有些标签异行显示(独占一行)p;

c、有些标签有结束标识span、p, 有些标签没有结束标签(省略了)img link。
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>display</title>
    <style>
        span {
            width: 200px;
            height: 50px;
            background-color: yellow;
        }
        p {
            width: 200px;
            height: 50px;
            background-color: red;
        }
        img {
            width: 200px;
            height: 50px;
        }
    </style>
</head>
<body>
<span>123<i>456</i><b>789</b></span>
<span>123<i>456</i><b>789</b></span><p>123<i>456</i><b>789</b></p>
<p>123<i>456</i><b>789</b></p><img src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=538916491,4234853604&fm=200&gp=0.jpg" alt="">
<img src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=538916491,4234853604&fm=200&gp=0.jpg" alt="">
View Code
2、标签的分类: a、 单标签: br|hr|img|meta|link, 功能具体, 不需要内容, 设置为单标签, 单标签结束符在标签尾部, 可以省略 结论: 主功能

b、双标签: h1|p|span|div, 具有子标签, 包含内容, 设置为双标签, 双标签首尾分离 结论: 主内容
3、display

what: 适用于控制标签在页面中的显示方式的属性
why: 通过设置该属性的不同属性值, 使其在页面中的显示方式达到设定的效果,且对于css的样式支持程度也不一样
'''
display: inline;
1.同行显示
2.只支持部分css样式(不支持宽高)
3.宽高由文本内容撑开
​
display: block;
1.异行显示
2.支持所有css样式
3.设置了宽高就采用设置的值, 宽高也就有默认的特性(后面讲)
​
display: inline-block;
1.同行显示
2.支持所有css样式
3.设置了宽高就采用设置的值
'''
# 总结: 标签的显示方式就是用display属性控制

五、嵌套关系

'''
嵌套关系
why: 页面架构就是由标签一层层嵌套关系形成
​
嵌套关系由一定的规则
1. inline-block类型不建议嵌套任意标签, 所以系统的inline-block都设计成了单标签
2. inline类型只嵌套inline类型的标签
3. block类型可以嵌套任意类型标签(注: hn和p只建议嵌套inline类型标签)
''''''
结果:
1.inline嵌套block和inline-block,不起任何作用, 所以只能嵌套inline
2.inline-block可以嵌套其他类型标签, 但一定要结合vertical-align属性操作, 左右还有一空格间距
*总结: vertical-align:值  # 此处的值有四种可选类型,分别对应不同的对齐方式。
        baseline: 文本底端对齐(默认值)
        top: 标签顶端对齐
        middle: 标签中线对齐
        bottom: 标签底端对齐
3.block任何同行显示
'''
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>嵌套关系</title>
    <style>
        .list {
            display: inline-block;
            vertical-align: middle;  <!--四种可选对齐方式-->
        }
        .box {
            width: 80px;
            height: 35px;
            background-color: #333;
        }
    </style>
</head>
<body>
    <div class="list">
        <div class="box">呵呵呵呵呵呵呵呵呵呵呵呵</div>
    </div>
    <div class="list">
        <div class="box" style="height: 60px">呵呵</div>
    </div>
</body>
</html>
View Code

六、盒模型

'''
总结:
盒模型由四部分组成: margin + border + padding + content
1.margin: 外边距, 控制盒子的位置(布局), 通过左和上控制自身位置, 通过右和下影响兄弟盒子位置(划区域)
            margin-left: -80px;
            margin-top: -80px;
            margin-bottom: 100px;
            margin: 100px 50px;
            起始为上, 顺时针依次赋值, 不足边取对边
            
2.border: 边框, 样式/宽度/颜色 (solid实线 dashed虚线 dotted点状线)
            border-style: solid;
            border-width: 10px;
            border-color: red;
            transparent 透明色
            border: blue dashed 20px;
            
3.padding: 内边距, 从显示角度控制文本的显示区域
            padding: 10px 0 0 10px;
4.content: 内容区域, 由宽 x 高组成
                
注意:
1.margin,padding: 起始为上, 顺时针依次赋值, 不足边取对边
2.要做到文本内移,设置padding, 如果又想显示区域不变, 相应减少content
'''
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>盒模型</title>
    <style>
        body {
            margin: 0;
        }
        /*margin | border | padding | content(width x height)*/
        .box {
            width: 200px;
            height: 200px;
            background-color: orange;/*padding: 10px 10px 10px 10px;*/
            /*padding: 20px 30px;*/
            /*起始为上, 顺时针依次赋值, 不足边取对边*//*border-style: solid;*/
            /*border-width: 10px;*/
            /*border-color: red;*/
            /*transparent透明色*/
            border: blue dashed 20px;/*margin: 100px 50px;*/
            /*起始为上, 顺时针依次赋值, 不足边取对边*/
        }
​
        .box {
            padding: 10px 0 0 10px;
            width: 190px;
            height: 190px;
            /*margin-left: -80px;*/
            /*margin-top: -80px;*/
            margin-bottom: 100px;
        }
    </style>
</head>
<body>
    <div class="box">123</div>
    <div>456</div>
</body>
</html>
View Code

七、盒模型布局

'''
1.上下两个盒子的margin-bottom和margin-top功能相同, 同时出现, 取大值
2.第一个有显示区域的子级会和父级联动(margin-top重叠), 取大值
​
解决2:
1.父级设置border-top
2.父级设置padding-top
'''
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>盒模型布局</title>
    <style>
        div {
            width: 78px;
            height: 33px;
            background-color: orange;
            border: 1px solid black;
        }
        /*前提: 盒子显示区域 80 x 35*/
        .d1 {}
        .d2 {
            margin-left: 80px;
            margin-top: -35px;
            /*margin-bottom: 35px;*/
        }
        .d3 {
            margin-left: calc(80px * 2);
            margin-top: -35px;
        }
        .d4 {
            margin-left: calc(80px * 3);
            margin-top: -35px;
        }
        .d5 {
            margin-left: calc(80px * 4);
            margin-top: -35px;
        }
        .d6 {
            margin-left: calc(80px * 5);
            margin-top: -35px;
        }
        .d7 {
            margin-left: calc(80px * 6);
            margin-top: -35px;
        }
    </style>
</head>
<body>
    <!--.d${$}*7-->
    <div class="d1">1</div>
    <div class="d2">2</div>
    <div class="d3">3</div>
    <div class="d4">4</div>
    <div class="d5">5</div>
    <div class="d6">6</div>
    <div class="d7">7</div><hr>
    <!--需求: b1 与 b2 上下间接50px-->
    <style>
        .b1 {
            margin-bottom: 50px;
        }
        .b2 {
            margin-top: 50px;
        }
        /*总结: 上下两个盒子的margin-bottom和margin-top功能相同, 同时出现, 取大值*/
    </style>
    <div class="b1"></div>
    <div class="b2"></div><!--了解: 左右正常叠加-->
    <style>
        .s1 {
            margin-right: 10px;
        }
        .s2 {
            margin-left: 10px;
        }
    </style>
    <span class="s1">1</span><span class="s2">2</span><hr><style>
        .sup {
            width: 200px;
            height: 200px;
            background-color: orange;
            /*margin-top: 40px;*/
            /*border-top: 1px solid black;*/
            padding-top: 10px;
        }
        .sub1 {
            /*border: 1px solid red;*/
            width: 50px;
            height: 50px;
            background-color: red;
            margin-top: 50px;
        }
        .sub2 {
            width: 50px;
            height: 50px;
            background-color: pink;
            margin-top: 50px;
        }
        /*总结: 第一个有显示区域的子级会和父级联动(margin-top重叠), 取大值*/
        /*解决方案: 1.父级设置border-top | 2.父级设置padding-top*/
    </style>
    <section class="sup">
        <section class="sub1"></section>
        <section class="sub2"></section>
    </section>
</body>
</html>
View Code

 

 

 

posted @ 2019-01-16 19:55  zhao_peng  阅读(219)  评论(0编辑  收藏  举报