zoukankan      html  css  js  c++  java
  • 盒模型

    一、基础选择器

    *(统配选择器): html, body, body下用于显示的标签
    <style>
    *
    {
    width: 20px;
    height: 20px;
    background-color: #FF0000;
    }
    </style>
    <div>123</div>
    
    div(标签选择器): 该标签名对应的所有该标签
    div
    {
     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- 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- 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

     

     

  • 相关阅读:
    IOS Application生命周期
    IOS ViewController 生命周期
    nsinteger 与 int 区别
    判断日期是昨天,今天,明天,后天,其他的显示星期
    改变图片颜色(灰色显示)
    Linux系统管理
    PHP 相关软件下载
    检查域名是否正确解析网站
    定时任务
    BZOJ 3534 [Sdoi2014]重建
  • 原文地址:https://www.cnblogs.com/peng-zhao/p/10279065.html
Copyright © 2011-2022 走看看