CSS 实现无限波浪边框卡片

news2024/11/27 17:58:25

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

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

完整代码下载

完整代码下载

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

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

相关文章

【产品】ADW300 无线计量仪表 用于计量低压网络的三相有功电能

1 概述 ADW300 无线计量仪表主要用于计量低压网络的三相有功电能&#xff0c;具有体积小、精度高、功能丰富等优点&#xff0c;并且可选通讯方式多&#xff0c;可支持 RS485 通讯和 Lora、2G、NB、4G 等无线通讯方式&#xff0c;增加了外置互感器的电流采样模式&#xff0c;从…

day6 nest商业项目初探·二(java转ts全栈/3R教室)

背景&#xff1a;今天看3r教室开放的这个项目 【美国 | 3.6w】TS全栈&#xff1a;Goflashdeals代购返利网站 &#xff08;2022.09&#xff09; - 3R酷 | 爱自由,不打工&#xff01;一个属于3R会员的社区 (3rku.com)省流&#xff1a;web程序起来了&#xff0c;admin没起来&#…

CUDA 12.4文档2 内核线程架构

本博客参考官方文档进行介绍&#xff0c;全网仅此一家进行中文翻译&#xff0c;走过路过不要错过。 官方网址&#xff1a;https://docs.nvidia.com/cuda/cuda-c-programming-guide/ 本文档分成多个博客进行介绍&#xff0c;在本人专栏中含有所有内容&#xff1a; https://bl…

分享|如何知道自己是不是大数据信用黑名单?

随着大数据技术在金融贷前审核环节中的运用&#xff0c;早在多年前都形成了大数据信用&#xff0c;大数据信用作为辅助的风控工具&#xff0c;作用变得十分重要&#xff0c;其中大数据黑名单就是大数据差的重要一种&#xff0c;那如何知道自己是不是大数据信用黑名单呢?本文详…

Linux:gcc

Linux&#xff1a;gcc gcc概述语言发展史gcc的编译过程预处理编译汇编 gcc的链接过程动态库与静态库 gcc概述 GCC&#xff08;英文全拼&#xff1a;GNU Compiler Collection&#xff09;是 GNU 工具链的主要组成部分&#xff0c;是一套以 GPL 和 LGPL 许可证发布的程序语言编译…

python--正则表达式,元字符,反义符,转义符,位数问题

正则表达式&#xff08;regular expression&#xff09;&#xff1a; 为什么使用正则表达式&#xff1a; 在软件开发过程中&#xff0c;经常会涉及到大量的关键字等各种字符串的操作&#xff0c;使用正则表达式能很大程度的简化开发的复杂度和开发的效率&#xff0c;所以pytho…

麒麟V10安装Redis6.2.6

1、下载redis安装包 Redis各版本下载&#xff1a;https://download.redis.io/releases/ 2、将下载后的.tar.gz压缩包上传到到服务器自定义文件夹下 3、 解压文件 tar -zxvf redis-6.2.6.tar.gzmv redis-6.2.6 redis4、安装redis 在redis文件夹下输入make指令 cd /opt/redi…

【React】react 初学增删改查购物车案例

界面 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>react-购物车案例</title><…

华为OD机试 - 机器人搬砖 - 二分查找(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

centos 7.9 nginx本地化安装,把镜像改成阿里云

1.把centos7.9系统切换到阿里云的镜像源 1.1.先备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup1.2.下载新的CentOS-Base.repo配置文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo特别…

css面试题--定位与浮动

1、为什么需要清除浮动&#xff1f; 在非IE浏览器下&#xff0c;容器不设高度且子元素浮动时&#xff0c;容器高度不能被内容撑开&#xff0c;内容会溢出到容器外面而影响布局。这种现象被称为浮动。 浮动的原理&#xff1a;浮动元素脱离文档流&#xff0c;不占用空间&#xff…

39-性能分析(下):APIServer性能测试和调优实战

在API上线之前&#xff0c;我们需要知道API的性能&#xff0c;以便知道API服务器所能承载的最大请求量、性能瓶颈&#xff0c;再根据业务对性能的要求&#xff0c;来对API进行性能调优或者扩缩容。通过这些&#xff0c;可以使API稳定地对外提供服务&#xff0c;并且让请求在合理…

java算法day49 | 动态规划part10 ● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II

121. 买卖股票的最佳时机 class Solution {public int maxProfit(int[] prices) {//1、定义dp数组&#xff0c;表示第i天持股票的状态dp[i][0]表示持有股票dp[i][1]表示不持有股票int[][] dpnew int[prices.length][2];//3、初始化数组dp[0][1]0;dp[0][0]-prices[0];//4、遍历顺…

Linux--进程的概念(二)

目录 一、进程的优先级1.1 基本概念1.2 查看进程优先级1.3 PRI&NI1.4 如何更改进程的优先级1.4.1 用top命令更改进程的nice1.4.2 用renice命令更改进程的nice 1.5 其他概念 二、环境变量2.1 基本概念2.2 常见的环境变量2.3 查看环境变量2.3.1 测试PATH2.3.2 测试HOME2.3.3 …

Android14之智能指针的弱引用、强引用、弱指针、强指针用法区别及代码实例(二百零五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

LTC4054 充电指示灯转灯电路

由于这个芯片只有CHRG# 引脚&#xff0c;不像4056 那样两个引脚能分别接一个LED&#xff0c;要实现充电指示就必须自己整整外围电路。先说明一下&#xff0c;网上常见的这种接法&#xff1a; 一个LED 直连CHRG# 引脚&#xff0c;我试了是不行的&#xff0c;即使充满电&#xff…

【国际会议火热征稿】2024年应用经济学、管理科学与社会国际学术会议(ICAEMSS 2024)

会议简介 2024年应用经济学、管理科学与社会国际学术会议将聚焦应用经济学和管理科学的前沿问题&#xff0c;深入探讨社会变革中的经济管理与科学应用。参会者将分享最新研究成果&#xff0c;交流学术观点&#xff0c;共同探索经济、管理与社会的融合发展之路。本次会议旨在推…

Zotero + Markdown论文工作流

文章目录 关键步骤Zotero Better BibTeXObsidian Citekey Plugin & WrittingPandoc Export 关键步骤 在Zotero中&#xff0c;使用Better BibTex生成.bib文件&#xff0c;用于提取索引信息。由于后续需要使用pandoc将markdown转换为word或者LaTeX&#xff0c;所以Better Bi…

记Kubernetes(k8s):访问 Prometheus UI界面:Warning: Error fetching server time

记Kubernetes&#xff08;k8s&#xff09;&#xff1a;访问 Prometheus UI界面:Warning: Error fetching server time 1、报错详情2、解决3、再次访问 PrometheusUI界面 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、报错详情 Warning:…

Linux启动过程、启动脚本目录介绍及检测思路分析

一、Linux系统启动过程 1、启动流程&#xff1a; Linux系统的启动过程可以分为5个阶段&#xff1a;内核的引导、运行init、系统初始化、建立终端、用户登录系统。 2、init程序的类型&#xff1a; 1&#xff09;SysV&#xff1a;init&#xff0c;CentOS 5之前&#xff0c;配置文…