• day48 前端高级选择器优先级


    复习

    1. 基础选择器
    标签选择器(div) | 类选择器(.div1) | id选择器(#div2)
    <div class="div1" id="div2"></div>
    统配选择器 | !important | 行间式
    
    2. 选择器优先级
    通常作用范围越精确优先级越高
    !important > 行间式 > id > class > 标签 > 统配
    
    3. 长度与颜色
    px in mm cm em rem vw vh
    red #FF0000 rgb(255, 0, 0) rgba(255, 0, 0, 1)
    
    4.标签的分类
    主内容: 双标签, <div></div>
    主功能: 单标签, <img />(结束标识符可以省略)
    
    5. display
    通过显示方式来分类
    inline: 同行显示, 不支持宽高, 宽高有内容撑开
    block: 异行显示, 支持所有css样式, 设置宽高一定为设置的宽高(解决block的默认宽高)
    inline-block: 同行显示, 支持所有css样式, 宽高一般有内容撑开, 但通过会设置宽或高,那么 高或宽会等比缩放(img)
    
    6. 嵌套关系
    inline套inline
    inline-block不建议嵌套任意标签
    block可以嵌套任意标签(hn,p一般嵌套inline标签)
    
    7. 盒模型
    margin + border + padding + content(w x h), 四个部分区域
    
    8. 盒模型布局
    1.margin-top | margin-left 完成自身布局
    2.margin-right | margin-bottom 影响兄弟布局
    
    坑:
    1. 上兄弟的下(bottom)下兄弟的上(top)重叠, 取大值
    2. 父级和第一个显示子级top重叠, 取大值 => 解决, 给父级加padding-top | (父级加border-top)
    
    block设置宽高
    一定采用设置的宽高
    
    block默认宽高:
    1.没有设置宽, 宽自适应父级的宽(子级的border+padding+width = 父级的width)
    2.没有设置高, 高由内容撑开
    
    
    前端写数字或者字母,不使用空格会被认为是一个字母或数字,中间可以加空格
    
    margin-left:auto,自动值,自适应,将剩余空间给左边使用

    盒子总结

    block:
    默认宽高
    1.没有设置宽, 宽自适应父级的宽(子级的border+padding+width = 父级的width)
    2.没有设置高, 高由内容撑开
    
    设置了宽高
    一定采用设置的宽高
    
    显示宽高
    border+padding+content
    
    自身布局
    margin-top | margin-left
    
    兄弟布局
    margin-bottom | margin-right
    
    父级水平居中
    margin: 0 auto;
    
    与inline相关的盒子
    vertical-align

    盒子水平居中

    .sup {
             500px;
            height: 100px;
            background-color: orange;
            /*屏幕水平居中*/
            /*margin-left: calc((100% - 500px) / 2);*/
            /*屏幕水平居右*/
            /*margin-left: auto;*/
            margin: 0 auto;
        }
    .sub {
             50px;
            height: 50px;
            background-color: red;
            /*父级水平居中*/
            /*margin-left: calc((500px - 50px) / 2);*/
            /*父级水平居右*/
            /*auto自适应父级可利用的剩余宽度*/
            /*margin-left: auto;*/
            /*能不能通过自适应完成水平居中*/
            margin-left: auto;
            margin-right: auto;
            margin: 0 auto;
        }
        <div class="sup">
        <div class="sub"></div>
        </div>

    今日内容

    字体|文本相关属性样式
    边界圆角属性样式
    系统默认样式的清除操作(reset操作),(body|ul|p|a|hn等)
    高级选择器
    伪类选择器,a的四大伪类
    背景属性样式

    文本属性操作

    颜色,大小,字重,行高,水平居中方式
    
    text-align: center; # 水平居中方式
    color: red; # 字体颜色
    font: 900 30px/120px "STSong"; # 字重 大小/行高 字族
    
    # 了解
    # em(自身->父->html) | rem(html)
    text-indent: 2em;
    
    # 字划线
    # underline | line-through | overline
    text-decoration: overline;
    
    font-family:"STSong","微软雅黑",可以设置备用字体
    a标签字体大小不是继承
    最小字体大小只能达到12px
    
    .p1 {
        /*颜色 大小 字重 字族 行高 水平居中方式*/
        color: red;
        font-size: 50px;
        /*100~900| normal | lighter | bold*/
        font-weight: bold;
        /*字族可以设置备用字体*/
        font-family: "STSong", "微软雅黑";
        /*将行高值以盒子高度一致*/
        line-height: 200px;
        
        /*left | center | right*/
        /*text-align: center;*/
    }
    .p1 {
        /*简写*/
        /*text-align: center;*/
        color: red;
        font: normal 30px/200px "STSong", "微软雅黑";
    }
    .p1 {
        font-size: 50px;
        /*em就是一个字的大小*/
        text-indent: 2em;
        /*underline | line-through | overline*/none
        text-decoration: overline;
    }
    html {
        /*rem: r => root 只和html字体大小关联*/
        font-size: 50px;
    }
    .sup {
        /*最小字体只能到达12px*/
        font-size: 12px;
    }
    .sub 
    <p class="p1">
        一二三四五
    </p>
    <div class="sup">
        <div class="sub">呵呵</div>
    </div>

    reset操作

    what|why: 大多系统预定义标签, 有默认样式, 不满足实际开发需求, 反倒影响布局, 通常在开发前, 将需要用到的预定义标签的默认样式清除, 该操作就称之为 reset操作
    
    body, h1, h6, p {
    	margin: 0;
    }
    ul {
        margin: 0px;
        padding: 0;
        list-style: none;
    }
    a {
        text-decoration: none;
        color: black;
    }

    高级选择器

    1.群组选择器
    /*1.群组选择器:
        同时控制多个
        选择器之间用逗号隔开
        每一个选择器位均可以替换为任意基础选择器或高级选择器
        */
    .div1, .p1 {
            color: red;
        }
    
    2.后代子代选择器
    通过关系层次控制一个目标选择器
    >代表父子关系 | 空格代表后代关系(后代关系不一定是父子,还可能是爷孙关系)
        .sup1 > .sub {
            color: orange;
        }
        /*sub是body的后代,但不是子代*/
        body .sub {
            color: pink;
        }
    
    3.兄弟选择器
    通过关系层次控制一个目标选择器
    上兄弟可以控制下兄弟,下兄弟不能控制上兄弟
    +,~
    +:相邻
    ~:兄弟,中间可以跨越几个相邻标签
        /* + 相邻 */
        .b2 + .b3 {
            color: blueviolet;
        }
        /* ~ 兄弟 */
        .b1 ~ .b3 {
            color: brown;
        }
    4.伪类选择器 - 位置
    :nth-child(3)
    3n-1,可以表示第3,6,9个数
        ul:nth-child(10) > li:nth-child(2n) {
            color: green;
        }
    
    5.多类
    .d.dd {
    
    }
    
    <div class="div1">123</div>
    <p class="p1">456</p>
    <div>3333</div>
    <div class="sup1">
        <div class="sub">sub</div>
    </div>
    <div class="sup2">
        <div class="sub">sub</div>
    </div>
    
    <div class="b3">b3 333</div>
    <div class="b1">001</div>
    <div class="b2">002</div>
    <div class="b3">b3 003</div>
    
    <ul>
        <h3>标题</h3>
        <li>列表项</li>
        <li>列表项</li>
        <li>列表项</li>
        <li>列表项</li>
        <li>列表项</li>
    </ul>
    <ul>
        <h3>标题</h3>
        <li>列表项</li>
        <li>列表项</li>
        <li>列表项</li>
        <li>列表项</li>
        <li>列表项</li>
    </ul>
    <div>
        <p>0001</p>
        <p>0002</p>
        <p>0003</p>
    </div>

    高级选择器优先级

    优先级和个数(权重)相关
    基础选择器优先级占主导: id 无限大于 class 无限大于 标签
    选择器优先级相同时, 和顺序有关
    高级选择器类型不会影响优先级
    伪类选择器相当于class
    
    <style>
        .div {
            font-size: 100px;
            color: red;
        }
    
        div > .div {
            color: orange;
        }
        div ~ div ~ .div {
            color: brown;
        }
        div .div {
            color: pink;
        }
    
        .div:nth-child(3) {
            color: yellowgreen;
        }
        .sup .div {
            color: darkgreen;
        }
    </style>
    <style>
        /*多类名*/
        .div.div1 {
            color: black;
        }
        /* div.div#dd.div1 */
    </style>    
    
    <div>
        <div class="sup">
            <div>
                <div>
                    <div></div>
                    <div></div>
                    <div class="div div1" id="dd">123</div>
                </div>
            </div>
        </div>
    </div>

    边界圆角

    左上为第一个角,顺时针赋值,不足找对角
    先横后纵的取像素值,然后画圆角
    可以横纵向分离:50px(横向) 10px (第一个角横向50px,第二个角横向10px,第三个50px,第四个10px) / 150px(纵向)
    
    <style>
        div {
             300px;
            height: 300px;
            background-color: red;
        }
        div {
            /*左上为第一个角, 顺时针赋值, 不足找对角*/
            /*border-radius: 30px 60px;*/
    
            /*border-radius: 150px;*/
            /*border-radius: 50%;*/
    
            /*横向第一个角50px, 第二个角10px, 不足找对角*/
            /*纵向均是150px*/
            border-radius: 50px 10px / 150px;
        }
    </style>
    <div></div>

    a标签的四大伪类

    :link  链接初始状态 
    :hover  鼠标悬浮状态 *****
    :visited  链接访问后的状态 
    :active  鼠标按下时的状态 ***
    字体属性还是靠继承,但是a标签的四大伪类属性对应了不同的颜色,所有它默认不继承父级的颜色
    
    <style>
        /*链接初始状态 | 鼠标悬浮状态 | 链接访问后的状态 | 鼠标按下时的状态*/
        /*a:link {*/
            /*color: black;*/
        /*}*/
    
        /*a:hover {*/
            /*cursor: pointer;*/
        /*}*/
    
        /*a:visited {*/
            /*color: yellow;*/
        /*}*/
    
        /*a:active {*/
            /*color: green;*/
        /*}*/
        div标签只有两个伪类状态会生效/*鼠标悬浮状态 | 鼠标按下时的状态*/
        div {
             200px;
            height: 200px;
            background-color: pink;
        }
    
        div:hover {
            background-color: yellowgreen;
            cursor: pointer;
        }
    
        div:active {
            background-color: red;
        }
    
    </style>

    背景图片之精灵图

    div {
    	background: url("img/bg.png") no-repeat 10px 20px;
    	图片地址 不平铺 x轴偏移 y轴偏移
    }
    精灵图操作本质: 控制背景图片的位置
    backgroud-position-x
    backgroud-position-y
    div:hover {
    	backgroud-position-y: -20px;
    
    
    <style>
    
        .div {
             500px;
            height: 500px;
            border: 1px solid black;
        }
        .div {
            background-image: url("img/001.png");
            /*平铺: repeat-x | repeat-y | repeat | no-repeat*/
            background-repeat: no-repeat;
            /*背景图片位置*/
            /*水平: left|center|right  垂直:top|center|bottom*/
            background-position: -200px 50px;
        }
        .div:hover {
            transition: 2s;
            background-position-x: center;
        }
    </style>

    精灵图案例

    <!DOCTYPE html>

    <head> <meta charset="utf-8"> <title>Title</title> <style> a { color: #333; text-decoration: none; } h1 { 500px; height: 100px; border: 1px solid black; } h1 a { 500px; height: 100px; display: block;

    background: url("img/bg.png") no-repeat 0 -150px;
        }
        h1 a:hover {
            background-position-y: -250px;
        }
    </style>
    <style>
        .li {
             157px;
            height: 48px;
            border: 1px solid black;
            background: url("img/bg.png") no-repeat -155px 0;
        }
        .li:hover {
            cursor: pointer;
            background-position-y: -48px;
        }
    </style>
    </head>
    <body>
    <h1><a href=""></a></h1>
    
    <div class="li"></div>
    
    </body>
    </html>
  • 相关阅读:
    【资料整理】面向对象
    【资料整理】函数(方法)
    【资料整理】数组
    【资料整理】循环、判断、三元表达式
    【资料整理】类型转换、运算符
    【资料整理】c#基础
    线性表的链式表示和实现
    线性表
    PAT 乙级1062最简分数
    HDU 1027(全排列)
  • 原文地址:https://www.cnblogs.com/shanau2/p/10283809.html
Copyright © 2020-2023  润新知