伪元素的本质,及妙用

好了,上期讲解了什么是伪类,这期呢,我们来看看伪元素是什么?

我们可以看到,很多网站对它的定义为,用于向某些选择器设置特殊效果,这句话,真的是我还是不明白它在讲什么,太简洁了,我们来仔细分析分析这个鬼东西哈哈

伪元素的本质

这个伪元素,其实呢,就是个元素,但是呢,在html找不到对应的元素,所以它不占用dom元素节点,你只能在css样式里面发现它的踪迹,但是它也能跟其他真正的元素一样,实现相同的效果,因此被称为伪元素,这个元素伪装的到底挺好的。所以,我们来看看,它到底包含着哪些呢


看到这个,相比伪类,真的是福音哈哈。我们先before入手

(一)::before
在元素前插入一些内容,我们看看代码

 <div class="pseudo-element"><p>我是伪元素</p></div>
.pseudo-element {border: 1px solid black;width: 200px;height: 200px;
}


好了,在css中加进伪元素的代码

.pseudo-element::before {content: "我是before";
}

结果如下图所示

发现了没有,我并没有在html中加代码,而是在css中加了个before,也印证上面了上句话,它是不占dom节点的,js无法获取伪元素。下面after 也是同理

(二)::after

.pseudo-element::after {content: "我是after";
}


写到这里,你可能会觉得,content里面是不是写啥都行呢,它就只能是个字符串或者中文嘛? 哈哈这个问题确实有点意思, 上一篇博客已经整理好啦

https://blog.csdn.net/weixin_44142985/article/details/101594982 这个飞机票,想要了解的小伙伴可以去看看哈

好了,回归正题

(三)::first-line和first-letter 这两个就比较简单点啦,可能有复杂的但是我没想到哈

<div class="test"><p>我是第一行<br>我是第二行</p><h1>我是first-letter</h1>
</div>
.test p::first-line{color: red;
}
.test h1::first-letter{color: red;
}

如下图,相对比较简单,看看效果如下

好了,终于到了最艰难的时刻了,伪元素的妙用了

伪元素的妙用有很多,这里举几个例子,抛砖引玉,剩下的靠大伙啦

伪元素妙用

一般伪元素很多玩法,都是通过before和after来达到目的,我们先来看看它的用法

左边两个呢,在我上面的博客都有啦,一个是content的用法,这个是计数器的应用,还有一个清除浮动,第一篇写的很详细啦,有需要的可以去看看,现在我们先从右边开始

(一)与伪类的配合使用

<div class="test-wys"><p>伪类与伪元素</p>
</div>
.test-wys p{position: relative;width: 200px;height: 200px;color: red;background-color: transparent;
}
p::after{content: "";position: absolute;top: 0;right: 0;width: 200px;height: 200px;background-color: black;opacity: 0.1;
}
P:hover::after {opacity: 1;
}

其中涉及到的相对定位relative 和绝对定位absolute不懂得以后会出一个教程哈

上面得代码,如下图所示

鼠标过去的时候,如下图

可能会有小伙伴会问,我直接hover改变它的背景颜色不就好了,为何还要这么麻烦,其实,这种伪类和伪元素的结合,有时候对css优化是有一些方面的帮助的,比如 box-shadow ,通过在伪元素实现box-shadow 阴影,然后在hover改变透明度可以防止重绘,这个进阶的以后在css优化中会讲解

(二)after 和befre的绝对定位的使用

1.划分割线

<span>and</span>
span {position: relative;margin-left: 100px;}
span::after {content: "";position: absolute;top: 12px;left: 0;width: 100px;height: 1px;background-color: black;margin-left: 40px;
}
span::before {content: "";position: absolute;top: 12px;right: 0;width: 100px;height: 1px;background-color: black;margin-right: 40px;
}

2.画出平行四边形

<div class="parallelogram">平行四边形
</div>
.parallelogram {width: 200px;height: 200px;position: relative;background: transparent;margin-left: 100px;
}
.parallelogram::after {content: ''; position: absolute;top: 0; right: 0; bottom: 0; left: 0;z-index: -1;background: #58a;transform: skew(45deg);
}

其实本质就是通过伪元素对主元素的形状的重画重写,主元素的那个形状还在,伪元素就是自己根据主元素再画了一个

3.实现三角箭头

<div class="triangle">三角形
</div>
.triangle {border: 1px solid;width: 100px;height: 100px;margin-left: 100px;position: relative;
}
.triangle::after {content: "";display: block;width:  0px;height:  0px;border-top: 20px solid transparent;border-bottom: 20px solid transparent;border-right: 20px solid black;position: absolute;left: -20px;top: 30px;
}

在这里,我们要注意的是,border的边框设置成了20px,我们先看看效果

可能你会看不懂他是怎么实现的,我们来分析分析,如下代码

.triangle {border: 1px solid;width: 100px;height: 100px;margin-left: 100px;position: relative;
}
.triangle::after {content: "";display: block;width: 100px;height: 10px;border-top: 20px solid red;border-bottom: 20px solid yellow;border-right: 20px solid black;position: absolute;left: -20px;top: 30px;
}


把高度减少,你就会看到神奇的事情啦,自己动手试一试吧

4.动画效果

<div class="test-animate">动画
</div>
.test-animate {border: 1px solid black;width: 200px;height: 200px;margin-left: 600px;position: relative;
}
.test-animate::before {content: "";position: absolute;top: 0;width: 200px;height: 2px;background-color: black;transition: 2s all ease;
}
.test-animate:hover::before {content: "";position: absolute;top: -10px;width: 200px;height: 2px;background-color: black;transition: 0.4s all ease;
}



加上了 transition属性,就可以实现动画效果啦

还有更多效果,很多都是通过绝对定位来实现,加上动画效果,会有出其不意的效果。以后再分享一些相关的动画,敬请期待吧

喜欢的朋友点个关注,下次遇见不迷路哈哈

伪元素的本质,以及伪元素的妙用(下)相关推荐

  1. css3伪类做三角型,css伪元素写三角形

    先说伪元素和伪类的区别: 伪类是针对CSS,而伪元素是针对HTML,伪类选择器是CSS选择器的一种,而伪类是"假"的HTML标签 伪类(选择器)本质上是为了弥补常规CSS选择器的不 ...

  2. CSS复合选择器(后代选择器、子元素选择器、并集选择器、伪类选择器、:focus伪类选择器)

    复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的. 1. 后代选择器 后代选择器又称为包含选择器 作用:用来选择元素或元素组的子孙后代 其写法就是把外层标签写在前面,内层标签写在后面,中间 ...

  3. html css子标签,HTML+CSS系列:CSS选择器(标签、ID、类、通配符、后代、子元素、并集、伪类)...

    一.标签选择器 Document h1 { color: red; } h2{ color: green; } Hello World! Hello World! Hello ! Hello ! 二. ...

  4. html中鼠标移走的伪元素,a标签的伪元素的应用——link,hover,visited,active

    a标签应用中,一般有四个状态: 鼠标未移入前(link),鼠标移入时(hover), 鼠标点击时(active),鼠标点击后(visited). body{ padding: 200px 0; } a ...

  5. CSS复合选择器( 交集、 并集、后代、子元素、兄弟、伪类、伪元素)

    CSS复合选择器 总结 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,目的是为了可以选择更准确更精细的目标元素标签. :first-child与:first-of-type区别 :fi ...

  6. 随元素而来,随元素而去,变一变样式,深藏功与名——论伪元素

    大家好,这里是笑颜の行方. 本篇描述的是页面中一种神奇的存在--伪元素. 在CSS中有这样两个存在: :before 和 :after 如何使用呢?这需要满足一些条件. 我们先定义一段文本: < ...

  7. html伪类元素加图片,CSS伪类选择器:before、:after使用:插入字符、插入图片、插入项目编号...

    before: 伪元素选择器用于在某个元素之前插入一些内容 伪类选择器:before使用content属性插入字符.属性插入图片 css3 .p_before:before { content: 'H ...

  8. 【伪类与伪元素】用CSS伪元素(以:before为例)插入图片

    [伪类与伪元素]用CSS伪元素(以:before为例)插入图片 对于一些小图标类型的图片,若使用<img>略微有些麻烦,iconfont是一个不错的选择用起来也相当灵活,但是所需要步骤较为 ...

  9. Web前端线上系统课-01-HTML+CSS/08-结构伪类-图形-字体-字体图标-元素定位

    结构伪类-图形-字体-字体图标-元素定位 结构性伪类选择器 nth-child 父元素中的第n个子元素 nth-child(n) <!DOCTYPE html> <html lang ...

最新文章

  1. HANA数据库为何如此之快
  2. Elasticsearch线程池介绍
  3. Quadratic equation(二次剩余)2019牛客多校第九场
  4. 《Essential C++》笔记之文件读写示例
  5. 初始化map和list的两种写法
  6. Noark入门之极速体验
  7. 初学者的SDN学习之路
  8. 推荐一款chrome浏览器插件:视频在线实时翻译
  9. Java中涉及到金钱计算方法
  10. 一个遮罩层怎么遮罩两个图层_遮罩动画是由两个图层组成的,一个是遮罩层,一个是被遮罩层。...
  11. 建立软件工程之动态模型(状态图)步骤
  12. 报SQL异常Parameter index out of range (1 > number of parameters, which is 0).
  13. 服务器错误数字(代码)对照表
  14. RL02: Q-Learning, create an autonomous Taxi (Part 2/2)
  15. 3.Flink-On-Yarn开发使用\原理\Session会话模式\Per-Job模式
  16. Goodnotes5 导出pdf bug
  17. 图解:什么是二叉排序树?
  18. ExiD、InD、HighD轨迹数据
  19. 学生管理系统登入页面
  20. 关于角色卡入土里与水平自动移动的问题

热门文章

  1. STA(静态时序分析)总结
  2. 设计师管理情绪 反复改_如何使用情绪板进行品牌标识设计
  3. 下列python保留字中不用于表示分支结构_【单选题】下列Python保留字中,不用于表示分支结构的是...
  4. Qt配置MySql数据库驱动(Windows)
  5. hp工作站 安装服务器系统,HP工作站操作系统安装说明.pdf
  6. 【python练习,6.15】(霍兰德人格分析雷达图等)
  7. 【Android】自定义蜘蛛网图
  8. Beginning C# 7 Programming with Visual Studio 2017 免积分下载
  9. python设定数值范围_Python 生成周期性波动的数据 可指定数值范围
  10. 【已解决】将CentOS7系统安装至U盘(二):配置打印机