HTML+CSS:3D卡片组件

news2024/11/17 21:42:53

效果演示

25-3D卡片组件.gif

实现了一个名为“卡片”的效果,当鼠标悬停在一个特定的元素上时,该元素会变得更亮,并且会在其他元素上方显示一个卡片。当鼠标悬停在卡片上时,卡片会变得更亮,并且会在其他元素上方显示一个提示信息。这个效果可以用来展示一些信息或者链接,让用户更好地了解和交互。

Code

<div class="container noselect">
    <div class="canvas">
        <div class="tracker tr-1"></div>
        <div class="tracker tr-2"></div>
        <div class="tracker tr-3"></div>
        <div class="tracker tr-4"></div>
        <div class="tracker tr-5"></div>
        <div class="tracker tr-6"></div>
        <div class="tracker tr-7"></div>
        <div class="tracker tr-8"></div>
        <div class="tracker tr-9"></div>
        <div class="tracker tr-10"></div>
        <div class="tracker tr-11"></div>
        <div class="tracker tr-12"></div>
        <div class="tracker tr-13"></div>
        <div class="tracker tr-14"></div>
        <div class="tracker tr-15"></div>
        <div class="tracker tr-16"></div>
        <div class="tracker tr-17"></div>
        <div class="tracker tr-18"></div>
        <div class="tracker tr-19"></div>
        <div class="tracker tr-20"></div>
        <div class="tracker tr-21"></div>
        <div class="tracker tr-22"></div>
        <div class="tracker tr-23"></div>
        <div class="tracker tr-24"></div>
        <div class="tracker tr-25"></div>
        <div id="card">
            <p id="prompt">HOVER OVER :D</p>
            <div class="title">look mom,<br>no JS</div>
            <div class="subtitle">
                mouse hover tracker
            </div>

        </div>
    </div>
</div>
/* 设置容器的样式 */
.container {
    position: relative; /* 相对定位 */
    width: 190px; /* 宽度 */
    height: 254px; /* 高度 */
    transition: 200ms; /* 过渡效果 */
  }
  
  /* 激活状态下容器的样式 */
  .container:active {
    width: 180px; /* 宽度变小 */
    height: 245px; /* 高度变小 */
  }
  
  /* 卡片样式 */
  #card {
    position: absolute; /* 绝对定位 */
    inset: 0; /* 四边与父容器对齐 */
    z-index: 0; /* 层级 */
    display: flex; /* 弹性布局 */
    justify-content: center; /* 水平居中对齐 */
    align-items: center; /* 垂直居中对齐 */
    border-radius: 20px; /* 边框圆角 */
    transition: 700ms; /* 过渡效果 */
    background: linear-gradient(43deg, rgb(65, 88, 208) 0%, rgb(200, 80, 192) 46%, rgb(255, 204, 112) 100%); /* 背景渐变色 */
  }
  
  /* 子标题样式 */
  .subtitle {
    transform: translateY(160px); /* Y轴方向上的位移 */
    color: rgb(134, 110, 221); /* 文字颜色 */
    text-align: center; /* 文字居中对齐 */
    width: 100%; /* 宽度 */
  }
  
  /* 标题样式 */
  .title {
    opacity: 0; /* 透明度 */
    transition-duration: 300ms; /* 过渡时间 */
    transition-timing-function: ease-in-out-out; /* 过渡动画的时间函数 */
    transition-delay: 100ms; /* 过渡延迟时间 */
    position: absolute; /* 绝对定位 */
    font-size: x-large; /* 字体大小 */
    font-weight: bold; /* 字体粗细 */
    color: white; /* 文字颜色 */
  }
  
  /* 鼠标悬停在追踪器上时显示标题 */
  .tracker:hover ~ #card .title {
    opacity: 1; /* 显示标题 */
  }
  
  /* 提示文字样式 */
  #prompt {
    bottom: 8px; /* 底部定位 */
    left: 12px; /* 左侧定位 */
    z-index: 20; /* 层级 */
    font-size: 20px; /* 字体大小 */
    font-weight: bold; /* 字体粗细 */
    transition: 300ms ease-in-out-out; /* 过渡效果 */
    position: absolute; /* 绝对定位 */
    max-width: 110px; /* 最大宽度 */
    color: rgb(255, 255, 255); /* 文字颜色 */
  }
  
  /* 追踪器样式 */
  .tracker {
    position: absolute; /* 绝对定位 */
    z-index: 200; /* 层级 */
    width: 100%; /* 宽度 */
    height: 100%; /* 高度 */
  }
  
  /* 鼠标悬停在追踪器上时隐藏提示文字 */
  .tracker:hover ~ #card #prompt {
    opacity: 0; /* 隐藏提示文字 */
  }
  
  /* 鼠标悬停在追踪器上时卡片的样式 */
  .tracker:hover ~ #card {
    transition: 300ms; /* 过渡效果 */
    filter: brightness(1.1); /* 亮度增加 */
  }
  
  /* 鼠标悬停在容器上时在卡片前面添加一个遮罩层 */
  .container:hover #card::before {
    transition: 200ms; /* 过渡效果 */
    content: ''; /* 内容为空 */
    opacity: 80%; /* 遮罩层透明度 */
  }
  
  /* 3D效果容器样式 */
  .canvas {
    perspective: 800px; /* 透视效果 */
    inset: 0; /* 四边与父容器对齐 */
    z-index: 200; /* 层级 */
    position: absolute; /* 绝对定位 */
    display: grid; /* 网格布局 */
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr; /* 网格列布局 */
    grid-template-rows: 1fr 1fr 1fr 1fr 1fr; /* 网格行布局 */
    gap: 0px 0px; /* 网格间隙 */
    grid-template-areas: "tr-1 tr-2 tr-3 tr-4 tr-5"
      "tr-6 tr-7 tr-8 tr-9 tr-10"
      "tr-11 tr-12 tr-13 tr-14 tr-15"
      "tr-16 tr-17 tr-18 tr-19 tr-20"
      "tr-21 tr-22 tr-23 tr-24 tr-25"; /* 网格区域布局 */
  }
  
  /* 卡片的背景遮罩层样式 */
  #card::before {
    content: ''; /* 内容为空 */
    background: linear-gradient(43deg, rgb(65, 88, 208) 0%, rgb(200, 80, 192) 46%, rgb(255, 204, 112) 100%); /* 背景渐变色 */
    filter: blur(2rem); /* 模糊效果 */
    opacity: 30%; /* 遮罩层透明度 */
    width: 100%; /* 宽度 */
    height: 100%; /* 高度 */
    position: absolute; /* 绝对定位 */
    z-index: -1; /* 层级 */
    transition: 200ms; /* 过渡效果 */
  }
  
  /* 追踪器位置样式 */
  .tr-1 {
    grid-area: tr-1; /* 网格区域位置 */
  }
  .tr-2 {
    grid-area: tr-2; /* 网格区域位置 */
  }
  .tr-3 {
    grid-area: tr-3; /* 网格区域位置 */
  }
  .tr-4 {
    grid-area: tr-4; /* 网格区域位置 */
  }
  .tr-5 {
    grid-area: tr-5; /* 网格区域位置 */
  }
  .tr-6 {
    grid-area: tr-6; /* 网格区域位置 */
  }
  .tr-7 {
    grid-area: tr-7; /* 网格区域位置 */
  }
  .tr-8 {
    grid-area: tr-8; /* 网格区域位置 */
  }
  .tr-9 {
    grid-area: tr-9; /* 网格区域位置 */
  }
  .tr-10 {
    grid-area: tr-10; /* 网格区域位置 */
  }
  .tr-11 {
    grid-area: tr-11; /* 网格区域位置 */
  }
  .tr-12 {
    grid-area: tr-12; /* 网格区域位置 */
  }
  .tr-13 {
    grid-area: tr-13; /* 网格区域位置 */
  }
  .tr-14 {
    grid-area: tr-14; /* 网格区域位置 */
  }
  .tr-15 {
    grid-area: tr-15; /* 网格区域位置 */
  }
  .tr-16 {
    grid-area: tr-16; /* 网格区域位置 */
  }
  .tr-17 {
    grid-area: tr-17; /* 网格区域位置 */
  }
  .tr-18 {
    grid-area: tr-18; /* 网格区域位置 */
  }
  .tr-19 {
    grid-area: tr-19; /* 网格区域位置 */
  }
  .tr-20 {
    grid-area: tr-20; /* 网格区域位置 */
  }
  .tr-21 {
    grid-area: tr-21; /* 网格区域位置 */
  }
  .tr-22 {
    grid-area: tr-22; /* 网格区域位置 */
  }
  .tr-23 {
    grid-area: tr-23; /* 网格区域位置 */
  }
  .tr-24 {
    grid-area: tr-24; /* 网格区域位置 */
  }
  .tr-25 {
    grid-area: tr-25; /* 网格区域位置 */
  }
  
  /* 鼠标悬停在追踪器上时卡片的旋转样式 */
  .tr-1:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(20deg) rotateY(-10deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-2:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(20deg) rotateY(-5deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-3:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(20deg) rotateY(0deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-4:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(20deg) rotateY(5deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-5:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(20deg) rotateY(10deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-6:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(10deg) rotateY(-10deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-7:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(10deg) rotateY(-5deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-8:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(10deg) rotateY(0deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-9:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(10deg) rotateY(5deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-10:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(10deg) rotateY(10deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-11:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(0deg) rotateY(-10deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-12:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(0deg) rotateY(-5deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-13:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-14:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(0deg) rotateY(5deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-15:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(0deg) rotateY(10deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-16:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(-10deg) rotateY(-10deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-17:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(-10deg) rotateY(-5deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-18:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(-10deg) rotateY(0deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-19:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(-10deg) rotateY(5deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-20:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(-10deg) rotateY(10deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-21:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(-20deg) rotateY(-10deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-22:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(-20deg) rotateY(-5deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-23:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(-20deg) rotateY(0deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-24:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(-20deg) rotateY(5deg) rotateZ(0deg); /* 旋转效果 */
  }
  .tr-25:hover ~ #card {
    transition: 125ms ease-in-out; /* 过渡效果 */
    transform: rotateX(-20deg) rotateY(10deg) rotateZ(0deg); /* 旋转效果 */
  }
  
  /* 禁止选中文本 */
  .noselect {
    -webkit-touch-callout: none; /* 禁止长按菜单 */
    -webkit-user-select: none; /* 禁止选择文本(Chrome、Safari) */
    -moz-user-select: none; /* 禁止选择文本(Firefox) */
    -ms-user-select: none; /* 禁止选择文本(IE、Edge) */
    user-select: none; /* 禁止选择文本(通用) */
  }

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

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

相关文章

开源:基于Vue3.3 + TS + Vant4 + Vite5 + Pinia + ViewPort适配..搭建的H5移动端开发模板

vue3.3-Mobile-template 基于Vue3.3 TS Vant4 Vite5 Pinia ViewPort适配 Sass Axios封装 vconsole调试工具&#xff0c;搭建的H5移动端开发模板&#xff0c;开箱即用的。 环境要求&#xff1a; Node:16.20.1 pnpm:8.14.0 必须装上安装pnpm&#xff0c;没装的看这篇…

力扣(leetcode)第118题杨辉三角(Python)

118.杨辉三角 题目链接&#xff1a;118.杨辉三角 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] …

c++入门语法—————引用,内联函数,auto关键字,基于范围的for循环,nullptr

文章目录 一.引用1.引例2.注意事项3.应用场景1.做参数&#xff08;a:输出型参数b:内容较大参数&#xff09;2.做返回值&#xff08;a:修改返回值&#xff0c;b:减少拷贝&#xff09; 4.引用和指针的区别 二.内联函数1.为什么有内联函数2.用法和底层3.特性 三.auto关键字1.基础示…

CVE-2024-0352 likeshop v2.5.7文件上传漏洞分析

本次的漏洞研究基于thinkPHP开发开的一款项目..... 漏洞描述 Likeshop是Likeshop开源的一个社交商务策略的完整解决方案&#xff0c;开源免费版基于thinkPHP开发。Likeshop 2.5.7.20210311及之前版本存在代码问题漏洞&#xff0c;该漏洞源于文件server/application/api/contr…

数据库之一 基础概念、安装mysql、sql语句基础

数据库之 基础概念、安装mysql、sql语句基础 【一】存储数据的演变过程&#xff1a; 文件存储&#xff1a; 初始阶段随意存放数据到文件&#xff0c;格式任意。目录规范引入&#xff1a; 软件开发使用目录规范&#xff0c;限制数据位置&#xff0c;建立专门文件夹。本地数据存…

inside 的坑

最近代码里面有一句inside 判断语句&#xff0c;明明条件满足&#xff0c;但是就是判断失败&#xff0c;代码如下&#xff1a; xxx;if(i inside {[7:0]}) begin //i5xxx;end xxx; 翻看sv 手册才发现 inside 后面跟的是range value&#xff0c;必须是从小写到大&#xff0c;也就…

腾讯云Linux(OpenCloudOS)安装tomcat9(9.0.85)

腾讯云Linux(OpenCloudOS)安装tomcat9 下载并上传 tomcat官网 https://tomcat.apache.org/download-90.cgi 下载完成后上传至自己想要放置的目录下 解压文件 输入tar -xzvf apache-tomcat-9.0.85.tar.gz解压文件&#xff0c;建议将解压后的文件重新命名为tomcat,方便后期进…

【vue】defineModel在vue3.4中的最新用法和详解

在2023年12月28日&#xff0c;尤大发布了vue3.4版本&#xff0c;这个版本主要对一些实验性特性的改进&#xff08;比如defineModel&#xff09;&#xff0c;大量重写了模板编译器并重构了响应式系统&#xff0c;可以说是大大提升了运行速度和效率。 之前在vue3.3中defineModel…

应急消防应用步入“繁花”时代,卓翼智能消防无人机顺势而行大有可为

近日&#xff0c;北京卓翼智能科技有限公司&#xff08;以下简称“卓翼智能”&#xff09;宣布完成超亿元B轮融资&#xff0c;融资金额高达2.5亿元。这个“智能无人系统”黑马品牌&#xff0c;凭什么出圈&#xff1f;重点发力在哪些领域呢&#xff1f;今天&#xff0c;带你走进…

Ubuntu 22.04.1 LTS 编译安装 nginx-1.22.1,Nginx动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化

1.Ubuntu 22.04.1 LTS 编译安装 nginx-1.22.1 1.1安装依赖 sudo apt install libgd-dev 1.2下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 1.3解压nginx tar -zvxf nginx-1.22.1.tar.gz 1.4编译安装 cd nginx-1.22.1 编译并指定安装位置&#xff0c;执行安装…

华为笔记本matebook pro X如何扩容 C 盘空间

一、前提条件 磁盘扩展与合并必须是相邻分区空间&#xff0c;且两个磁盘类型需要相同。以磁盘分区为 C 盘和 D 盘为例&#xff0c;如果您希望增加 C 盘容量&#xff0c;可以先将 D 盘合并到 C 盘&#xff0c;然后重新创建磁盘分区&#xff0c;分配 C 盘和 D 盘的空间大小。 访…

2024 新年HTML5+Canvas制作3D烟花特效(附源码)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

Ajax入门与使用

目录 ◆ AJAX 概念和 axios 使用 什么是 AJAX&#xff1f; 怎么发送 AJAX 请求&#xff1f; 如何使用axios axios 函数的基本结构 axios 函数的使用场景 1 没有参数的情况 2 使用params参数传参的情况 3 使用data参数来处理请求体的数据 4 上传图片等二进制的情况…

上海亚商投顾:创业板指创调整新低,全市场超4800只个股下跌

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整&#xff0c;创业板指午后跌超3%&#xff0c;深成指跌超2%&#xff0c;北证50指数跌逾6%。中…

sqli-labs-master less-1 详解

目录 关于MySQL的一些常识 information_schema 常用的函数 sqli-labs-master less-1 分析PHP源码 测试 关于MySQL的一些常识 information_schema information_schema 是 MySQL 数据库中的一个元数据&#xff08;metadata&#xff09;数据库&#xff0c;它包含…

LLM之makeMoE:makeMoE的简介、安装和使用方法、案例应用之详细攻略

LLM之makeMoE&#xff1a;makeMoE的简介、安装和使用方法、案例应用之详细攻略 目录 makeMoE的简介 1、对比makemore 2、相关代码文件 makMoE_from_Scratch.ipynb文件 makeMoE_Concise.ipynb文件 makeMoE的安装和使用方法 1、基于Databricks使用单个A100进行开发 makeM…

Mybatis 获取自增主键ID的几种方式

Mybatis 获取添加的自增主键ID的几种方式 需求实现1. 使用 GeneratedKeys2. 获取 Sequence 序号3. 使用 selectKey 标签 需求 很多时候新增了一条数据之后&#xff0c;不仅要知道是否插入成功&#xff0c;还需要获取存入之后的主键id 以便后续使用。通常的办法是&#xff1a;先…

C# IP v4转地址·地名 高德

需求: IPv4地址转地址 如&#xff1a;输入14.197.150.014&#xff0c;输出河北省石家庄市 SDK: 目前使用SDK为高德地图WebAPI 高德地图开放平台https://lbs.amap.com/ 可个人开发者使用&#xff0c;不过有配额限制。 WebAPI 免费配额调整公告https://lbs.amap.com/news/…

ArcGIS Pro 如何计算长度和面积等数据?

要素的几何属性属于比较重要的信息&#xff0c;作为一款专业的GIS软件&#xff0c;ArcGIS Pro自然也是带有计算几何的功能&#xff0c;这里为大家介绍一下计算方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的矢量数据&#xff0c;除了矢…

基于JAVA+SpringBoot+Vue的前后端分离的美食分享推荐平台2

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在当今社会&#xff0…