这些有用的CSS伪类通常被忽略

这篇文章在一定程度上鼓励你在构建UI时使用更简单的CSS和更少的JavaScript。

::first-line 选择文本的第一行

这个选择器用于选取指定选择器的首行。如有如下HTML

  1. <body>
    <h1>做工程师不做码农</h1>
    <p>如果对你有所启发和帮助,可以点个关注、收藏、转发,也可以留言讨论,这是对作者的最大鼓励。
    作者简介:Web前端工程师,全栈开发工程师、持续学习者。
    私信回复:大礼包,送某网精品视频课程网盘资料,准能为你节省不少钱!</p>
    </body>

css

  1. p:first-line {
    color: lightcoral;
    }

效果

::first-letter 选择第一个字母

该伪选择器适用于元素中文本的第一个字母。有如下代码

  1. <body>
    <h1>做工程师不做码农</h1>
    <p>我的网络ID叫Dunizb</p>
    <p>zuo gong cheng shi bu zuo ma nong</p>
    <p>My best friend is Mickey</p>
    </body>
  1. .innerDiv p:first-letter {
    color: lightcoral;
    font-size: 40px
    }

效果

::selection 选择高亮的(选中的)区域

这个很好理解,就是平常我们鼠标选中文本时的样式。

使用 ::selection 伪类选择器,我们可以将样式应用于突出显示的区域。

  1. div::selection {
    color: yellow;
    background: red;
    }

上面的代码的效果就是:

:root 根元素

:root 伪类选择了文档的根元素。在HTML中,它始终是HTML元素。在RSS中,它是RSS元素。

这个伪选择器最常用于使用CSS变量来存储全局规则值,因为它适用于根元素。

:empty 匹配空项目

该伪选择器将选择没有任何子项的任何元素,元素必须为空。如果元素没有空格、可见内容或子代元素,则该元素为空。

  1. div:empty {
    border: 2px solid orange;
    }
    <div></div>
    <div></div>
    <div>
    </div>

该规则将适用于空的div元素。该规则将适用于第一个和第二个div,因为它们确实是空的,而不是第三个div,因为它有空格。

关于 :empty 的更多详细使用技巧,强烈推荐下面这篇文章

推荐阅读:拒绝JavaScript,这三个CSS技巧你一定用的上​

:only-child 选择唯一的子元素

选择器匹配属于其父元素的唯一子元素的每个元素。看如下HTML

  1. <div>
    <p>这是一个段落。</p>
    </div>

    <div>
    <span>这是一个 span。</span>
    <p>这是一个段落。</p>
    </div>

    <p><b>注释:</b>Internet Explorer 不支持 :only-child 选择器。</p>
  1. p:only-child {
    background:#ff0000;
    }

效果如下

:first-of-type 选择指定类型的第一个子元素

:first-of-type 相同,但这会影响相同类型的最后一个子元素。

:nth-of-type(n) 选择指定类型的子元素

该选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素。

n 可以是数字、关键词或公式。

  1. <style>
    p:nth-of-type(3n+0) {
    background:#ff0000;
    }
    </style>
    <body>
    <h1>这是标题</h1>
    <p>第一个段落。</p>
    <p>第二个段落。</p>
    <p>第三个段落。</p>
    <p>第四个段落。</p>
    <p>第五个段落。</p>
    <p>第六个段落。</p>
    <p>第七个段落。</p>
    <p>第八个段落。</p>
    <p>第九个段落。</p>
    </body>

:nth-last-of-type() 选择器相同,只是从最后一个子元素开始计数。

:link 选择一个未访问的超链接

此选择器适用于尚未访问的链接,这通常与带有 href 属性的 a 锚元素一起使用。

  1. a:link {
    color: orangered;
    }
    <a href="/login">Login<a>

这将使所有具有href属性的锚元素(尚未单击以访问其href属性中的页面)具有橙色的文本。

:checked 选择一个选中的复选框

如下所示,将匹配每个已被选中的 input 元素(只用于单选按钮和复选框)。

  1. input:checked {
    border: 2px solid lightcoral;
    }
    <form action="">
    <input type="radio" checked="checked" value="male" name="gender" /> 选中的单选框<br>
    <input type="radio" value="female" name="gender" /> 单选框<br>
    <input type="checkbox" checked="checked" value="Bike" /> 选中的复选框<br>
    <input type="checkbox" value="Car" /> 复选框
    </form>

该规则适用于所有已单击以选中它的复选框。

不过这个选择器兼容性太差,只有 Opera 支持。

:valid 选择有效的元素

这主要用于表单中的可视化表单元素,通过用户设置的验证。当验证通过时,将使用 valid 属性设置默认元素。

  1. input:valid {
    boder-color: lightsalmon;
    }

:invalid 选择一个无效的元素

:valid 相同,但这将适用于未通过验证测试的元素。

  1. input[type="text"]:invalid {
    border-color: red;
    }

:lang() 通过指定的lang值选择一个元素

这适用于指定了语言的元素,可以通过以下两种方式进行设置:

  1. p:lang(fr) {
    background: yellow;
    }

或者

  1. p[lang|="fr"] {
    background: yellow;
    }
    <p lang="fr">段落 1</p>

:not() 取反

一个否定伪选择器选择非的东西,让我们来看一个例子:

  1. .innerDiv :not(p) {
    color: lightcoral;
    }
    <div class="innerDiv">
    <p>段落 1</p>
    <p>段落 2</p>
    <div>Div 1</div>
    <p>段落 3</p>
    <div>Div 2</div>
    </div>

将选择 Div 1 和 Div 2,因为它们不是 p 元素。

 
转发

@杭州程序员小张

这些有用的CSS伪类通常被忽略

0/2000字

 

这些有用的CSS伪类通常被忽略的更多相关文章

  1. CSS伪类整理笔记

    0 伪元素 虚拟的一个元素,用于向已有的元素添加特殊效果,可用标签元素实现该效果. css3中规定:伪元素的由两个冒号::开头,然后是伪元素的名称.用两个冒号::是为了区别伪类和伪元素(CSS2中并没 ...

  2. CSS伪类使用详解

    基本描述 CSS伪类是很常用的功能,主要应用于选择器的关键字,用来改变被选择元素的特殊状态下的样式. 伪类类似于普通CSS类的用法,是对CSS选择器的一种扩展,增强选择器的功能. 目前可用的伪类有大概 ...

  3. CSS伪类和伪元素

    一.伪类 CSS伪类用于向某些选择器添加特殊的效果,在W3规范中,CSS伪类有如下几个: CSS2.1 :active:向被激活的元素添加样式(激活是指点击鼠标那一下) :focus:向拥有键盘输入焦 ...

  4. CSS 伪类 (Pseudo-classes)

    CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪类 (Pseudo-classes)实例: 超链接 本例演示如何向文档中的超链接添加不同的颜色. 超链接 2 本例演示如何向超链接添加其他样式. ...

  5. CSS伪类选择器

    一.CSS伪类选择器用于给某些选择器添加效果语法规则:选择器:伪选择器例:a:link {color: #FF0000} 未访问的链接 a:visited {color: #00FF00} 已访问的链 ...

  6. CSS伪类与CSS伪元素的区别及由来

    关于两者的区别,其实是很古老的问题.但是时至今日,由于各种网络误传以及一些不负责任的书籍误笔,仍然有相当多的人将伪类与伪元素混为一谈,甚至不乏很多CSS老手.早些年刚入行的时候,我自己也被深深误导,因 ...

  7. CSS 伪类

    Link The :link CSS pseudo-class lets you select links inside elements. This will select any link whi ...

  8. CSS伪类

    CSS伪类:控制元素的某种状态 语法:元素名称:伪类名称{属性:值} CSS伪类控制链接状态 状态 语法 未访问的链接 a:link{color:#ff00ff} 已访问的链接 a:visited{c ...

  9. 应用越来越广泛的css伪类

    说起css伪类,学习web前端网页设计的同学们应该对此应该不是很陌生,以前很多的网页的特效大多是通过js来实现的.但是随着CSS3不断开发,利用css实现网页的特效不仅响应不错,而且还减少了很多的代码 ...

  10. (五)CSS伪类(Pseudo-class)

    CSS伪类用于向某些选择器添加特殊的效果.伪类的语法如下: selector : pseudo-class {property: value} CSS类也可以与伪类搭配使用: selector.cla ...

随机推荐

  1. LeetCode-851 喧嚣与富有

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/loud-and-rich 题目描述 有一组 n 个人作为实验对象,从 0 到 n - 1 编号, ...

  2. python如何画高光谱立体图像

    语句含义:spectral.view_cube(image,bands=[29,19,9])  中的29,19和9是第几个波段,可以改成数据波段数以内的其他的数值

  3. 原创如何给MDK5.37添加Arm Compiler 5

    最新发布的MDK5.37已经不再安装Arm Compiler 5(ARMCC)编译器了,因为点击魔术棒后,在Target选项卡中选择编译器时,会看到missing:compiler version 5 ...

  4. 3. 贪心思想(todo)

    目录 1. 分配饼干 2. 不重叠区间个数 3. 投飞镖刺破气球 5. 买卖股票最大的收益 6. 买卖股票的最大收益 II 9. 修改一个数成为非递减数组 10. 子数组的最大和 11. 分隔字符串使 ...

  5. No.2.4

    Flex布局 主轴方向:(使用flex-direction改变元素排列方向) 思考:Flex布局模型中,弹性盒子默认沿着哪个方向排列? 水平方向 思考:如何实现内容垂直排列? 修改主轴的方向 主轴默认 ...

  6. mybatis处理多对一的映射关系

    创建数据库t_emp和t_dept 创建对应实体类 package org.example.entity; public class Emp { private Integer empId; priv ...

  7. C++调用C#DLL并调试

    使用C++ 来调用C#DLL 并且调试程序 环境:使用VS studio 2019 C#项目的设置 1.C# -> 属性 -> 应用程序 -> 目标框架 ->.NET Fram ...

  8. [Unity]关于Physic Material,物理碰撞

    制作游戏时发现了一些问题,主角身上有刚体(rigbody) 在地面移动时没有什么太大的问题,但是一旦在下落时按住方向键,就会出现角色贴在墙上不下来的问题 通过其他例子发现使用了Physic Mater ...

  9. mybatis_pagehelper_selectOne的SQL语句被莫名的增加分页相关设置,暂定解决办法

    在使用mybatis.以及其分页插件pagehelper时,原本的一个selectOne的sql语句被莫名(原因未知)的加上了分页相关,引起如下异常: exception is org.apache. ...

  10. pgbouncer相关概念和使用

    pgbouncer相关概念和使用 1.pgbouncer介绍   PG 是多进程结构,每新增一个会话就会新增一个进程,相对而言对数据库的开销就会比较巨大.   因为在正常业务会话中,有不少sessio ...