前端 CSS 经典:3D Hover Effect 效果

devtools/2024/10/11 13:30:14/

前言:有趣的 3D Hover Effect 效果,通过 js 监听鼠标移动,动态赋值 rotateX,rotateY 的旋转度来实现。

效果图:

代码实现:

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><metaname="viewport"content="initial-scale=1.0, user-scalable=no, width=device-width"/><title>document</title><style>body {background: #000;}.card {margin: 200px auto;width: 400px;border-radius: 10px;transform: perspective(500px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));transition: 0.3s;}.card img {width: 100%;border-radius: inherit;}.card:hover {box-shadow: -3px -3px 10px #54a29e, 3px 3px 10px #a79d66;}</style></head><body><div class="card"><img src="img.jpg" /></div><script>const card = document.querySelector(".card");const yRange = [-10, 10];const xRange = [-10, 10];function getRotateDeg(range, value, length) {return (value / length) * (range[1] - range[0]) + range[0];}card.onmousemove = (e) => {const { offsetX, offsetY } = e;const { offsetWidth, offsetHeight } = card;const ry = -getRotateDeg(yRange, offsetX, offsetHeight);const rx = getRotateDeg(xRange, offsetY, offsetWidth);card.style.setProperty("--rx", `${rx}deg`);card.style.setProperty("--ry", `${ry}deg`);console.log(rx, ry);};card.onmouseleave = () => {card.style.setProperty("--rx", 0);card.style.setProperty("--ry", 0);};</script></body>
</html>


http://www.ppmy.cn/devtools/44982.html

相关文章

python作业:实现一个任务列表管理系统,使用到python类、对象、循环等知识

实现一个简单的任务列表管理系统&#xff0c;可以用于python学习的作业或者练习。系统的功能包括&#xff1a; 用户可以添加任务、查看任务列表、标记任务为已完成&#xff0c;以及删除任务。 代码如下&#xff1a; class Task: def __init__(self, name, completedFalse):…

修改ModelLink在RTX3090完成预训练、微调、推理、评估以及TRT-LLM转换、推理、性能测试

修改ModelLink在RTX3090完成预训练、微调、推理、评估以及TRT-LLM转换、推理、性能测试 1 参考文档2 测试环境3 创建容器4 安装AscendSpeed、ModelLink5 下载LLAMA2-7B预训练权重和词表6 huggingface模型的推理及性能测试7.1 修改torch,deepspeed规避缺失npu环境的问题7.2 修改…

《Python学习》-- 入门篇三

一、类的定义 Python是一种动态类型语言&#xff0c;可以在运行过程中添加、修改对象的类属性。这点和JAVA不同。 # 类 # 类是对象的抽象 # 类里面的函数称为方法 # 类的命名通常遵循用首字母大写的驼峰式命名法&#xff08;CapWords&#xff0c;也称为骆驼式命名法&#xff0…

大数据信用报告分析和评估有什么意义

大数据信用这个词在现在已经是很常见的了&#xff0c;只要是申贷的朋友对它就不陌生&#xff0c;在明面上的信用资质刚刚满足审核要求&#xff0c;但又要把控风险的时候&#xff0c;这个时候大数据信用就会作为风控机构交叉核查的重要依据。那你知道大数据信用报告分析和评估有…

ros2 launch gazebo_ros gazebo.launch.py无法启动

现象&#xff1a; 我的系统是ubuntu22.04&#xff0c;ros2的版本是humble&#xff0c;当运行os2 launch gazebo_ros gazebo.launch.py命令&#xff0c;会卡死在第六行&#xff0c;gazebo也不会打开但最后单独使用gazebo则可以打开 原因&#xff1a; 没有设置环境变量 解决办法 …

java中String、List、数组之间的转换方式

在Java中&#xff0c;String、List 和数组&#xff08;如 String[]&#xff09;之间的转换是常见的操作。下面是如何在它们之间进行转换的示例。 1. String 转 List 通常&#xff0c;你不会直接将一个完整的String转换为List&#xff0c;但你可以将包含多个元素的字符串&…

自动驾驶学习3-摄像头(1)

1、简介 车载摄像头指安装在汽车上&#xff0c;用于监控汽车内外环境情况以辅助汽车驾驶员行驶的摄像设备。智能驾驶的眼睛。 分类&#xff1a; 车载摄像头按安装位置的不同可分为前视、后视、环视、内视车载摄像头。 前视摄像头需要进行测距功能&#xff0c;所以一般分辨率要…

Firefox国际版

Firefox国际版官方网址&#xff1a; Download the Firefox Browser in English (US) and more than 90 other languagesEveryone deserves access to the internet — your language should never be a barrier. That’s why — with the help of dedicated volunteers around…