zoukankan      html  css  js  c++  java
  • day47 选择器优先级及嵌套关系

    复习

    1.前端: 网页, html + css + js
    2.html三个组成部分:标签,指令和转义字符
    标签: <>包裹, 以字母开头, 可以结合-|数字, 能被浏览器解析的标记
    3.常用的基本标签
    div,a,link,img,p,i,span,b,ul>li,(br/hr),sup,sub.pre,table>thead>tbody>tfoot>tr>th|td
    4.css引入
    行间式:style属性中
    内联式:head标签的style标签中
    外联式:css文件中
    选择器{
        样式块
    }

    今日内容

    css基础选择器
    长度与颜色设置
    display属性样式
    字体|文本相关属性样式
    背景属性样式
    边界圆角属性样式
    盒模型及盒模型布局

    基础选择器

    1.(*)通配选择器:html,body,body下的可用于显示的标签
    2.div(标签选择器):该标签名对用的所有该标签
    3. (.) (class选择器)(eg:.div = class='div'):类名为div的所有标签,可以重名
    4.(id选择器)(eg:#div => id='div'):id名为div的唯一标签
    
    <style>
        div{
             100px;
            height: 100px;
            color: red;
            background-color: green;
        }
        .div1{
             200px;
            height: 200px;
            color: white;
            background-color: black ;
        }
        #div3{
             20px;
            height: 20px;
            color: white;
            background-color: orange ;
        }
    </style>
    <div>123</div>
    <div class="div1">1</div>
    <div class="div2">2</div>
    <div id="div3">2</div>
    
    总结:
    1.在实际开发中,尽量少用或不用标签吗作为选择器,标签名作为选择器一般是该标签处在最内层的时候(使用它的语义或功能时)
    2.内联和外联,相同属性采用处在下面的覆盖上面的,不同属性进行叠加
    3.在css语法选择器中,用.class名来代表class,用#id名来标识id
    4.行间式属于逻辑的最下方,相同的属性一定会覆盖内联和外联
    5.一般不使用行间式单独操作(可读性差),所以用起别名的方式来单独改变其颜色
    6.用class起名,分类别,可以重名,给标签设置唯一标识符是使用id

    选择器的优先级

    理解:控制范围越精确,优先级越高,所设置的样式会覆盖优先级低的相同属性样式
    结论:优先级顺序 通配<标签 < class < id < 行间式 < |important
    行间式优先级要高于内联和外联所有选择器,但是不能高于!important,属性值与分号之间加!important 
    注意: !important书写在属性值后;前
    
    <style>
        #div {
            background-color: yellow;
        }
    
        .div {
            background-color: yellowgreen;
        }
    
        div {
            background-color: green!important;
        }
    
        * {
             100px;
            height: 100px;
            background-color: darkgreen;
        }
        /*!important 优先级要强于行间式, 在属性值与;之间设定*/
    </style>
    <div class="div" id="div" style="</div>

    长度与颜色

    长度单位: 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)
    rgba代表颜色和透明度,0为完全透明,1为不透明
    
    <style>
        .div {
            /*px mm cm em rem vw vh in*/
             10in;
            height: 100px;
            /*颜色:
            1.颜色单词
            2.#000000 ~ #FFFFFF (#abc == #AABBCC)
            3.rgb(0~255, 0~255, 0~255)|rgba(0~255, 0~255, 0~255, 0~1)
            */
            background-color: rgba(255, 0, 0, 0.5);
        }
    </style>
    <div class="div"></div>

    显示方式display

    1.有些标签支持宽高,有些标签不支持宽高
    2.有些标签同行显示,有些标签异行显示(独占一行)
    3.有些标签由结束标识,有些标签没有结束标签(省略了)
    
    不同的标签,在页面中书写的方式不一样,显示效果也不一样,支持的css样式程度也不一样
    分类:
    1.单双标签的分类
    单标签:br,hr,img,meta,link,特性:功能具体,不需要内容,设置为单标签,单标签结束符在标签尾部,可以省略
    eg:<img />,<br />
    双标签:h1,p,span,div,具有子标签,包含内容,设置为双标签,双标签首尾分离
    eg:<h1>内容</h1>
    结论:主内容
    
    <style>
        span{
             200px;
            height: 50px;
            }
        p{
             200px;
            height: 50px;
            background-color: red;
            }
        img{
             200px;
            /*height: 50px;*/
            }
    </style>
    <spam>123<i>456</i><b>789</b></spam>
    <spam>123<i>456</i><b>789</b></spam>
    
    <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="">
    
    
    2.通过display属性值进行划分
    dispaly
        what: 控制标签在页面中的显示方式的属性
        why: 通过设置该属性的不同属性值,使其在页面中的显示方式达到设定的效果,且对于css的样式支持程度也不一样
        1.同行显示inline:只支持部分css样式(不支持宽高),宽高由文本内容撑开
        .o1 {
        display: inline;
        /*
        1.同行显示
        2.只支持部分css样式(不支持宽高)
        3.宽高由文本内容撑开
        */}
        
        
        2.block:异行显示,支持所有css样式,设置了宽高就采用设置的值,宽高也具有默认的特性(后面讲)
        .o2 {
        display: block;
        /*
        1.异行显示
        2.支持所有css样式
        3.设置了宽高就采用设置的值, 宽高也就有默认的特性(后面讲)
        */}
        
        3.inline-block:同行显示,支持所有css样式,设置了宽高就采用设置的值,宽高也具有默认的特性(后面讲)
        
        .o3 {
        display: inline-block;
        /*
        1.同行显示
        2.支持所有css样式
        3.设置了宽高就采用设置的值
        */}
        <owen class="o1">123</owen>
        <owen class="o1">123</owen>
        <hr>
        <owen class="o2">123</owen>
        <owen class="o2">123</owen>
        <hr>
        <owen class="o3">123</owen>
        <owen class="o3">123</owen>
        
    结论:
    1.带有inline的就会同行显示,带有block的就会支持所有css样式
    2.带有inline的都是与内容相关的标签,带有block的主要用来搭建架构的

    嵌套关系

    <style>
        .list {
            display: inline-block;
            vertical-align: middle;
        }
        /*总结: vertical-align
        baseline: 文本底端对齐(默认值)
        top: 标签顶端对齐
        middle: 标签中线对齐
        bottom: 标签底端对齐
        */
        .box {
             80px;
            height: 35px;
            background-color: #333;
        }
    </style>
    <div class="list">
        <div class="box">呵呵呵呵呵呵呵呵呵呵呵呵</div>
    </div>
    <div class="list">
        <div class="box" style="height: 60px">呵呵</div>
    </div>
    
    
    why:页面架构就是由一层层嵌套关系形成的
    嵌套关系有一定的规则:
    1.inline-block类型不建议嵌套任意标签,所以系统的inline-block都设计成了单标签
    2.inline类型只嵌套inline类型的便签
    3.block类型可以嵌套任意类型标签(注:h1-h6和p,只建议嵌套inline类型)
    标签的显示方式就是由display属性
    
    结论:
    1.inline嵌套block和inline-block,不起任何作用,所以只能嵌套inline
    2.inline-block可以嵌套其他类型标签,但一定要结合vertical-asign属性操作,左右还有一空格间距
    3.block嵌套该如何显示?

    盒模型

    margin,border,padding,content
    .d${$}*7
    总结:
    盒模型由四部分组成: margin + border + padding + content
    1.margin: 外边距, 控制盒子的位置(布局), 通过左和上控制自身位置, 通过右和下影响兄弟盒子位置(划区域)
    /*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 10px 10px 10px;*/
    /*padding: 20px 30px;*/
    /*起始为上边, 顺时针依次赋值, 不足边取对边*/
            
    4.content: 内容区域, 由宽 x 高组成
     190px;
    height: 190px;
    <div class="box">123</div>
    <div>456</div>
    注意:
    1.margin,padding: 起始为上, 顺时针依次赋值, 不足边取对边
    2.要做到文本内移,设置padding, 如果又想显示区域不变, 相应减少content

    盒模型布局

    1.上下两个盒子的margin-bottom和margin-top功能相同, 同时出现, 取大值.左右正常叠加
    
    <style>
        .b1 {
            margin-bottom: 50px;
        }
        .b2 {
            margin-top: 50px;
        }
    </style>
    <div class="b1"></div>
    <div class="b2"></div>
    
    2.第一个有显示区域的子级会和父级联动(margin-top重叠), 取大值
    
    解决2:
    1.父级设置border-top
    2.父级设置padding-top
    <style>
        .sup {
             200px;
            height: 200px;
            background-color: orange;
            /*margin-top: 40px;*/
            /*border-top: 1px solid black;*/
            padding-top: 10px;
        }
        .sub1 {
            /*border: 1px solid red;*/
             50px;
            height: 50px;
            background-color: red;
            margin-top: 50px;
        }
        .sub2 {
             50px;
            height: 50px;
            background-color: pink;
            margin-top: 50px;
        }
    </style>
    <section class="sup">
        <section class="sub1"></section>
        <section class="sub2"></section>
    </section>
  • 相关阅读:
    angry_birds_again_and_again(2014年山东省第五届ACM大学生程序设计竞赛A题)
    数学入门题目
    POJ1236:Network of Schools(tarjan+缩点)?
    POJ2186:Popular Cows(tarjan+缩点)
    HDU2426:Interesting Housing Problem(还没过,貌似入门题)
    POJ1175:Starry Night(bfs)
    POJ2506:Tiling(递推+大数斐波那契)
    POJ2135:Farm Tour
    POJ2195:Going Home(费用流入门)
    POJ1273:Drainage Ditches(最大流入门 EK,dinic算法)
  • 原文地址:https://www.cnblogs.com/shanau2/p/10278940.html
Copyright © 2011-2022 走看看