前端基础-CSS-02

发布于:2022-11-05 ⋅ 阅读:(707) ⋅ 点赞:(0)

4.1. CSS复合选择器

4.1.1. 学习目的

  • 目的:可以选择更精确更精细的目标元素标签
  • 复合选择器是由两个或者多个基础选择器,通过不同的方式组合而成的

4.1.2. 后代选择器

  • 概念:后代选择器又称为包含选择器

  • 作用:用来选择元素或元素组的子孙后代

  • 格式:把外层标签写在前面,内层标签写在后面,中间用空格隔开

    父级 子级 {
     属性1:属性值1;
     属性2:属性值2;
     属性3:属性值3;
    }
    
  • 代码示例

    <style>
        .nav a {
        		color: pink;
        }
        .wangsicong ul li {
        		color: aqua;
        }
    </style>
    
    <div class="nav">
       <a href="#">内部链接</a>
    </div>
    <a href="#">外部链接</a>
    
    <ul>
     	 <li>一条狗</li>
    </ul>
    <div class="wangsicong">
        <ul>
         	 <li>王可可是一条狗</li>
        </ul>
    </div>
    

4.1.3. 子元素选择器

  • 作用:子元素选择器只能选择作为某元素子元素的元素

  • 格式:父选择器写在前面,子选择器写在后面,中间用>进行连接

    父级>子级 {
     属性1:属性值1;
     属性2:属性值2;
     属性3:属性值3;
    }
    
  • 代码示例

    <style>
          div>strong {
              color: pink;
          }
    
          p>strong {
              color: rgb(40, 167, 78);
          }
    </style>
    
    <div>
      	<strong>儿子</strong>
    </div>
    
    <div>
        <p>
         	 <strong>孙子</strong>
        </p>
    </div>
    

4.1.4. 交集选择器

  • 作用:相当于and,所有的条件都要满足,多个选择器中间用.分隔

  • 格式

    选择器1.选择器2 {
     属性1:属性值1;
     属性2:属性值2;
     属性3:属性值3;
    }
    
  • 代码示例

    <style>
        p.red {
            color: red;
        }
    </style>
    
    <body>
        <div class="red">红色</div>
        <p>蓝色</p>
      	<!-- 只有此行代码会变成红色,因为两个条件必须同时满足 -->
      	<p class="red">红色</p>
    </body>
    

4.1.5. 并集选择器

  • 概念:并行选择器是各个选择器通过,连接而成的,通常用于集体声明

  • 格式:

    选择器1,选择器2 {
     属性1:属性值1;
     属性2:属性值2;
     属性3:属性值3;
    }
    
  • 代码示例

    <style>
        p,span,.red {
          	color: red;
        }
    </style>
    
    <body>
      	<!-- 此时三个会同时变成红色,因为并集,只要任何一个满足即可 -->
        <p>我和你</p>
        <span>我和你</span>
        <div class="red">我和你</div>
    </body>
    

4.2. 链接伪类选择器

  • 作用:用于向某些选择器添加特殊的效果,链接伪类就是给链接添加效果

  • 类别

    • a:link :未访问的链接
    • a:visited:已访问的链接
    • a:hover:鼠标移动到链接上
    • a:active:选定的链接
  • 注意:按照上述顺序写代码,颠倒可能出问题

  • 代码示例

        <style>
    				/*未访问的链接*/
            a:link {
                color: #333;
                text-decoration: none;
            }
    
    				/*已访问的链接*/
            a:visited {
                color: orange;
            }
    
            /*鼠标经过的链接*/
            a:hover {
                color: red;
            }
    
    				/*鼠标按住不动时显示*/
            a:active {
                color: green;
            }
        </style>
    
    <body>
        <a href="http://www.xiaomi.com">小米手机</a>
        <a href="http://www.dami.com">大米手机</a>
    </body>
    
  • 实际开发中的应用

    <style>
        .nav a {
            color: #333;
            text-decoration: none;
        }
        .nav a:hover {
         	  color: orange;
        }
    </style>
    
  • 总结

    选择器 作用 特征 使用情况 隔开符号及用法
    后代选择器 用来选择元素后代 是选择所有的子孙后代 较多 符号是空格 .nav a
    子代选择器 选择 最近一级元素 只选亲儿子 较少 符号是**>** .nav>p
    交集选择器 选择两个标签交集的部分 既是 又是 较少 没有符号 p.one
    并集选择器 选择某些相同样式的选择器 可以用于集体声明 较多 符号是逗号 .nav, .header
    链接伪类选择器 给链接更改状态 较多 重点记住 a{} 和 a:hover 实际开发的写法

4.3. 标签显示模式

  • 概念:标签以什么方式进行显示
  • 作用:在不同的地方使用到不同类型的标签,以便更好的完成网页
  • 分类:块标签和行内标签(块级元素和行内元素)

4.4. 块元素

  • 块级元素

    <div> (最典型)
    <h1>~<h6>
    <p>
    <ul>
    <ol>
    <li>
    
  • 特征

    1. 独占一行
    2. 高度、宽度、外边距、内边距都可以控制
    3. 宽度默认是容器的100%
    4. 是一个容器及盒子,里面可以放行内或者块级元素
  • 注意

    • 只有文字才能组成段落,因此p里面不能放块级元素,特别是p不能放div
    • 同理还有这些标签h1,h2,h3,h4,h5,h6,dt,他们都是文字类块级标签,里面不能放其他块级元素
  • 代码示例

    <style>
        div {
            height: 200px;
            background-color: pink;
        }
    </style>
    
    <body>
        <div>我是块级元素</div>
        <div>我是块级元素</div>
    </body>
    

4.5. 行内元素

  • 行内元素

    <span>  (最典型)
    <a>
    <strong>
    <em>
    <i>
    <del>
    <s>
    <ins>
    
  • 特征

    1. 相邻行内元素在一行上,一行可以显示多个
    2. 高、宽直接设置是无效的
    3. 默认宽度就是它本身内容的宽度
    4. 行内元素只能容纳文本或者其他行内元素
  • 注意

    • 链接里面不能再放链接
    • 特殊情况a里面可以放块级元素,但是给a转换一下块级模式最安全
  • 代码示例

    <style>
        span {
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
    
    <body>
        <span>我是行内元素</span>
        <span>我是行内元素</span>
    </body>
    

4.6. 行内块元素

  • 行内块元素

    <img />
    <input />
    <td>
    
  • 特征

    1. 和相邻行内元素在一行上,但是之间会有空白缝隙,一行可以显示多个
    2. 默认宽度就是它本身内容的宽度
    3. 高度、行高、外边距、内边距都是可以控制
  • 代码示例

    <style>
        span {
            display: block;
            width: 100px;
            height: 100px;
            background-color: pink;
        }
    </style>
      
    <body>
        <span>行内</span>
        <hr/>
        <span>行内</span>
    </body>
    </html>
    

4.7. 三种模式区别

  • 区别

    元素模式 元素排列 设置样式 默认宽度 包含
    块级元素 一行只能放一个块级元素 可以设置宽度高度 容器的100% 容器级可以包含任何标签
    行内元素 一行可以放多个行内元素 不可以直接设置宽度高度 它本身内容的宽度 容纳文本或则其他行内元素
    行内块元素 一行放多个行内块元素 可以设置宽度和高度 它本身内容的宽度

4.8. 标签显示模式转换display

# 第一种  display: inline; 设置行内元素
dispaly: inline;
  
# 第二种  display: block; 设置块级元素
display: block;
  
# 第三种  display: inline-block; 设置行内块元素
display: inline-block;
  • 代码示例

    /* 把行内元素span转换为块级元素,并设置宽高和颜色 */
    span {
        display: block;
        width: 100px;
        height: 100px;
        background-color: pink;
    }
    
    /* 把块级元素div转换为行内元素,此时设置宽高将不起作用 */
    div {
        display: inline;
        width: 100px;
        height: 100px;
        background-color: rgb(157, 88, 100);
    }
    
    /* 把行内元素a设置为行内块元素,可以设置宽高 */
    a {
        display: inline-block;
        width: 80px;
        height: 25px;
        background-color: orange;
    }
    

4.9. 单行文本垂直居中

  • 行高 = 上距离 + 内容高度 + 下距离

  • 垂直居中:文字的高度=行高

4.10. CSS背景

4.10.1. 背景颜色

  • 语法

    # 默认值是transparent 透明的
    background-color: 颜色值;
    

4.10.2. 背景图片

  • 语法

    /* none: 无背景图(默认的) */
    /* url: 使用绝对或相对地址指定背景图像,不需要加引号 */
    background-image: none | url(url)
    

4.10.3. 背景平铺

  • 语法

    background-repeat : repeat | no-repeat | repeat-x | repeat-y 
    
  • 属性值

    参数 作用
    repeat 背景图像在纵向和横向上平铺(默认的)
    no-repeat 背景图像不平铺
    repeat-x 背景图像在横向平铺
    repeat-y 背景图像在纵向平铺

4.10.4. 背景位置

  • 语法

    background-position: length || length
    
    background-position: position || position
    
  • 属性值

    参数
    length 百分数 | 由浮点数字和单位标识符组成的长度值
    position top | center | bottom | left | center | right 方位名词
  • 注意

    • 必须先指定background-image属性
    • position后面是x坐标和y坐标,可以使用方位名词或者精确单位
    • 如果只指定了一个方位名词,另一个值默认居中,为50%
    • 如果只指定一个数值,那该数值用于X坐标,另一个默认是y坐标,默认居中
    • 如果指定两个值,两个值都是方位名字,则两个值前后顺序无关,比如left,top和top,left效果一致
    • 如果指定两个值,精确单位和方位名字混合使用,则第一个值是X坐标,第二个值是Y坐标

4.10.5. 背景附着

  • 概念:背景是移动的还是固定的

  • 语法

    background-attachment: fixed;
    
  • 属性值

    参数 作用
    scroll 背景图像是随对象内容滚动
    fixed 背景图像固定

4.10.6. 背景简写

  • background:背景颜色 背景图片地址 背景平铺 背景滚动 背景位置

    background:transparent url(image.jpg) repeat-y scroll center top
    

4.10.7. 背景透明

  • 语法

    background: rgba(0, 0, 0, 0.3);
    
    • 最后一个参数是alpha,透明度取值范围0~1之间
    • 我们习惯把0.3的0省略掉这样写background:rgba(0,0,0,.3)
    • 注意:背景半透明是指盒子背景半透明,盒子里面的内容不受影响
    • 因为是CSS3,所以低于IE9的版本是不支持的

4.10.8. 总结

属性 作用
background-color 背景颜色 预定义的颜色值/十六进制/RGB代码
background-image 背景图片 url(图片路径)
background-repeat 是否平铺 repeat/no-repeat/repeat-x/repeat-y
background-position 背景位置 length/position 分别是x 和 y坐标, 切记 如果有 精确数值单位,则必须按照先X 后Y 的写法
background-attachment 背景固定还是滚动 scroll/fixed
背景简写 更简单 背景颜色 背景图片地址 背景平铺 背景滚动 背景位置; 他们没有顺序
背景透明 让盒子半透明 background: rgba(0,0,0,0.3); 后面必须是 4个值
  • 代码示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .bg {
                width: 700px;
                height: 500px;
              
                /*设置背景颜色*/
                background-color: pink;
              	/*设置背景图片*/
                background-image: url(liu.png);
              	/*设置背景图片平铺的方式*/
                background-repeat: no-repeat;
                /*设置背景图片的位置*/
                background-position: 10px 50px;
            }
        </style>
    </head>
    <body>
        <div class="bg">
            123
        </div>
    </body>
    </html>
    

4.11. CSS层叠性

  • 概念:多种CSS样式的叠加,是浏览器处理冲突的一个能力,如果一个属性通过选择器设置到同一个元素上,那么这个时候一个属性将会将另一个属性层叠掉

  • 原则

    • 样式冲突:遵循的原则是就近原则
    • 样式不冲突:不会层叠
  • 代码示例

    div {
        color: red;
    }
    div {
        color: pink;
    }
    
    <body>
        <div>
            长江后浪推前浪,前浪死在山踏上
        </div>    
    </body>
    

4.12. CSS继承性

  • 概念:子标签会继承父标签的某些样式,如文本颜色和字号,想要设置一个可继承的属性,只需要将它应用于父元素即可

  • 注意

    • 恰当的使用继承可以简化代码,降低CSS样式的复杂性
    • 子元素能够继承父元素的样式
  • 代码示例

    <style>
        div {
          	color: red;
        }
    </style>
    
    <body>
        <div>
            <p>王思聪</p>
        </div>
    </body>
    

4.13. CSS优先性

  • 概念:定义CSS样式时,经常出现两个或更多规则应用在同一元素上

    • 选择器相同,则执行层叠性
    • 选择器不同,就会出现优先级的问题
  • 权重计算公式

    标签选择器 计算权重公式
    继承或者 * 0,0,0,0
    每个元素(标签选择器) 0,0,0,1
    每个类,伪类 0,0,1,0
    每个ID 0,1,0,0
    每个行内样式 style=“” 1,0,0,0
    每个!important 重要的 ∞ 无穷大
    • specificity用一个四位的数,更像四个级别,
    • 值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越。
    • 关于CSS权重,我们需要一套计算公式来去计算,这个就是CSS Specificity(特殊性)
  • 权重叠加

    我们经常用到交集选择器,后代选择器,是有多个基础选择器组合而成,那么此时,就会出现权重叠加,就是简单的加法计算

  • 继承的权重是0

    • 修改样式时,一定要看标签有没有被选中,如果被选中,按照公式来计算权重,如果未被选中,那么权重是0,因为继承的权重为0
  • 代码示例1

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .one {
                color: blue;
            }
            div {
                color:red;
            }
        </style>
    </head>
    <body>
        <div class="one">hvdih</div>
    </body>
    </html>
    
  • 代码示例2

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .nav a {
                color:red;
            }
            .nav .first {
                color:pink;
            }
        </style>
    </head>
    <body>
        <div>人生四大悲</div>
        <div class="nav">
            <a href="#" class="first">家里没宽带</a>
            <a href="#">网速不够快</a>
            <a href="#">手机没流量</a>
            <a href="#">学校无wifi</a>
        </div>
    </body>
    </html>
    
  • 代码示例3

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            div {
                color: red;
            }
            p {
                color: aqua;
            }
            .demo {
                color: blue;
            }
        </style>
    </head>
    <body>
        <div class="demo">
            <p>
              jicheng  
            </p>
        </div>
    </body>
    </html>
    
本文含有隐藏内容,请 开通VIP 后查看