伪元素的本质,以及伪元素的妙用(下)
伪元素的本质,及妙用
好了,上期讲解了什么是伪类,这期呢,我们来看看伪元素是什么?
我们可以看到,很多网站对它的定义为,用于向某些选择器设置特殊效果,这句话,真的是我还是不明白它在讲什么,太简洁了,我们来仔细分析分析这个鬼东西哈哈
伪元素的本质
这个伪元素,其实呢,就是个元素,但是呢,在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属性,就可以实现动画效果啦
还有更多效果,很多都是通过绝对定位来实现,加上动画效果,会有出其不意的效果。以后再分享一些相关的动画,敬请期待吧
喜欢的朋友点个关注,下次遇见不迷路哈哈
伪元素的本质,以及伪元素的妙用(下)相关推荐
- css3伪类做三角型,css伪元素写三角形
先说伪元素和伪类的区别: 伪类是针对CSS,而伪元素是针对HTML,伪类选择器是CSS选择器的一种,而伪类是"假"的HTML标签 伪类(选择器)本质上是为了弥补常规CSS选择器的不 ...
- CSS复合选择器(后代选择器、子元素选择器、并集选择器、伪类选择器、:focus伪类选择器)
复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的. 1. 后代选择器 后代选择器又称为包含选择器 作用:用来选择元素或元素组的子孙后代 其写法就是把外层标签写在前面,内层标签写在后面,中间 ...
- html css子标签,HTML+CSS系列:CSS选择器(标签、ID、类、通配符、后代、子元素、并集、伪类)...
一.标签选择器 Document h1 { color: red; } h2{ color: green; } Hello World! Hello World! Hello ! Hello ! 二. ...
- html中鼠标移走的伪元素,a标签的伪元素的应用——link,hover,visited,active
a标签应用中,一般有四个状态: 鼠标未移入前(link),鼠标移入时(hover), 鼠标点击时(active),鼠标点击后(visited). body{ padding: 200px 0; } a ...
- CSS复合选择器( 交集、 并集、后代、子元素、兄弟、伪类、伪元素)
CSS复合选择器 总结 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,目的是为了可以选择更准确更精细的目标元素标签. :first-child与:first-of-type区别 :fi ...
- 随元素而来,随元素而去,变一变样式,深藏功与名——论伪元素
大家好,这里是笑颜の行方. 本篇描述的是页面中一种神奇的存在--伪元素. 在CSS中有这样两个存在: :before 和 :after 如何使用呢?这需要满足一些条件. 我们先定义一段文本: < ...
- html伪类元素加图片,CSS伪类选择器:before、:after使用:插入字符、插入图片、插入项目编号...
before: 伪元素选择器用于在某个元素之前插入一些内容 伪类选择器:before使用content属性插入字符.属性插入图片 css3 .p_before:before { content: 'H ...
- 【伪类与伪元素】用CSS伪元素(以:before为例)插入图片
[伪类与伪元素]用CSS伪元素(以:before为例)插入图片 对于一些小图标类型的图片,若使用<img>略微有些麻烦,iconfont是一个不错的选择用起来也相当灵活,但是所需要步骤较为 ...
- Web前端线上系统课-01-HTML+CSS/08-结构伪类-图形-字体-字体图标-元素定位
结构伪类-图形-字体-字体图标-元素定位 结构性伪类选择器 nth-child 父元素中的第n个子元素 nth-child(n) <!DOCTYPE html> <html lang ...
最新文章
- HANA数据库为何如此之快
- Elasticsearch线程池介绍
- Quadratic equation(二次剩余)2019牛客多校第九场
- 《Essential C++》笔记之文件读写示例
- 初始化map和list的两种写法
- Noark入门之极速体验
- 初学者的SDN学习之路
- 推荐一款chrome浏览器插件:视频在线实时翻译
- Java中涉及到金钱计算方法
- 一个遮罩层怎么遮罩两个图层_遮罩动画是由两个图层组成的,一个是遮罩层,一个是被遮罩层。...
- 建立软件工程之动态模型(状态图)步骤
- 报SQL异常Parameter index out of range (1 > number of parameters, which is 0).
- 服务器错误数字(代码)对照表
- RL02: Q-Learning, create an autonomous Taxi (Part 2/2)
- 3.Flink-On-Yarn开发使用\原理\Session会话模式\Per-Job模式
- Goodnotes5 导出pdf bug
- 图解:什么是二叉排序树?
- ExiD、InD、HighD轨迹数据
- 学生管理系统登入页面
- 关于角色卡入土里与水平自动移动的问题
热门文章
- STA(静态时序分析)总结
- 设计师管理情绪 反复改_如何使用情绪板进行品牌标识设计
- 下列python保留字中不用于表示分支结构_【单选题】下列Python保留字中,不用于表示分支结构的是...
- Qt配置MySql数据库驱动(Windows)
- hp工作站 安装服务器系统,HP工作站操作系统安装说明.pdf
- 【python练习,6.15】(霍兰德人格分析雷达图等)
- 【Android】自定义蜘蛛网图
- Beginning C# 7 Programming with Visual Studio 2017 免积分下载
- python设定数值范围_Python 生成周期性波动的数据 可指定数值范围
- 【已解决】将CentOS7系统安装至U盘(二):配置打印机