从青铜到王者10个css3伪类使用技巧和运用,了解一哈

从青铜到王者10个css3伪类使用技巧和运用,了解一哈伪类经常与伪元素混淆,伪元素的效果类似于通过添加一个实际的元素才能达到,而伪类的效果类似于通过添加一个实际的类来达到。实际上css3为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。伪类与伪元素的本质区别就是是否抽象创造了新元素。具体的伪类和伪元素相…

写在前面

伪类经常与伪元素混淆,伪元素的效果类似于通过添加一个实际的元素才能达到,而伪类的效果类似于通过添加一个实际的类来达到。实际上css3为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。伪类与伪元素的本质区别就是是否抽象创造了新元素。具体的伪类和伪元素相关知识本文就不深入,下面介绍一下从青铜到王者10个css3伪类使用技巧和运用。直击案例代码

青铜-1、伪类实现盒子阴影

众所周知,Animate/transition box-shadow 可以使用box-shadow属性来实现盒子阴影效果,但repaint消耗较多,于是这里提出通过修改伪元素的透明度来实现盒子阴影

实现原理:

通过改变透明度,这样从一个非默认值更新它的值,就不需要承担任何重绘(参见:https://csstriggers.com/opacity)

(ps:貌似莫名的解锁了一个关于前端css优化,坏笑坏笑)

这里设置一个空的伪元素设置阴影透明度为0隐藏,再通过鼠标悬停恢复它的透明度,下面是传统和伪类实现的代码对比

<div class="before">
    <h1>Before</h1>
    <p>Animate/transition box-shadow 可以使用box-shadow属性来实现盒子阴影效果,但重绘消耗较多</p>
</div>
 <hr />
<div class="after">
    <h1>After</h1>
    <p>通过修改伪元素的透明度来实现同样的效果,没有重绘消耗</p>
</div>

.before {
    padding: 1em;
    background-color: #fff;
    -webkit-transition: 0.2s;
    transition: 0.2s;
}
.before:hover {
    box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.3);
}
.after {
    position: relative;
    padding: 1em;
    background-color: #fff;
}
.after:before {
    content: "";
    position: absolute;  
    top: 0;
    right: 0;
    bottom: 0;  
    left: 0;
    z-index: -1;
    box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.3);
    opacity: 0;
    will-change: opacity;
    -webkit-transition: 0.2s;
    transition: 0.2s;
}
.after:hover:before {
    opacity: 1;
}

效果:(完整代码见后文链接)

从青铜到王者10个css3伪类使用技巧和运用,了解一哈

青铜-2、伪元素:before实现的面包屑导航栏

<ul class="breadcrumb">
    <li><a href="#">Home</a>
    </li>
    <li><a href="#">Pictures</a>
    </li>
    <li><a href="#">Summer 15</a>
    </li>
    <li>Italy</li>
</ul>

ul.breadcrumb {
    padding: 8px 16px;
    list-style: none;
    background-color: #eee;
}
ul.breadcrumb li {
    display: inline;
}
ul.breadcrumb li+li:before {
    padding: 8px;
    color: black;
    content: "/\00a0";
}
ul.breadcrumb li a {
    color: green;
}

效果:

从青铜到王者10个css3伪类使用技巧和运用,了解一哈

青铜-3、伪元素实现悬停时按钮填充和边界浮动动画

效果:(完整代码见后文链接)从青铜到王者10个css3伪类使用技巧和运用,了解一哈

青铜-4、伪类after实现的三角箭头

实现原理:三边设置边框,箭头指向的那个方向的border不用设置,位于箭头两边的边框颜色为透明(transparent),对边为主体边框颜色(较大的)/主体背景颜色(较小的),因为我们要有边框颜色的三角箭头,当第一个箭头(较大的)被第二个箭头(较小的)通过准确覆盖之后剩下没被覆盖的边缘就是合成三角箭头的边框了,其颜色就是较大的那个三角箭头的颜色,可调。而较小的那个三角箭头的颜色要设置成主体颜色,进行负值定位偏移时要把主体边框盖住,从而与主体合在一起了

<div class='container'>
    <img alt='' src='http://placehold.it/400x200'>
    <div class='arrow-left'></div>
</div>
<div class='container new'>
    <div class='arrow-right'></div>
    <img alt='' src='http://placehold.it/400x200'>
</div>

.arrow-left:before {
    z-index: 9999;
    content: "";
    display: block;
    width: 0;
    height: 0;
    border-top: 20px solid transparent;
    border-bottom: 20px solid transparent;
    border-right: 20px solid #E9E9E9;
    position: absolute;
    left: -20px;
    top: 80px;
}

效果:(完整代码见后文链接)

从青铜到王者10个css3伪类使用技巧和运用,了解一哈

青铜-5、伪类after实现的图片箭头

效果:(完整代码见后文链接)

从青铜到王者10个css3伪类使用技巧和运用,了解一哈

青铜-6、伪元素实现带角度的底部边界(倾斜的边界)

原理:修改webkit-transform: skewY属性来修改倾斜度(旋转也是一样的道理)

.edge--bottom {
    position: relative;
    z-index: 1;
}
.edge--bottom:after {
    background: inherit;
    content: '';
    display: block;
    height: 50%;
    left: 0;
    position: absolute;
    right: 0;
    z-index: -1;
}
.edge--bottom:after {
    bottom: 0;
    -webkit-transform: skewY(-1.5deg);
    -ms-transform: skewY(-1.5deg);
    transform: skewY(-1.5deg);
    -webkit-transform-origin: 100%;
    -ms-transform-origin: 100%;
    transform-origin: 100%;
}

效果:(完整代码见本文结尾链接)

从青铜到王者10个css3伪类使用技巧和运用,了解一哈

王者-1、伪元素和平移(translate)变换实现的提示框

 <div class="row">
        <a rel="nofollow" rel="noreferrer" href="#" class="btn tooltip top">
            <span>TOOLTIP TOP</span>
            <span class="tooltip-content">Lorem ipsum dolor sit amet</span>
        </a>
    </div>

.tooltip .tooltip-content::after {
    background: #05a8ff;
    content: "";
    height: 10px;
    position: absolute;
    -webkit-transform: rotate(45deg);
    transform: rotate(45deg);
    width: 10px;
}
.tooltip.top .tooltip-content {
    bottom: calc(100% + 1.5em);
    left: 50%;
    -webkit-transform: translateX(-50%);
    transform: translateX(-50%);
}
.tooltip.top .tooltip-content::after {
    bottom: -5px;
    left: 50%;
    margin-left: -5px;
}

效果:(完整代码见本文结尾链接)

从青铜到王者10个css3伪类使用技巧和运用,了解一哈

王者-2、使用CSS3伪元素实现的自动打字动画

原理:Typing Animation with Pseudo-Elements 看起来是打字,其实是使用伪元素覆盖在字符串上,然后逐渐减少伪元素覆盖宽度来实现的视觉效果

<div>
    <h1>Typing Animation</h1>
    <p class="tagline">
        <span class="tagline-skill"><span class="tagline-skill_inner">webdesign</span></span>
    </p>
</div>

.tagline-skill_inner:after {
    content: "";
    position: absolute;
    top: -1px;
    right: 0;
    bottom: -2px;
    left: 0;
    border-left: 1px solid #fff;
    background-color: #2a2a28;
    -webkit-animation: animatetoright 1s steps(10) infinite alternate;
    animation: animatetoright 1s steps(10) infinite alternate;
}

效果:(完整代码见本文结尾链接)

从青铜到王者10个css3伪类使用技巧和运用,了解一哈

王者-3、CSS3 伪元素构建的文章水印背景

h1 {
    position: relative;
    margin: 0;
    font-weight: bold;
    letter-spacing: -0.05rem;
    line-height: 1;
    text-transform: uppercase;
    z-index: 10;
}
h1:before {
    content: "2018/08";
    font-family: monospace;
    font-size: 10rem;
    position: absolute;
    top: 2rem;
    left: -2rem;
    z-index: 0;
    line-height: 1;
    color: rgba(50, 25, 0, 0.1);
}

效果:(完整代码见本文结尾链接)

从青铜到王者10个css3伪类使用技巧和运用,了解一哈

王者-4、CSS3 用伪元素做页码摘要

a {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-flex-flow: row nowrap;
    -ms-flex-flow: row nowrap;
    flex-flow: row nowrap;
    -webkit-box-align: baseline;
    -webkit-align-items: baseline;
    -ms-flex-align: baseline;
    align-items: baseline;
    text-decoration: none;
    -webkit-transition: color .2s ease-in-out;
    transition: color .2s ease-in-out;
}
a::before {
    height: .1em;
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 auto;
    -ms-flex: 1 1 auto;
    flex: 1 1 auto;
    -webkit-box-ordinal-group: 2;
    -webkit-order: 1;
    -ms-flex-order: 1;
    order: 1;
    background: left bottom/contain repeat-x url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3IDIiPjxjaXJjbGUgZmlsbD0iI2ZmZiIgY3g9IjMuNSIgY3k9IjEiIHI9IjEiLz48L3N2Zz4=);
    content: '';
}
a::after {
    -webkit-box-ordinal-group: 3;
    -webkit-order: 2;
    -ms-flex-order: 2;
    order: 2;
    content: "p." attr(data-page);
}

效果:(完整代码见本文结尾链接)

从青铜到王者10个css3伪类使用技巧和运用,了解一哈

王者-5、伪类兼容性了解一下

1、IE8不支持CSS3中很多特性,比如伪元素nth-child,可以使用+号(代表相邻元素)来实现相同功能

2、Google的IE9.js是解决IE5.5到IE8 CSS3特性兼容性问题的JS库

最后

CSS的世界很美好,每个知识点都可以值得深入研究和实践,对于伪类、伪元素也有很多土味特效可以写出来,比如说图片遮罩、图片背景模糊,更多高级的鼠标经过事件特效等等,上边的10个案例是我个人工作上总结和参考踏得网上资源整理,希望对大家有所帮助

最后附上github示例源码,可下载体验。

接下来的下篇,我将写一些在vue页面上交互上的的运用技巧,一样都是干货,该篇文章传送门《当大多数人对Vue理解到炉火纯青的时候,是不是该思考一下怎么让vue页面骚气起来》

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

(0)

相关推荐

  • 【原创】强撸基于 .NET 的 Redis Cluster 集群访问组件

    【原创】强撸基于 .NET 的 Redis Cluster 集群访问组件Hello 大家好,我是TANZAME,我们又见面了。今天我们来聊聊怎么手撸一个 Redis Cluster 集群客户端,纯手工有干货,您细品。 随着业务增长,线上环境的QPS暴增,自然而然

    2023-03-13
    159
  • 数据分列后怎么是乱码_php导入sql文件

    数据分列后怎么是乱码_php导入sql文件数据库大概长这样 导出,格式选择 csv for ms excel 导出的csv文件用记事本打开,另存为txt格式,编码选择ANSI 把txt文件丢到excel里打开,发现所有内容都在同一列,长这样

    2023-02-08
    150
  • 刷第3方recovery_手机端刷recovery工具

    刷第3方recovery_手机端刷recovery工具下面是以ZUKZ1为例进行的详细讲解,其他手机通用,个别细节略有不同。所需工具可能有所不同,但是原理是相同的,请自行到论坛查找自己手机适合的工具

    2023-06-26
    147
  • 大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]

    大数据Hadoop之——Spark集群部署(Standalone)[亲测有效]一、Spark概述 Spark基础概念和原理讲解可以参考我上篇博文:大数据Hadoop之——计算引擎Spark 二、Spark的运行模式 1)Standalone(本章讲解) 独立模式,自己独立一套集

    2023-05-12
    130
  • idea2021永久激活_idea怎么激活永久

    idea2021永久激活_idea怎么激活永久转载自IntelliJIDEA2019IDEA2018激活注册码三种激活方式(持久更新-2019年5月7日)第一步在激活你的idea之前,你需要先有一个idea呀

    2023-03-23
    321
  • Python中的pandas join函数应用

    Python中的pandas join函数应用伴随着大数据时代的到来,数据处理的重要性也逐渐受到更多人的重视。pandas作为python中一个非常重要的数据处理库,被广泛应用于数据清洗、分析、建模等各个方面。在pandas中,join函数是非常常用的函数之一,用于根据某些特定列将多个数据框连接在一起。

    2024-06-01
    59
  • Python字典数据结构的完全指南

    Python字典数据结构的完全指南Python字典数据结构是一个非常常用的数据结构,它用于存储多个键值对,并且能够快速查询和操作这些键值对。在本篇文章中,我们将从多个方面对Python字典数据结构进行详细的阐述。

    2024-04-08
    77
  • IntelliJ Idea 2020.1 正式发布,官方支持中文了「建议收藏」

    IntelliJ Idea 2020.1 正式发布,官方支持中文了「建议收藏」1. 前言 今天 IntelliJ Idea 2020.1 正式发布了!最大的一个亮点莫过于开始支持中文了。相信很多英语不好的同学已经期盼已久了。但是感觉登录界面感觉变丑了!建议把文章看完再去升级。 2. 汉化体验 我大致看了一圈,个别还没有汉化完毕,可能没有找到合适的描述词汇…

    2023-03-24
    309

发表回复

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