使用CSS伪元素制作动感超酷的hover动画

news/2024/11/8 22:39:32/

css 有很多神奇的效果都是使用 CSS 伪元素利用视觉差来制作的,以前没怎么深入的研究过 css,这次复习 css 的知识点才恍然大悟,原来 css 这么 cool。

先上效果:
在这里插入图片描述

动画实现原理

这个组动画的实现原理很简单,前边是一个 div,这个 div 后边再加一个 div 做动画就可以实现了,那么我们需要前后两个 div 叠加在一起?NoNoNo,这个时候就需要 CSS 伪元素::before 和::after 出场了。

CSS 伪元素::before 和::after

CSS 伪元素::after 用来创建一个伪元素,作为已选中元素的最后一个子元素。通常会配合 content 属性来为该元素添加装饰内容。这个虚拟元素默认是行内元素。

::before 和::after 的区别就是一前一后,举个简单的例子:
举个例子:
在这里插入图片描述
代码如下:

<div id="demo1">这是顶部的div</div>
<style>#demo1{position: relative;width:100px;height:100px;color: white;background-color: black;}#demo1::before{content:'';position: absolute;width:110px;height:110px;z-index: -1;top:-5px;left:-5px;background-image: linear-gradient(var(--rotate), #5ddcff, #3c67e3 43%, #4e00c2);}#demo1::after{content:'';position: absolute;width:120px;height:120px;z-index: -2;top:-10px;left:-10px;background: linear-gradient(115deg, #4fcf70, #fad648, #a767e5, #12bcfe, #44ce7b);}
</style>

这段 css 代码中有几个关键的属性

div 必须作为伪元素定位的父类 position: relative;
伪元素为相对于 div 定位 position: absolute;
通过其他css属性来定义伪元素的属性,产生层叠和视觉上的错位。
最后就是利用 animation 来制作动画了,动画的效果可以选择移动旋转或是透明度,可以产生各种超酷的效果。

看下最后的效果:

在这里插入图片描述
最后的代码如下:

<div id="demo2">这是顶部的div</div>
<style>@property --rotate {syntax: "<angle>";initial-value: 132deg;inherits: false;}#demo2{position: relative;width:103px;height:103px;color: white;background-color: black;border-radius: 8px;padding: 3px;}#demo2::before {content: "";width: 112px;height: 112px;border-radius: 8px;background-image: linear-gradient(var(--rotate), #5ddcff, #3c67e3 43%, #4e00c2);position: absolute;z-index: -1;top: -5px;left: -5px;animation: spin1 2.5s linear infinite;}#demo2::after{position: absolute;content: "";top: calc(var(--card-height) / 6);left: 0;right: 0;z-index: -1;height: 100%;width: 100%;margin: 0 auto;transform: scale(0.8);filter: blur(calc(var(--card-height) / 5));background-image: linear-gradient(var(--rotate), #5ddcff, #3c67e3 43%, #4e00c2);opacity: 1;transition: opacity .5s;animation: spin1 2.5s linear infinite;}@keyframes spin1 {0% {--rotate: 0deg;}100% {--rotate: 720deg;}}
</style>

这个 css 的效果主要是靠伪类的动画来实现的,具体的细节还需要自己多多调试修改各个参数,使之达到自己的期望的动效。


http://www.ppmy.cn/news/64044.html

相关文章

什么是Java中的JVM?它的作用是什么

Java虚拟机&#xff08;Java Virtual Machine&#xff0c;简称JVM&#xff09;是Java语言的核心&#xff0c;也是Java程序运行的基础。JVM是一个独立的、能够在不同平台上运行的虚拟计算机&#xff0c;它可以执行Java程序&#xff0c;并将Java代码翻译成可在本地机器上运行的指…

《灰盒模型在非侵入式体外估计糖化血红蛋白百分比和数字脉搏波形的推导和验证》阅读笔记

目录 一、论文摘要 二、论文十问 Q1&#xff1a;论文试图解决什么问题&#xff1f; Q2&#xff1a;这是否是一个新的问题&#xff1f; Q3&#xff1a;这篇文章要验证一个什么科学假设&#xff1f; Q4&#xff1a;有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课…

【仪器控制】LAN Web 浏览器界面!

仪器支持不同的接口和协议进行远程控制。下表给出了概述 LAN web 浏览器界面 &#xff1a; LAN Web 浏览器界面允许轻松配置 LAN 和远程控制 R&S FSW&#xff0c;无需额外的安装要求。 仪器的 LAN 网络浏览器界面可与所有 W3C 兼容的浏览器正常工作。 通过 R&S FSW 的 …

Hello算法——笔记

文章目录 1 引言算法数据结构算法和数据结构的关系 2 复杂度分析时间复杂度空间复杂度 3 数据结构数据与内存数据结构分类 4 数组与链表 参考资料 1 引言 算法 算法是一组用于解决特定问题或执行特定任务的明确定义的计算步骤或指令集合。算法可以被视为一种解决问题的方法或…

PBDB Data Service:Text format(文本格式)

Text format&#xff08;文本格式&#xff09; 描述概要例子1&#xff1a;[/data1.1/occs/list.txt?base_nameDascillidae&limit5](https://paleobiodb.org/data1.1/occs/list.txt?base_nameDascillidae&limit5)2&#xff1a;[/data1.1/occs/list.txt?base_nameDasc…

深度学习技巧应用12-神经网络训练中批归一化的应用

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用12-神经网络训练中批归一化的应用,在深度学习中,批归一化(Batch Normalization,简称BN)是一种重要的技巧,它在许多神经网络中都得到了广泛应用。本文将详细介绍批归一化的原理和应用,并结合PyTorch框架构建一个简…

kafka消息队列的两种模式

第一种模式&#xff1a; 点对点模式&#xff08;一对一&#xff0c;消费者主动拉取数据&#xff0c;消息收到后消息清除&#xff09; 1.消息生产者生产消息发送给队列&#xff0c;然后消费者从队列中取出并且消费消息 2.消息被消费以后&#xff0c;queue中不再有存储&#xff0…

【Python 正则表达式】零基础也能精通的正则表达式学习路线与参考资料

文章目录 一、正则表达式基础二、进阶知识三、优秀实践参考资料&#xff1a; 一、正则表达式基础 正则表达式是一种用来描述字符模式的语言&#xff0c;它可以用来匹配、查找、替换字符串中的文本。在Python中&#xff0c;我们可以使用re模块来操作正则表达式。 正则表达式基…