内容
活动
关注

【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式

简介: 伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。伪类分为两种(以及新增的伪类选择器):UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。:hover结构化伪类:会在标记中存在某种结构上的关系时例如:某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。:not和:target(CSS3新增的两个特殊的伪类选择器)

CSS伪类

伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。

伪类分为两种(以及新增的伪类选择器):

UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。

  • :hover

结构化伪类:会在标记中存在某种结构上的关系时

  • 例如:
    某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。

:not:target(CSS3新增的两个特殊的伪类选择器)

UI伪类

UI元素状态伪类选择器有如下几个:
| 属性|说明|
|---|---|
|Selector:link|匹配Selector选择器且未被访问前的元素(通常只能是超链接)。|
|Selector:visited|匹配Selector选择器且已被访问前的元素(通常只能是超链接)。|
|Selector:hover|匹配Selector选择器且处于鼠标悬停状态的元素。|
|Selector:active|匹配Selector选择器且处于被用户激活(在鼠标点击与释放之间的状态)的状态的元素。|
|Selector:focus |匹配Selector选择器且已得到焦点的元素。|
|Selector:enabled|匹配Selector选择器且当前用于处于不可用状态的元素。|
|Selector:disabled|匹配Selector选择器且当前处于不可用状态的元素。|
|Selector:checked|匹配Selector选择器且当前处于选中状态的元素。|
|Selector:default|匹配Selector选择器且页面处于打开时选中状态的元素
(即使当前没有被选中亦可)。|
|Selector:read-only|匹配Selector选择器且当前处于只读状态的元素|
|Selector:read-wirte |匹配Selector选择器且当前处于读写状态的元素|
|Selector:selection |匹配Selector选择器的元素中当前被选中的内容。|

特别提示:

  1. 一个冒号(:)表示伪类,两个冒号(::)表示CSS3新增的伪元素。
  2. 上面的Selcotor选择器可以省略,如果省略则可以匹配处于某种
    状态下的多个元素。

  • 示例
    <body> <div id="diva"> <a href="https://www.baidu.com/">用于link、visited、active、hover伪类选择器讲解</a> </div> <div id="divothers"> <input type="text" value="获得焦点时"/> <button>可用按钮</button> <button disabled="disabled">不可用按钮</button> <input type="text" disabled value="不可用文本框"/> </div> </body> 
  • CSS
    ```css
    @charset "utf-8";
    / CSS Document /
    /设置div样式/

    diva {

    width: 800px;
    height: 200px;
    margin: 0 auto;
    line-height: 160px;
    border: 2px solid #C00;
    text-align: center
    }
    /divothers样式设置//

    divothers {

    width: 800px;
    height: 200px;
    margin: 20px auto;
    padding: 30px 0px;
    border: 2px solid #C00;
    text-align: center;
    }
    /设置input标签样式/
    input {
    width: 200px;
    height: 25px;
    font-size: 15pt;
    text-align: center;
    }
    /设置button按钮的样式/
    button {
    width: 200px;
    height: 30px;
    display: block;
    margin: 10px auto;
    font-size: 14pt;
    }
    /设置a标签的字体大小/
    a {
    font-size: 26px;
    }

/链接在初始状态是蓝色的/
a:link {
color:blue;
}
/当链接被点击之后,变成灰色(确切的说,到浏览器访问历史中
的这个URL过期之前或被用户删除之前都是灰色)
/
a:visited {
color: gray;
}
/鼠标移动到a标签上的时候,下划线消失/
a:hover {
text-decoration: none;/取消a标签的下划线/
}
/用户在链接上按下鼠标时(活动状态),链接颜色为红色/
a:active {
color: red;
}

/当input标签获取焦点时,添加下划线/
input:focus {
text-decoration: underline;
border:3px solid #F00;
}
/没有选择器的情况下,会将所有处于disabled状态下的元素的CSS样式改变/
:disabled {
font-famliy: "黑体";
color:#3F0;
}

## 结构化伪类 | 属性|说明| |---|---| |Selector`:root` |匹配文档的根元素。在HTML文档中,根元素永远是<html>元素| |Selector`:first-child` | 表示一组同胞元素中的第一个元素。| |Selector`:last-child` | 表示一组同胞元素中的最后一个元素。| |Selector`:nth-child(n) ` | 表示一组同胞元素中的第n个元素。(顺数第n个)| |Selector`:nth-last-child(n)` | 表示一组同胞元素中的倒数第n个元素。(倒数第n个)| |Selector`:only-child` | 匹配符合Selctor选择器,而且必须只有一个子节点。 | 还有其他的几个结构化选择器:和上面的类似 Selector`:first-of-type ` Selector`:last-of-type ` Selector`:nth-of-type(n)` Selector`:nth-last-of-type(n)` Selector`:empty` --- - 示例 ```html <body> <ul> <li>HTML</li> <li>CSS</li> <li>JavaScript</li> <li>jQuery</li> <li>Csharp</li> <li>Java</li> <li>Andriod</li> </ul> <ul> <li>MATH</li> </ul> </body> 
  • css
    li:first-child{  color:yellow; } li:last-child{  color:#60C; } li:nth-child(2){  color:#2326C4; } li:nth-last-child(3){  color:#2326C4; } li:only-child{  color:#900; } 

    伪元素

  • 伪元素就是说在你的文档中若有实无的元素
    (解释说明:在HTML代码中没有,我们可以通过css的样式设置伪元素,让它显示给我们看到)
    伪元素:
  • ::first-letter 伪元素 第一个字母
  • ::first-line 伪元素 第一行
  • ::before::after伪元素

  • 示例
    <body> <p>The owner felt quite surprised. He asked the man, "Why are you back so soon? Have you tested him already?" "I don't want to test him any more," replied the man, " From the companion he chose for himself, I could see what sort of animal he is." </p> <p class="myp">下午好!</p> </body> 
  • CSS
    /* CSS Document */ /*将段落中的第一个字母放大到原来的300%*/ p::first-letter {  font-size: 300%; } /*将段落中的第一行放大到原来的200% 并将字体的样式设置为斜体*/ p::first-line {  font-size: 200%; font-style: italic;/*字体的样式设置为斜体*/ } #myp {  font-size: 20px; text-align: center;/*设置字体居中显示*/ } /*在#myp这个段落的开始添加文字*/ .myp::before {  content: "同学们,"; } /*在#myp这个段落的末尾添加文字*/ .myp::after {  content: "现在是上课时间。"; } 

    如果使用伪元素,不管是否要在元素中添加文字,都需要content属性,哪怕是空

    • content: ''; - 必备

:not and :target

Selector1:not(Selector2)

  • 匹配Selector1,但不匹配Selector2,相当于从Selector1中减去Selector2

Selector:target (target 目标)

- 如果用户点击一个指向页面中其他元素的链接,则那个元素就是目标(target)

  • 示例
    <body> <div id="main"> <h1 id="myh1">this is a h1</h1> <div id="divone"> </div> <a href="#myh1">Link</a> </div> <ul> <li id="Csharp">Csharp</li> <li id="Java">Java</li> <li id="jQuery">jQuery</li> <li id="JavaScript">JavaScript</li> <li id="Andriod">Andriod</li> </ul> </body> 
  • CSS
    @charset "utf-8"; /* CSS Document */ /*设置id为main的div的样式*/ #main {  width: auto; height: auto; text-align: center; } /*设置id为divone的div的样式*/ #divone {  width: 800px; height: 900px; background: #900; margin: 0px auto; } /*设置a标签的样式*/ a {  font-size: 30px; color: bule; margin: 20px auto; } ul li {  font-size: 20px; } /*:not伪类选择器,设置除了li标签字体颜色为红色,除了id为Java的li标签*/ li:not(#Java) {  color: #900; } /*:target伪类选择器 ,设置目标元素myh1 的背景颜色为红色 */ #myh1:target {  background: #900; } 

    🤩CSS教学往期回顾

  1. 【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍

    💕👉博客专栏

目录
相关文章
|
1月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
transition过渡属性 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。 但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化, 让效果显得更加细腻。简单点说,就是通过鼠标经过、获得焦点,被点击或对元素任何改变中触发, 并平滑地以动画效果改变CSS的属性值。 在CSS中创建简单的过渡效果可以从以下几个步骤来实现: 在默认样式中声明元素的初始状态样式; 声明过渡元素最终状态样式,比如悬浮状态; 在默认样式中通过添加
140 0
|
1月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
transform变形 css3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的 功能。 CSS3的变形功能可以对HTML组件执行位移、旋转、缩放、倾斜4种几何变换,这样的变换可以控制HTML组件 呈现出丰富的外观。 借助于位移、旋转、缩放、倾斜这4种几何变换,CSS3提供了transition动画。 transition动画比较简单,只要指定HTML组件的哪些CSS属性需要使用动画效果来执行变化,并指定动画时间,就可保证动画播放。 比transitio
114 1
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
Flex 布局 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 一、Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
210 1
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
盒模型 盒模型: 所谓盒模型,就是浏览器为页面中的每个HTML元素生成的矩形盒子。 这些盒子们都要按照可见板式模型在页面上排布。 可见的板式模型主要由三个属性控制:position 属性、display 属性和 float属性。 position属性控制页面上元素间的位置关系。 display属性控制元素是堆叠、并排或者不在页面上显示。 float属性提供控制的方法,以便于把元素组成成多栏布局。 盒模型讲解: 在默认的情况下,每个盒子的边框是不可见的,背景也是透明的。 所以我们 不能直接的看到页面中的盒
128 1
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
Animation属性 css3为Animation动画提供的几个属性如下: 属性名 属性值 animation-name 指定动画名称,该属性指定一个已有的关键帧定义。 animation-duration 指定动画持续时间。 animation-timing-funtion 指定动画变化速度。 animation-delay 指定动画延迟多长时间才开始执行。 animation-iteration-count 指定动画的循环执行次数。 animation:这是一个复合属性。
126 1
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
position定位(核心) 我们讲盒模型的时候,提到了3个属性可以用来控制页面排版。 三大属性:position属性,display属性,float属性。 position 属性控制页面上元素间的位置关系。 display 属性控制页面元素是否显示或者是堆叠还是并排显示。 float 属性提供控制方法。 通过float这种控制方法,可以实现多栏布局,导航菜单等等。 position属性是干嘛用的?怎么用?有哪些属性值? position属性控制页面上元素间的位置关系,也就是排版。 怎么用?要知道怎么用
235 1
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
继承 我们的CSS中很多的属性也是可以继承的,其中相当一部分是跟文字的相关的,比如说颜色、字体、字号。 当然还有一部分是不能继承的。 例如边框、内外边距。 层叠 层叠是CSS的核心机制。 层叠的工作机制: 当元素的同一个样式属性有多种样式值的时候,CSS就是靠层叠机制来决定最终应用哪种样式。 层叠规则: 层叠规则一:找到应用给每个元素和属性的声明。 说明:浏览器在加载每个页面时,都会据此查找到每条CSS规则, 并标识出所有受到影响的HTML元素。
64 0
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
986 14
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
305 0
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
434 6
下一篇