CSS深入学习 | 青训营

124 阅读5分钟

1.css选择器

1.1复合选择器

  1. 定义:由 两个或多个基础选择器,通过不同的方式组合而成
  2. 作用:更准确、更高效地选择目标元素(标签)
<span>span标签</span>  
<div>      
    <span>文字颜色</span>  
</div>

后代选择器

  1. 选中某元素的所有后代元素
  2. 父选择器 子选择器{CSS属性},父子选择器之间用空格隔开
<style>      
    div span     
    {   
        color:red;     
    }  
</style>  
<span>span标签</span>  
<div>      
    <span>div标签的子级</span>  
</div>

只要在父级标签中有相符的子级标签就会生效

子代选择器

  1. 选中某元素的子代元素
  2. 父选择器>子选择器{CSS属性},父子选择器之间用>隔开
<style>      
    div > span     
    {          
        color:red;     
    }  
</style>  
<div>      
    <span>div中的span</span>      
    <p>          
        <span>div里的p中的span</span>      
     </p>  
</div>

只能选中父级标签中相符的子级标签,其他后代标签不生效

并集选择器

  1. 选中多组标签设置相同的样式
  2. 选择器1,选择器2,...,选择器n{CSS属性},选择器之间用,隔开
<!-- 建议在每个标签之后都跟上一个空格 -->  
<style>      
    div,      
    p,      
    span     
    {          
        color:red;     
    }  
</style>  
<div>div标签</div>  
<p>p标签</p>  
<span>span标签</span>

交集选择器

选中同时满足多个条件的元素

<style>
    p.box     
    {          
        color:red;     
    }  
</style>  
<p class="box">使用了类选择器的p标签</p>  
<p>普通p标签</p>  
<div class="box">使用了类选择器的div标签</div>

如果在交集选择器中有标签选择器,标签选择器必须写在最前面

1.2 伪类选择器

伪类表示元素状态,选中元素的某个状态设置样式

鼠标悬停状态

选择器:hover{CSS属性}

<style>      
    a:hover     
    {          
        color:red;     
    }      
    .box:hover     
    {          
        color:green;     
    }  
</style>  
<a href="#">a标签</a>  
<div class="box">div标签</div>

任何标签都可以设置鼠标悬停状态

超链接

选择器作用
:link访问前
:visited访问后(默认紫色)
:hover鼠标悬停
:active点击时(激活)

如果要给超链接设置以上四个状态,需要按LVHA的顺序书写

一般都将超链接的所有状态设置为一个样式,除开鼠标悬停的时候进行特殊提示

2. CSS特性

化简代码/定位问题,解决问题

  • 继承性
  • 层叠性
  • 优先级
  • Emmet写法

2.1 继承性

子级标签默认继承父级标签的文字控制属性

一般将文字控制属性设置给body标签

<style>      
    body     
    {          
    font-size:30px;          
    font-weight:700;          
    color:red;     
    }  
</style>  
<body>      
    <div>div标签</div>      
    <p>p标签</p>      
    <span>span标签</span>      
    <a href="#">a标签</a>     <!-- a标签自带有下划线和蓝色效果,此时并不受body标签中的相应影响 -->  
</body>

子级标签中本身固定的效果不会受到父级标签的效果影响(抽象类?重写之类的?)

2.2 层叠性

  • 相同的属性会覆盖后面的CSS属性覆盖前面的CSS属性
  • 不同的属性会叠加:不同的CSS属性都会生效
<style>      
    div     
    {          
        color:red;
        font-weight:700;     
    }      
    div     
    {          
        color:green;          
        font-size:30px;     
    }  
</style>  
<div>div标签</div>

2.3 优先级

又叫权重,当一个标签使用了多种选择器时,基于不同种类的选择器的匹配规则

<style>      
    div     
    {          
        color:red;     
    }      
    .box     
    {          
        color:green;     
    }  
</style>  
<div class="box">div标签</div>

通配符选择器<标签选择器<类选择器<id选择器<行内样式<!important(提权,将优先级提到最高)

选中标签的范围越大,优先级越低

<style>      
    #test
    {          
        color:orange;     
    }      
    .box     
    {          
        color:blue;     
    }     
    div    
    {        
        color:green;   
    }     
    *  
    {      
    color:red /* !important */;  
    }  
</style>  
<div class="box" id="test" style="color:purple;">     
    div标签  
</div>

叠加计算

如果是复合选择器,则需要权重叠加计算

(行内样式,id选择器个数,类选择器个数,标签选择器个数)

  • 从左向右依次比较选个数,同一级个数多的优先级高,如果个数相同,则向后比较
  • !important权重最高
  • 继承权重最低

2.4 Emmet写法

代码的简写方式,输入缩写VS Code会生成对应的代码

  • HTML

    说明标签结构Emmet
    类选择器<div class="box"></div>标签名.类名
    id选择器<div id="box"></div>标签名#id名
    同级标签<div></div><p></p>div+p
    父子级标签<div><p></p></div>div>p
    多个相同标签<span>1</span><span>2</span><span>3</span>span*3
    有内容的标签<div>内容</div>div{内容}
  • CSS:大多数简写方式为属性单词的首字母

3.背景属性

描述属性
背景色background-color
背景图background-imag
背景图平铺方式background-repeat
背景图位置background-position
背景图缩放background-size
背景图固定background-attachment
背景复合属性background

3.1 拆分写法

背景图

网页中,使用背景图实现装饰性的图片效果

属性名:background-imag(bgi)

属性值:url(背景图URL)

<style>     
    div     
    {         
        width:400px;   
        height:400px;     
        background-imag:url(./img/1.jpg);  
    }  
</style>

浏览器中的默认效果是平铺效果,会复制填充掉剩余的盒子空间

背景属性

属性名:background-repeat(bgr)

属性值:

属性值效果
no-repeat不平铺
repeat平铺(默认效果)
repeat-x水平方向平铺
repeat-y垂直方向平铺

背景图位置

属性名:background-position(bgp)

属性名:水平方向位置 垂直方向位置

  • 关键字

    关键字位置
    left左侧
    right右侧
    center居中
    top顶部
    bottom底部
  • 坐标(数字+px,正负都可以)

<style>    
    div   
    {      
        width:400px;     
        height:400px;    
        background-color:pink;  
        background-imag:url(./img/1.jpg);       
        background-repeat:no-repeat;      
        background-position:center bottom;   
        background-position:50px -100px;     
        background-position:50px center;    
    }  
</style>

关键字取值方式写法,可以颠倒取值顺序

可以只写一个关键字,另一个方向默认为居中;数字只写一个表示水平方向,垂直方向为居中

背景图缩放

作用:设置背景图大小

属性名:background-size(bgz)

属性值:

  • 关键字:

    • cover:等比例缩放背景图片以完全覆盖背景区,可能使背景图片部分看不见
    • contain:等比例缩放背景图片以完全装入背景区,可能使背景区部分空白
  • 百分比:根据盒子尺寸计算图片大小

  • 数字 + 单位(例如:px

背景图固定

作用:背景不会随着元素的内容滚动

属性名:background-attachment(bga)

属性值:fixed

<style>   
    body   
    {       
        background-image:url(./image/1.jpg);     
        background-repeat:no-repeat;     
        background-attachment:fixed;  
    }  
</style>

3.2 复合写法

属性名:background(bg)

属性值:背景色 背景图 背景图平铺方式 背景图位置/背景图缩放 背景图固定(空格隔开各个属性值,不区分顺序)

<style> 
    div   
    {      
        width:400px;  
        height:400px;     
        background:pink url(./image/1.jpg) no-repeat right center/cover;   
    } 
</style>

总结

CSS选择器和特性、背景属性是构建网页样式的重要组成部分。选择器用于选择不同的HTML元素,特性和背景属性则用于控制元素的样式和背景效果。它们共同作用,使网页具备个性化和吸引力。学好css和学会用css是每个前端程序员必不可少的技能。