伪元素写竖线_CSS的伪类和伪元素

伪元素写竖线_CSS的伪类和伪元素之前介绍了 8 种选择器 基本上可以应对大部分的开发需求 但是如果不会使用伪类和伪元素 就跟下面的图差不多 后面会摔的 伪元素和伪类虽然不是特别常用 但是 很好用 可以帮你省掉很多无用功 效果还好 下面直接进入正题 尽量用最小的篇幅让人明白如何使用它们 1 伪元素和伪类的区别伪元素和伪类都是为了给一些特殊需求加样式 定义上基本一致 伪类像类选择器一样给已存在某个元素添加额外的样式 伪元素则是给自

之前介绍了8种选择器,基本上可以应对大部分的开发需求,但是如果不会使用伪类和伪元素,就跟下面的图差不多,后面会摔的。伪元素和伪类虽然不是特别常用,但是,很好用,可以帮你省掉很多无用功,效果还好。下面直接进入正题,尽量用最小的篇幅让人明白如何使用它们。

c7dcb3008e5c

1.伪元素和伪类的区别

伪元素和伪类都是为了给一些特殊需求加样式,定义上基本一致。

伪类像类选择器一样给已存在某个元素添加额外的样式;伪元素则是给自己虚拟的元素添加样式。

已存在元素是指DOM中存在的,伪元素则是虚拟的一种,样式也是给这个虚拟的元素使用的。比如虚拟一个div

声明不同,伪类和选择器之间用一个冒号隔开,伪元素则是两个冒号隔.

2.常用的伪类

常用的伪类有两类UI伪类和结构伪类。这里只介绍5个,应该足够用了。

2.1.hover和active

这两个属于UI伪类(link/visited/active/hover)四个中的其中两个,hover指当鼠标移动到元素上时触发某种样式;activate指鼠标按下时的某种样式。

hover使用场景:一些可点击的列表,表格行,卡片等,鼠标放上去之后背景颜色会发生变化,就可以使用hover。

active使用场景:按钮按下,图片按下以及一些可点击元素或者组件等的按下操作样式改变。

下面是一个非常简单的按钮案例(在线MP4转GIF不知道这个图能存在多久,看不见的底下评论提醒我):

c7dcb3008e5c

按钮的hover和active

第一个按钮当鼠标放上去是改变边框和字体颜色,第二则是在鼠标按下的时候改变背景和颜色。具体代码如下

.btn{

height: 34px;

padding: 6px 12px;

border-radius: 4px;

font-size: 15px;

color: rgba(0,0,0,.65);

font-weight: 400;

outline: none;

border: 1px solid #cbcbcb;

}

.btn:hover{

border-color: #3385ff;

color: #3385ff;

}

.btn2{

height: 34px;

padding: 6px 12px;

border-radius: 4px;

font-size: 15px;

color: #fff;

background: #3385ff;

border-width: 0;

font-weight: 400;

outline: none;

}

.btn2:active{

border: 1px solid #3385ff;

color: #3385ff;

background: #fff;

}

HTML:

按钮

按钮

使用非常简单,就是在类选择器后面使用一个冒号后面根据需求是鼠标放上去时触发还是按下时触发决定使用哪一个伪类。如上面第一个btn是( .btn:hover ) 第二个则是( .btn2:active )。

2.2.first-child last-child nth-child(n/odd/even)

这三个属于结构伪类,常用来给表格或者列表添加样式。

假设父元素是一个div,使用样式class=‘box’;

那么当定义.box:first-child或者.box:last-child时分别是指给div的第一个或者最后一个子元素添加样式。

nth-child这个就比较牛掰了,参数是一个数值代表给第几个元素添加样式,如果是odd标示给元素为奇数的添加样式,even则是给是偶数的元素添加样式。

看个例子,首行添加灰色背景,其他奇数行橙色背景的一个表格

c7dcb3008e5c

表格

css(简单不):

td,th {

padding: 12px;

}

table tr:nth-child(odd){

background: #ffab00;

}

table tr:first-child{

background: #ccc;

}

html(也很简单都是重复的):

标题1 标题2 标题3 标题4
content-1 content-1 content-1 content-1
content-2 content-2 content-2 content-2
content-3 content-3 content-3 content-3
content-4 content-4 content-4 content-4
content-5 content-5 content-5 content-5

3.常用伪元素

before 和 after是经常经常重用的伪元素。我们直接看两个最简单的例子。再一句话的前面(before)和后面(after)分别添加一个圆形和一个矩形。

c7dcb3008e5c

简单样例

我就是那句话!

css:

.eazy{

font-size: 18px;

}

.eazy::before{

content:”;

display: inline-block;

width: 10px;

height:10px;

background: #ffab00;

border-radius:50%;

}

.eazy::after{

content:”;

display: inline-block;

width: 10px;

height:10px;

background: #3385ff;

}

双冒号后面跟跟关键字before或者after,在后面的内容即是要给这个伪元素添加的样式。其中content属性一定要设置,可以设置为空,否则不会显示;其次,设置了依然没有显示就要设置表明这个伪元素块级元素。

3.1 在来看两个例子,项目开发中经常要画一些气泡,比如

c7dcb3008e5c

气泡

这是两种气泡,带有背景色的和带有边框的,实现上稍微有些区别,但是他们的小突起就是用伪元素画的。

HTML:

Hello, can I have a star?

Hello, can I have a star?

Hello, can I have a star?

Hello, can I have a star?

Hello, can I have a star?

css有点长,但是仔细观察90%的代码都是重复的并不难。主要变动是使用定位position属性控制小突起的位置,以及border-color来控制凸起箭头的朝向。三角形的画法原理可以看这里!

.bubble-box{

display: flex;

padding: 10px;

}

.bubble-top{

width: 120px;

padding: 10px;

background: #3385ff;

border-radius: 6px;

position: relative;

color:#fff;

}

.bubble-top::before{

content: ”;

width: 0;

height: 0;

position: absolute;

border:6px solid #3385ff;

border-color: transparent transparent #3385ff transparent;

left: 46%;

top: -12px;

}

.bubble-left{

width: 120px;

padding: 10px;

background: #3385ff;

border-radius: 6px;

position: relative;

color:#fff;

}

.bubble-left::before{

content: ”;

width: 0;

height: 0;

position: absolute;

border:6px solid #3385ff;

border-color: transparent #3385ff transparent transparent;

left: -12px;

top: 24px;

}

.bubble-bottom{

width: 120px;

padding: 10px;

background: #3385ff;

border-radius: 6px;

position: relative;

color:#fff;

}

.bubble-bottom::before{

content: ”;

width: 0;

height: 0;

position: absolute;

border:6px solid #3385ff;

border-color: #3385ff transparent transparent transparent;

left: 46%;

bottom: -12px;

}

.bubble-right{

width: 120px;

padding: 10px;

background: #3385ff;

border-radius: 6px;

position: relative;

color:#fff;

}

.bubble-right::before{

content: ”;

width: 0;

height: 0;

position: absolute;

border:6px solid #3385ff;

border-color: transparent transparent transparent #3385ff;

right: -12px;

top: 24px;

}

.bubble-noColor{

width: 120px;

padding: 10px;

border:1px solid #ccc;

border-radius: 6px;

position: relative;

color:#0f0f0f;

}

.bubble-noColor::before{

content: ”;

width: 9px;

height: 9px;

border-top: 1px solid #ccc;

border-left: 1px solid #ccc;

background: white;

transform: rotate(45deg);

position: absolute;

left: 46%;

top: -6px;

}

3.2 利用伪元素画一个时间轴

如图

c7dcb3008e5c

时间轴

解析,每一行都只设置左边框,这样就这回出现一条竖线,然后每一行前面加一个圆点,就会呈现时间轴的样式,加圆点当然是用伪元素了。

先看HTML,很简单:

  • 2018-11-15 吃了好吃的
  • 2018-11-16 不开心
  • 2018-11-18 蓝瘦香菇
  • 2018-11-23 滚蛋
  • 2018-12-10 嗯哼随心随遇把

css 先给li标签设置左边框border-left,

.list{

padding: 10px;

border: 1px solid #fff;

}

.list li{

list-style: none;

padding: 10px;

border-left: 1px solid #ccc;

}

第二步,添加伪元素

.list li::before{

content: ”;

display: inline-block;

width: 6px;

position: absolute;

height: 6px;

left: 16px;

margin-top: 7px;

border: 1px solid #ffab00;

border-radius: 50%;

background: #3385ff;

}

c7dcb3008e5c

3.3 伪元素怎么添加内容的

伪元素虽然是不存在于DOM树种的元素,但是也是可以添加内容的,就是上面提到的content属性。content属性可以是URL、字符串甚至是图片,视频等。

我们把第三节刚开始的那个前后圆形和矩形的content设置为’1’和’2′.就变成这样了。

c7dcb3008e5c

content 有值

所以content就是这只伪元素中内容的入口,这也解释了为什么不设置这个属性就不显示的原因,哪怕设置为空,也相当于我定义了这个伪元素。

最后再看一个例子:

c7dcb3008e5c

目录结构

如果人工去标示会非常的消耗成本,实际上伪元素就可以轻松解决这个问题。content + counters实现目录结构。

HTML:

  • 吃了好吃的
    • content
    • content
    • content
  • 不开心
  • 蓝瘦香菇
    • content
    • content
    • content
  • 滚蛋
  • 嗯哼随心随遇把

css counter-reset定义一个计数器后面跟一个名字,这个属性在哪个元素上设置则标示遇到这个元素我就重新开始计数,如上面的HTML,我们把这个属性设置到ul上,则遇到ul就重新计数(添加一个新的计数器,原计数器不受影响)。

.list2{

padding: 10px;

border: 1px solid #ccc;

}

.list2 li{

list-style: none;

}

.list2 ul{

counter-reset: xuhao;

}

.list2 li::before{

counter-increment: xuhao;

content: counters(xuhao, “.”) ” “;

}

在li元素的伪元素上接受这个计数值通过counters,第一参数接收计数器,第二参数指明新的计数值以什么字符链接在上一级计数值得后面

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228677.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:27
下一篇 2026年3月16日 下午6:27


相关推荐

  • gradle和maven区别

    gradle和maven区别Gradle 和 Maven 都是项目自动构建工具 编译源代码只是整个过程的一个方面 更重要的是 你要把你的软件发布到生产环境中来产生商业价值 所以 你要运行测试 构建分布 分析代码质量 甚至为不同目标环境提供不同版本 然后部署 整个过程进行自动化操作是很有必要的 整个过程可以分成以下几个步骤 编译源代码运行单元测试和集成测试执行静态代码分析 生成分析报告创建发布版本部署到目标环境部署传递过

    2026年3月20日
    2
  • JDBC_4数据库连接池[通俗易懂]

    JDBC_4数据库连接池[通俗易懂]数据库连接池JDBC数据库连接池的必要性在使用开发基于数据库的web程序时,传统的模式基本是按照以下步骤:在主程序(如servlet beans)中建立数据库连接进行sql操作断开数据库连接这种模式开发,存在的问题:普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证用户名和密码(大概花费0.05s-1s),需要数据库连接的时候,就向数据库要求一个,执行完成后再断开。这样的方式将会消耗大量的时间。数据库的

    2022年8月8日
    8
  • PS磨皮滤镜插件:Portraiture 3 for Mac激活成功教程版永久激活方法

    PS磨皮滤镜插件:Portraiture 3 for Mac激活成功教程版永久激活方法为大家推荐Mac上最好用的一款PS磨皮滤镜Portraiture。PortraiturMac主要用于人像图片润色,它可以在保持皮肤的色泽的情况下对图像中的皮肤、头发、眉毛、睫毛等部位进行平滑的疵点处理,功能强大。现为大家带来磨皮滤镜portraituremac激活成功教程版,软件内附激活成功教程补丁,可以助您成功激活成功教程激活portraiture磨皮滤镜。磨皮插件portraiture怎么安装port…

    2022年7月22日
    375
  • [Hadoop in China 2011] 邵铮:揭秘FaceBook Puma演变及发展

    [Hadoop in China 2011] 邵铮:揭秘FaceBook Puma演变及发展

    2021年6月20日
    95
  • 【详细】国内网站备案流程与步骤

    【详细】国内网站备案流程与步骤完成备案需要多久时间 国内网站备案流程与步骤大讲解

    2026年3月20日
    2
  • centos安装git命令_linuxjdk安装

    centos安装git命令_linuxjdk安装一、查看是否安装过git,git–version若出现以上版本号,则代表已经安装了git,不需要再次安装了,否则就安装其实安装的话,分为用yum安装和下载git源码编译安装。但是cetos5以及以下版本中的yum都没有git,无法使用yum安装,而cetos6可以使用yum安装git,但是安装的git是1.7.1版本的,而github需要的git版本最低都不能低于1.7.2。所以如…

    2022年4月20日
    66

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号