CSS 实现无限波浪边框卡片

CSS 实现无限波浪边框卡片

效果展示

  • 鼠标悬停效果,底部色块的边框是无限滚动的波浪
    在这里插入图片描述

  • 鼠标没有悬停效果
    在这里插入图片描述

CSS 知识点

  • CSS 基础知识回顾
  • 使用 radial-gradient 实现波浪边框
  • 使用 anumate 属性实现波浪边框动画和控制动画运动

波浪实现原理

波浪边框的实现思路其实就是边框容器(此实例中的边框容器是class="box"的元素)中声明一个元素来作为波浪边框的实现容器(此实例中的波浪容器为span元素),有了波浪边框容器后我们可以使用伪元素形成不同层次并结合radial-gradient实现不同的波浪形状,最后修改对应伪元素的颜色,这样就可以形成波浪,具体的层次关系如下:

在这里插入图片描述

本案例的层次关系如下:

在这里插入图片描述

整体页面布局实现

<div class="container"><div class="box" style="--clr: #2196f3"><!-- 波浪边框(四个span表示四个边框) --><span style="--i:0"></span><span style="--i:1"></span><span style="--i:2"></span><span style="--i:3"></span><img src="./b1.png" /><div class="content"><h2>Design</h2><p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nisi rempraesentium at consectetur nemo nihil.</p><a href="#">Read More</a></div></div>
</div>

编写卡片容器样式

.container .box {position: relative;top: 0;width: 360px;height: 360px;display: flex;justify-content: center;align-items: center;flex-direction: column;background: var(--clr);transition: 0.5s;padding: 60px;
}

实现上述代码后的效果如下:

在这里插入图片描述

编写卡片容器内部元素样式

.container .box::before {content: "";position: absolute;inset: 30px 30px 30px 30px;border: 5px solid #fff;border-radius: 20px;filter: drop-shadow(10px 10px 5px rgba(0, 0, 0, 0.5));pointer-events: none;transition: 0.5s;z-index: 1;
}.container .box img {position: absolute;z-index: 10;top: 120px;max-width: 120px;transition: 0.5s;/* 设置图片阴影 */filter: drop-shadow(10px 10px 5px rgba(0, 0, 0, 0.5));
}/* 内容部分只有鼠标悬停才会显示,默认是收起隐藏 */
.container .box .content {opacity: 0;transition: 0.5s;text-align: center;
}

编写卡片波浪边框样式

.container .box span {position: absolute;inset: 0;rotate: calc(var(--i) * 90deg);
}.container .box span::before {content: "";position: absolute;bottom: 0;width: 100%;background-repeat: repeat;height: 15px;background-image: radial-gradient(circle at 10px 15px,#333 12px,transparent 13px);background-size: 40px 20px;animation: anumate 0.5s linear infinite;/* 让波浪边框不会执行动画 */animation-play-state: paused;
}.container .box span::after {content: "";position: absolute;bottom: 0;width: 100%;background-repeat: repeat;height: 10px;background-image: radial-gradient(circle at 10px -5px,transparent 12px,#333 13px);background-size: 20px 20px;animation: anumate 0.5s linear infinite;/* 让波浪边框不会执行动画 */animation-play-state: paused;
}

实现上述的样式后,效果如下:

在这里插入图片描述

编写鼠标悬停卡片后的样式

.container .box:hover {top: 100px;
}.container .box:hover::before {inset: -200px 30px 30px 30px;
}.container .box:hover img {top: -150px;
}

实现上的样式后,效果如下:

在这里插入图片描述

编写鼠标悬停卡片后内容展示的样式

.container .box .content {opacity: 0;transition: 0.5s;text-align: center;
}.container .box:hover .content {opacity: 1;
}
.container .box .content h2 {font-size: 2em;color: #fff;text-align: center;
}.container .box .content p {color: #fff;text-align: center;
}.container .box .content a {position: relative;top: 20px;padding: 10px 20px;background: #fff;display: inline-block;color: #333;font-weight: 600;font-size: 1.1em;text-transform: uppercase;text-decoration: none;
}

实现波浪边框动画

.container .box:hover span::before,
.container .box:hover span::after {animation-play-state: running;
}@keyframes anumate {0% {background-position: 0 0;}100% {background-position: 40px 0;}
}

完成上述的代码后,波浪边框就会开始执行动画。

完整代码下载

完整代码下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/804463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dayjs 判断是否今天、本周内、本年内、本年外显示周几、月份等

效果: 判断是否今天需从 dayjs 中引入 isToday 插件&#xff1b; 判断是否两个日期之间需从 dayjs 中引入 isBetween 插件 import dayjs from dayjs import isToday from dayjs/plugin/isToday import isBetween from dayjs/plugin/isBetween// 注册插件 dayjs.extend(isBet…

浅谈对线程的理解

一、线程的概念 1、线程的概念 在Python中&#xff0c;想要实现多任务还可以使用多线程来完成。 2、为什么使用多线程&#xff1f; 进程是分配资源的最小单位 , 一旦创建一个进程就会分配一定的资源 , 就像跟两个人聊QQ就需要打开两个QQ软件一样是比较浪费资源的 . 线程是…

DP:子数组模型

一、最大子数组和 . - 力扣&#xff08;LeetCode&#xff09; 二、环形子数组的最大和 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxSubarraySumCircular(vector<int>& nums) {//动态规划思想解决 //环形数组问题&#xff0c;尝试转…

01-Git 快速入门

https://learngitbranching.js.org/?localezh_CN在线练习git 1. Git 安装好Git以后, 先检查是否已经绑定了用户名和邮箱 git config --list再检查C:\Users\xxx.ssh 下是否存在 id_rsa.pub , 存在的话复制其内容到 GitHub 的 SSH KEY 中 没有这一步, PUSH操作的时候会报错:…

土壤墒情监测系统:洞察土壤水分奥秘

TH-TS400土壤墒情监测系统&#xff0c;作为现代农业科技的重要组成部分&#xff0c;已经成为农业生产过程中不可或缺的一环。该系统通过先进的传感器技术和数据处理能力&#xff0c;能够实时监测土壤的水分状况&#xff0c;为农业生产提供精准、可靠的数据支持。本文将从系统构…

存储设备与网络监控运维实践

随着企业数据量的不断增长和网络架构的日益复杂&#xff0c;存储设备和网络设施的稳定运行变得至关重要。为了确保这些关键组件的性能和可用性&#xff0c;实施全面的监控策略是运维团队的首要任务。本文旨在为运维团队提供存储设备监控、网络流量分析以及网络配置管理方面的参…

如何在debian12.5上安装snap和docker

在Debian 12.5上安装Snap和Docker的步骤如下&#xff1a; 1. 更新系统包列表&#xff1a; sudo apt update sudo apt upgrade 2. 安装 Snap&#xff1a; Debian 12.5 默认已经启用了 Snap 支持&#xff0c;所以你可以直接通过 apt 来安装 Snap。 sudo apt install snapd …

算法打卡day29

今日任务&#xff1a; 1&#xff09;1005.K次取反后最大化的数组和 2&#xff09;134.加油站 3&#xff09;135.分发糖果 1005.K次取反后最大化的数组和 题目链接&#xff1a;1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 给定一个整数数组 A&…

Java Web-分层解耦

三层架构 当我们所有代码都写在一起时&#xff0c;代码的复用性差&#xff0c;并且难以维护。就像我们要修改一下服务端获取数据的方式&#xff0c;从文本文档获取改为到数据库中获取&#xff0c;就难以修改&#xff0c;而使用三层架构能很好的解决这个问题。 controller: 控…

MySql数据库从0-1学习-第二天DML和DQL学习

DML 对数据库表中的数据进行增删改操作 Insert 语法 //指定字段添加数据 insert into 表名(字段名1,字段名2) values (值1,值2);//全部字段添加数据: insert into 表名 values(值1,值2...);//批量添加数据(指定字段) insert into 表名(字段名1,字段名2) values(值1,值2),(值1,…

HJ61 放苹果(递归,苹果多的情况+盘子多的情况)

当苹果数 < 盘子数&#xff0c;有空盘&#xff0c;则忽略一个盘子&#xff0c;在n-1个放苹果&#xff0c;一直递推到n1&#xff0c;有一种摆法苹果数 > 盘子数&#xff0c;可以看作没有空盘。则可以选择忽略一个盘子&#xff0c;如上边做法。还可以选择每个盘子放一个苹果…

react ant design 通过函数弹出 modal窗口

在React Ant Design中&#xff0c;可以通过调用Modal组件的方法来动态弹出和关闭Modal窗口。具体步骤如下&#xff1a; 1、首先&#xff0c;在组件中引入Modal组件&#xff1a; import { Modal } from antd;2、在组件中定义一个函数来弹出Modal窗口&#xff1a; const showM…

GlusterFS分布式存储

目录 前言 一、GlusterFS分布式存储概述 1、GFS概念 2、GFS特点 3、GFS术语 4、GFS构成 5、GFS工作流程 6、后端存储如何定位文件 7、GlusterFs的卷类型 7.1 Distributed Volume&#xff08;分布式卷&#xff09; 7.2 Striped Volume&#xff08;条带卷&#xff09…

Pgsql怎样找到表中某个字段值重复的记录并删除冗余记录,只保留一条

背景 今天发现某个黄页爬取的数据有部分重复了&#xff0c;原本我用的公司详情页的url进行md5来作为主键做upsert入&#xff0c;但后面在核验数据时发现有些详情url虽是同一间公司的&#xff0c;但路由上有细微差别导致写入了重复的公司数据&#xff0c;所以要想办法清理掉重复…

线性变换在人工智能领域的深度实践与应用探索

线性变换&#xff0c;作为数学中的一种基本工具&#xff0c;在人工智能领域中发挥着举足轻重的作用。其强大的表示能力和灵活的运算特性使得线性变换成为机器学习、深度学习等多个子领域的核心组成部分。本文将详细探讨线性变换在人工智能领域中的实践应用&#xff0c;旨在揭示…

redis分布式锁介绍及代码示例

Redis 分布式锁是一种利用 Redis 实现的分布式系统中的锁机制&#xff0c;用于在分布式环境下控制多个客户端对共享资源的访问。它通过 Redis 的原子性操作来确保在分布式系统中的不同节点上&#xff0c;同一时刻只有一个客户端能够获取到锁&#xff0c;从而保证了对共享资源的…

自动化测试selenium

目录 什么是自动化测试 什么是selenium selenium工作原理 selenium环境搭建 1.查看chrome浏览器版本 2.下载chrome浏览器驱动 3.配置系统环境变量PATH 4.验证环境是否搭建成功 selenium相关API 1.定位元素 CSS选择器定位 xpath定位元素 标签定位元素 2.操作测试对…

2024年华为OD机试真题-孙悟空吃蟠桃-Python-OD统一考试(C卷)

题目描述: 孙悟空爱吃蟠桃,有一天趁着蟠桃园守卫不在来偷吃。已知蟠桃园有N颗桃树,每颗树上都有桃子,守卫将在H小时后回来。 孙悟空可以决定他吃蟠桃的速度K(个/小时),每个小时选一颗桃树,并从树上吃掉K个,如果树上的桃子少于K个,则全部吃掉,并且这一小时剩余的时间…

novnc本地文件读取和写入权限

在使用NoVNC&#xff08;一种基于Web的VNC客户端&#xff09;时&#xff0c;出于安全考虑&#xff0c;通常不允许直接从客户端访问或修改服务器上的文件系统。如果你需要在NoVNC中实现文件的读写&#xff0c;你可能需要使用一些特殊的配置或者服务器端的支持。 例如&#xff0…

浏览器工作原理与实践--渐进式网页应用(PWA):它究竟解决了Web应用的哪些问题

在专栏开篇词中&#xff0c;我们提到过浏览器的三大进化路线&#xff1a; 第一个是应用程序Web化&#xff1b; 第二个是Web应用移动化&#xff1b; 第三个是Web操作系统化&#xff1b; 其中&#xff0c;第二个Web应用移动化是Google梦寐以求而又一直在发力的一件事&#xf…