中秋特辑——3D动态礼盒贺卡(可监听鼠标移动)

news/2025/3/15 19:20:25/

前言

在这里插入图片描述
「作者主页」:雪碧有白泡泡
「个人网站」:雪碧的个人网站
「推荐专栏」

java一站式服务
React从入门到精通
前端炫酷代码分享
★ 从0到英雄,vue成神之路★
uniapp-从构建到提升
从0到英雄,vue成神之路
解决算法,一个专栏就够了
架构咱们从0说
★ 数据流通的精妙之道★
★后端进阶之路★

请添加图片描述

文章目录

  • 前言
  • 先上效果
    • 简单预览
  • 核心代码
    • script代码
    • 部分css代码
  • 精彩福利

先上效果

简单预览

在这里插入图片描述

这里可以直接 看查源码内容, 刷新,最后一个是 放大**跳转网页** 点击运行后即可有如下效果,拖动鼠标即可

在这里插入图片描述
可随鼠标移动

核心代码

script代码

<script>var top=document.getElementById('top')var content=document.getElementById('content')var card=document.getElementById('card')var imgBox=document.getElementById('imgBox')top.addEventListener("click", ()=>{addClass(content,'moveOut')setTimeout(()=>{addClass(card,'showCard')},500)})card.onmouseover=()=>{toggleClass(imgBox,'imgBoxAct')}card.onmouseout=()=>{toggleClass(imgBox,'imgBoxAct')}function hasClass(obj,cls) {  return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));  };  function addClass(obj,cls) {  if (!hasClass(obj,cls)) obj.className += " " + cls;  }  Object.prototype.removeClass = function removeClass(obj,cls) {  if (hasClass(obj,cls)) {  var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');  obj.className = obj.className.replace(reg, ' ');  }  };  function toggleClass(obj,cls){  if(this.hasClass(obj,cls)){  this.removeClass(obj,cls);  }else{  this.addClass(obj,cls);  }  };
</script>

代码解释

  1. top 元素被点击时,给 content 元素添加 moveOut 类,并在 500 毫秒后给 card 元素添加 showCard 类。

  2. 当鼠标移动到 card 元素上时,给 imgBox 元素添加 imgBoxAct 类;当鼠标移出 card 元素时,移除 imgBoxAct 类。

  3. 定义了四个函数:

    • hasClass(obj, cls):判断 obj 元素是否包含 cls 类。

    • addClass(obj, cls):给 obj 元素添加 cls 类。

    • Object.prototype.removeClass:给 obj 元素移除 cls 类。

    • toggleClass(obj, cls):如果 obj 元素包含 cls 类,则移除该类;否则添加该类。
      在这里插入图片描述

部分css代码

这段代码是一个CSS样式表,用于设计一个网页的背景和一个卡片的样式。以下是每个部分的解释:

.bg{width: 100vw;height: 100vh;background:#f39c72;padding-top: 140px;font-family: "楷体","楷体_GB2312";
}

这段代码定义了一个类名为“bg”的元素,它的宽度和高度分别为视口的宽度和高度,背景颜色为橙色,顶部有一个内边距为140像素的空白区域,字体为“楷体”。

.bg:before{background-size:cover;background:url(../images/moonCakeBg.png) repeat center;content:"";position:absolute;top:0;bottom:0;right:0;left:0;animation:bgMove 10s infinite linear;
}

这段代码定义了一个伪元素,它是“bg”元素的前置元素。它的背景图片是一个月饼的图片,重复平铺,居中对齐。它的位置是绝对定位,占据整个视口,有一个名为“bgMove”的动画,持续时间为10秒,无限循环,线性变化。

.card{position:absolute;z-index: 4;width:350px;height:600px;left:50%;top:50%;display: none;cursor: pointer;transform:translate(-50%,-50%);background: url(../images/cardBg2.png)no-repeat;background-size:100% 100%;transform-style:preserve-3d;perspective:1700px;background-color:#6375fd;box-shadow:inset 300px 0 50px rgba(0,0,0,.5),0 20px 100px rgba(0,0,0,.5);transition:1s;
}

这段代码定义了一个类名为“card”的元素,它是一个卡片。它的位置是绝对定位,居中对齐。它的宽度和高度分别为350像素和600像素。它的背景图片是一个蓝色的图片,不重复平铺,居中对齐。它的变换样式是3D保留,透视点距离为1700像素。它的背景颜色是深蓝色,有一个阴影效果。它的过渡效果持续1秒。

.card:hover{/* perspective:2000px; */box-shadow:inset 20px 0 50px rgba(0,0,0,.5),0 20px 100px rgba(0,0,0,.5);
}

这段代码定义了当鼠标悬停在“card”元素上时的样式。它的阴影效果会变化。

.card .imgBox{width:100%;height:100%;position:relative;transform-origin:left;background: url(../images/ByteDance.png)no-repeat;background-size:100% 100%;  transition:1s;
}
.imgBoxAct{background: url(../images/cardBg1.png)no-repeat!important;background-size:100% 100%!important; }
.card:hover .imgBox{transform:rotatey(-135deg);
}

这段代码定义了一个类名为“imgBox”的元素,它是“card”元素的子元素,用于显示卡片的图片。它的宽度和高度分别为100%。它的位置是相对定位。它的变换原点是左侧。不重复平铺,居中对齐。它的过渡效果持续1秒。当鼠标悬停在“card”元素上时,它会旋转135度。此外,还定义了一个类名为“imgBoxAct”的元素,用于显示卡片的背景图片。

.card .details{position:absolute;top:0;left:0;box-sizing:border-box;z-index:-1;transition: all .2s ease-in-out;display: flex;flex-direction: column;justify-content: space-around;width: 100%;height: 100%;padding: 130px 40px 50px;
}
.detailsContent p{font-size: 16px;line-height: 24px;color: #302a28;
}
.card .details:hover{transform: scale(1.1);text-shadow:10px 40px 50px #6375fd;
}
h3{font-size: 24px;line-height: 24px;color: #2d6da7;
}
p{font-size: 14px;line-height: 8px;color: #2d6da7;}

这段代码定义了一个类名为“details”的元素,它是“card”元素的子元素,用于显示卡片的详细信息。它的位置是绝对定位,左上角对齐。它的盒模型是border-box。它的z-index为-1,表示它在“card”元素的下方。它的过渡效果持续0.2秒。它的子元素是一个标题和一段文本。当鼠标悬停在“details”元素上时,它会放大1.1倍,并且有一个文本阴影效果。

.showCard{display: block!important;animation: showCard 1s  linear!important;animation-fill-mode:forwards!important;
}
@keyframes bgMove{0%{background-position:0px 0px;}100%{background-position:200px 298px;}
}
@keyframes showCard{0%{transform:translate(-80%,140%) scale(1);}70%{transform:translate(-10%,-40%) scale(1.4);}100%{transform:translate(-10%,-50%) scale(1.2);}
}

这段代码定义了一个类名为“showCard”的元素,用于显示卡片。它的显示方式为块级元素。它有一个名为“showCard”的动画,持续时间为1秒,线性变化。动画结束后,元素的状态将保持在最后一帧。此外,还定义了两个关键帧动画,分别是“bgMove”和“showCard”。其中,“bgMove”用于控制背景图片的移动,“showCard”用于控制卡片的显示效果。
在这里插入图片描述

精彩福利

在这里插入图片描述

点击下方地址进入,里面有送书活动还有百度周边放送
链接地址可以私信我进群哦请添加图片描述


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

相关文章

Windows下使用pybind11教程(python调用C++代码)

1. 下载pybind11 gittub中下载&#xff0c;pybind下载后解压 2. C生成库文件 2.1.VS新建空白工程&#xff0c;工程名随意起 - 2.2更改目标文件名和配置类型 - 2.3更改目标文件拓展名 2.4添加include路径和库路径 包含目录中添加刚刚下载好的pybind的include路径以及pyhon的…

将labelme的红色标签改成白色

import numpy as np import os from PIL import Image np.set_printoptions(thresholdnp.inf) 这个函数用于将红色标签图转为白的的标签&#xff08;其实红色的标签表示灰度值为1(也是只有一个通道&#xff09;&#xff09;&#xff0c;但不知道为何会显示出红色 def RedToW…

LeetCode算法二叉树—226. 翻转二叉树

目录 226. 翻转二叉树 代码&#xff1a; 运行结果&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入…

英语——分享篇——每日100词——501-600

hill——will愿意——他不愿意去小山里 Easter——east东方(熟词)er儿(拼音)——东方的儿子都过复活节 exhibition——ex前夫(熟词)hi嗨(熟词)bition比神(谐音)——展览会上前夫很嗨&#xff0c;比神还开心 chase——vt.追捕&#xff0c;追逐&#xff0c;追赶——cha茶se色——…

DevSecOps 将会嵌入 DevOps

通常人们在一个项目行将结束时才会考虑到安全&#xff0c;这么做会导致很多问题&#xff1b;将安全融入到DevOps的工作流中已产生了积极结果。 DevSecOps&#xff1a;安全正当时 一直以来&#xff0c;开发人员在构建软件时认为功能需求优先于安全。虽然安全编码实践起着重要作…

蓝桥等考Python组别五级002

第一部分:选择题 1、Python L5 (15分) 用“True”和“False”对以下内容进行判断,结果是“False”的是( )。 Python的每行语句前面都不能有空格25 // 2的结果是12Python不能用保留字作为变量名Python的创始人是荷兰人吉多范罗苏姆正确答案:A 2、Python L5 (15分)…

再生之术:遗忘 Root 密码的 CentOS8 Stream 解决方案

文章目录 大魔头 RootGRUB 引导界面BootLoaderGRUB主要功能选择启动的操作系统编辑内核启动参数 进入GRUB 引导界面编辑内核启动参数单用户模式 进入内核编辑界面rd.break进入单用户模式 大魔头 Root 哈哈&#xff0c;你好&#xff01;今天&#xff0c;让我们来聊聊 Linux 系统…

星际争霸之小霸王之小蜜蜂(十五)--剧将终场

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十四&#xff09;--资本家的眼泪 星际争霸之小霸王之小蜜蜂&#xff08;十三&#xff09;--接着奏乐接着舞 星际争霸之小霸王之小蜜蜂&#xff08;十二&#xff09;--猫有九条命 星际争霸之小霸王之小蜜蜂&#xff08;十一…