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 rem
        praesentium 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;
  }
}

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

完整代码下载

完整代码下载

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Axure RP中的相关概念及高保真原型构建方法

1 Axure RP中概念介绍 对于构建高保真原型来说&#xff0c;需要知道事件&#xff08;Event&#xff09;、Case、Action等概念。Axure RP中给出这些概念&#xff0c;是为了方便原型的构建&#xff0c;尤其是高保真原型的构建。 事件&#xff08;Event&#xff09;是附着于控件…

如何下载pycharm历史版本

地址&#xff1a;https://www.jetbrains.com/pycharm/download/other.html

GitHub repository - Pulse - Contributors - Network

GitHub repository - Pulse - Contributors - Network 1. Pulse2. Contributors3. NetworkReferences 1. Pulse 显示该仓库最近的活动信息。该仓库中的软件是无人问津&#xff0c;还是在火热地开发之中&#xff0c;从这里可以一目了然。 2. Contributors 显示对该仓库进行过…

蓝桥杯备赛:考前注意事项

考前注意事项 1、DevCpp添加c11支持 点击 工具 - 编译选项 中添加&#xff1a; -stdc112、万能头文件 #include <bits/stdc.h>万能头文件的缺陷&#xff1a;y1 变量 在<cmath>中用过了y1变量。 #include <bits/stdc.h> using namespace std;// 错误示例 …

基于java+springboot+vue实现的智能停车计费系统(文末源码+Lw+ppt)23-30

摘 要 随着人们生活水平的高速发展&#xff0c;智能停车计费信息管理方面在近年来呈直线上升&#xff0c;人们也了解到智能停车计费的实用性&#xff0c;因此智能停车计费的管理也逐年递增&#xff0c;智能停车计费信息的增加加大了在管理上的工作难度。为了能更好的维护智能…

智慧农业引领乡村全面振兴:数字乡村建设推动农业现代化、农村治理现代化与农民生活品质新提升

文章摘要&#xff1a; 随着信息技术的迅猛发展&#xff0c;智慧农业正成为引领乡村全面振兴的重要力量。数字乡村建设以智慧农业为核心&#xff0c;推动农业现代化、农村治理现代化和农民生活品质新提升。本文将从智慧农业的内涵出发&#xff0c;探讨数字乡村建设如何推动农业现…

机器学习周报第37周

目录 一、文献阅读&#xff1a;You Only Look Once: Unified, Real-Time Object Detection1.1 摘要1.2 背景1.3 论文模型1.4 网络设计1.5 YOLO的局限性1.6 实现代码 一、文献阅读&#xff1a;You Only Look Once: Unified, Real-Time Object Detection 1.1 摘要 YOLO是一种新…

3D Showroom Level Kit Vol 1

3D Showroom Level Kit Vol 1是一个预制PBR模块化套件,可帮助您创建任何大小、类型的展厅/关卡! 你想推广新产品吗?制作严肃游戏?展示你的艺术?照片?VR应用程序?你需要这个。。。 该工具包非常易于使用和定制!更改颜色和道具位置。 使用移动设备和VR设备,低多边形建…

Mapmost Alpha:开启三维城市场景创作新纪元

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【leetcode面试经典150题】49. 合并区间(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

Linux 硬链接和软链接怎么区分使用?

一、什么是硬链接和软链接 硬链接 在Linux操作系统中&#xff0c;硬链接相当于存储在硬盘驱动器中的文件&#xff0c;它实际上引用或指向硬盘驱动器上的某个点。硬链接是原始文件的镜像副本。 硬链接与软链接的区别在于&#xff0c;删除原始文件不会影响硬链接&#xff0c;但…

乐趣Python——办公魔法:Word文件自动化

嘿&#xff0c;朋友们&#xff01;在这个办公小课堂中&#xff0c;我将为大家揭开一个神奇的秘密&#xff1a;Word文件自动化处理&#xff01; 通过这种魔法般的方式&#xff0c;我们可以大大提高办公效率&#xff0c;减少重复性工作。而Python作为我们的助手&#xff0c;将展现…

AI大赏-一些关键词的出图效果展示

AI绘画 AI 绘画是利用人工智能技术来生成、转换或增强数字图像和艺术作品的过程。这种技术可应用于各种领域&#xff0c;包括数字媒体、游戏开发、电影制作、设计、视觉艺术等。 具体领域有图像生成、图像转换、图像增强、艺术创作&#xff0c;受影响比较到的是数字媒体&…

【嵌入式基础知识学习】AD/DA—数模/模数转换

AD/DA—数模/模数转换概念 数字电路只能处理二进制数字信号&#xff0c;而声音、温度、速度和光线等都是模拟量&#xff0c;利用相应的传感器&#xff08;如声音用话筒&#xff09;可以将它们转换成模拟信号&#xff0c;然后由A/D转换器将它们转换成二进制数字信号&#xff0c…

C语言: 字符串函数(下)

片头 在上一篇中,我们介绍了字符串函数。在这一篇章中&#xff0c;我们将继续学习字符串函数&#xff0c;准备好了吗&#xff1f;开始咯&#xff01; 1.strncpy函数 1.1 strncpy函数的用法 strncpy是C语言中的一个字符串处理函数&#xff0c;它用于将一个字符串的一部分内容…

Linux进阶篇:进程检测和控制:ps命令详细讲解

Linux进程检测和控制&#xff1a;ps命令详细讲解 一、ps命令介绍 Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照&#xff0c;就是执行ps命令的那个时刻的那些进程&#xff0c;如果想要动态的显示进程信…

【WSL】在WIN11安装并使用Linux子系统(Ubuntu)

前言&#xff1a; 最近买了4060Ti 16G&#xff0c;可以尝试在本地实验大模型。一开始尝试使用Vmware搞Linux&#xff0c;发现没有办法加载GPU&#xff08;或者另外有办法没找到&#xff09;。所以只剩下了两条路&#xff1a;要么搞双系统&#xff0c;要么使用WSL&#xff08;W…

TypeScript 忽略红色波浪线

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

JavaScript:事件循环机制(同步、异步)(单、多线程)

事件循环机制: 多进程和多线程 1. 进程&#xff1a;程序的一次执行, 它占有一片独有的内存空间 2. 线程&#xff1a; CPU的基本调度单位, 是程序执行的一个完整流程 3. 进程与线程 * 一个进程中一般至少有一个运行的线程: 主线程 * 一个进程中也可以同时运行多个线程, 我们…

论文笔记:A Simple and Effective Pruning Approach for Large Language Models

iclr 2024 reviewer 评分 5668 1 intro 大模型网络剪枝的paper 在努力保持性能的同时&#xff0c;舍弃网络权重的一个子集现有方法 要么需要重新训练 这对于十亿级别的LLMs来说往往不现实要么需要解决依赖于二阶信息的权重重建问题 这同样可能带来高昂的计算成本——>引入…