首页 > 其他分享 >3D卡片光效

3D卡片光效

时间:2024-03-24 11:46:18浏览次数:23  
标签:box style const 卡片 -- element 光效 255 3D

实现效果

实现注意

  1. mix-blend-mode: color-dodge;
  2. const calcX = ((y - box.y - box.height / 2) / multiple) * -1;

实现代码

<div id="element"></div>
body {
  height: 100vh;
  display: flex;
  transform-style: preserve-3d;
  perspective: 500px;
  cursor: pointer;
}

#element {
  --pre: 30%;
  margin: auto;
  width: 270px;
  height: 375px;
  border-radius: 10px;
  transform-style: preserve-3d;
  transition: all 0.1s;
  background-image: url("../pic/下载.png");
  overflow: hidden;
}
#element::after {
  position: absolute;
  content: "";
  inset: 0;
  background-image: url("../pic/2786177369-f0fc6ca57c9fc19d.webp");
  mix-blend-mode: color-dodge;
}
#element::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    115deg,
    transparent 0%,

    rgba(255, 255, 255, 0.5) var(--pre),
    rgba(0, 0, 0, 0.5) calc(var(--pre) + 25%),
    rgba(255, 255, 255, 0.5) calc(var(--pre) + 50%),
    transparent 100%
  );
  mix-blend-mode: color-dodge;
}
#element:hover::after,
#element:hover::before {
  display: block;
}
const multiple = 20;
const mouseOverContainer = document.getElementsByTagName("body")[0];
const element = document.getElementById("element");

function transformElement(x, y) {
  const box = element.getBoundingClientRect();
  const calcY = (x - box.x - box.width / 2) / multiple;
  const calcX = ((y - box.y - box.height / 2) / multiple) * -1;
  const percentage = parseInt(((x - box.x) / box.width) * 1000) / 10;

  element.style.transform = `rotateX(${calcX}deg) rotateY(${calcY}deg)`;
  element.style.setProperty("--pre", `${percentage}%`);
}

mouseOverContainer.addEventListener("mousemove", (e) => {
  window.requestAnimationFrame(function () {
    transformElement(e.clientX, e.clientY);
  });
});
mouseOverContainer.addEventListener("mouseleave", (e) => {
  window.requestAnimationFrame(function () {
    element.style.transform = "rotateX(0) rotateY(0)";
  });
});

背景图片

标签:box,style,const,卡片,--,element,光效,255,3D
From: https://www.cnblogs.com/codejnp/p/18092209

相关文章

  • NVIDIA 2024 GTC大会提出的数字孪生技术 —— 工厂3D仿真与AI大模型结合
    地址:https://www.youtube.com/watch?v=JQdyzQdMRS0FusingReal-TimeAIWithDigitalTwins......
  • CF1933D-Continual Mods【数学思维】
    CF1933D-ContinualMods【数学思维】一、题目大意题目链接https://codeforces.com/contest/1933/problem/D给定一个长度为n的数组a,可以任意改变a的顺序,变成数组b(也可以不改变)!问是否存在一个这样的b,使得\(b_1\)mod\(b_2\)mod...mod\(b_n\)≠0。(注意,是从左......
  • B端系统优化:用好卡片式设计,效果立竿见影翻倍。
    B端系统中,卡片式设计是一种常见的界面设计风格,它将信息和功能组织成一系列独立的卡片,每个卡片通常包含一个特定的信息块或功能模块。一、卡片式设计的特点包括:模块化和可重用性:卡片可以被独立设计和开发,然后在界面中进行组合和重复使用。这种模块化的设计可以提高开发效率,......
  • 3D模型优化服务+三维可视化+数字孪生+元宇宙=眸瑞科技
    眸瑞科技:老子云平台+AMRT3D数字孪生引擎老子云概述老子云3D可视化快速开发平台,集云压缩、云烘焙、云存储云展示于一体,使3D模型资源自动输出至移动端PC端、Web端,能在多设备、全平台进行展示和交互,是全球领先、自主可控的自动化3D云引擎。平台架构平台特性1、基于HTML5......
  • 通用人工智能的基石 —— 人工智能“新基建、关键基础设施”—— 3D游戏引擎
    相关:https://www.unrealengine.com/zh-CN/uses/simulationhttps://www.epicgames.com/site/zh-CN/careers/jobs?lang=zh-CN3D游戏引擎是人工智能的“新基建、关键基础设施”,这个概念或许很多人都没有听说过,甚至初听好感觉离谱、可笑,不过这却是事实。3D游戏引擎对于AI领域可以......
  • 揭秘3D大屏制作:轻松上手的必备工具清单!
    轻轻松松做出3D可视化大屏,你需要知道这几样东西3D可视化大屏一、3D可视化大屏介绍二、3D可视化应用领域三、3D可视化的技术四、3D可视化的制作平台五、总结大家好,这里是程序猿代码之路。在如今信息以及数据爆炸的时代,如何有效地展示和解释大量复杂的数据就成为了一......
  • Three.js中加载和渲染3D Tiles
    1.引言3DTiles是3DGIS中常见的三维数据格式,能否用Three.js来加载渲染呢?肯定是可以,Three.js只是一个WebGL框架,渲染数据肯定可以,但是加载、解析数据得手动解决有没有一个第三方库解决这个问题呢?有,比如这个:NASA-AMMOS/3DTilesRendererJS:Rendererfor3DTilesinJavascrip......
  • 探索宇宙奥秘,天文馆3D可视化引领未来观星新风尚
    在这个科技日新月异的时代,我们似乎离神秘的宇宙越来越近。 天文馆作为普及天文知识、展示宇宙奥秘的重要场所,一直备受人们的喜爱。然而,传统的天文馆展示方式往往局限于平面图片和简单的模型,无法让人真正感受到宇宙的浩瀚与壮丽。而3D可视化技术的出现,为天文馆带来了革命性的变......
  • 立体呈现航空风采,3D漫游可视化探索企业文化新境界
    在科技的浪潮中,3D技术日益成熟,为人们带来了前所未有的视觉体验。而今天,我们将借助这一神奇的技术,开启一场别开生面的航空企业文化漫游之旅,全方位地感受航空企业的魅力与风采。 置身3D模型中,眼前的景象变得栩栩如生,仿佛触手可及。我们可以自由地穿梭于各个展区,欣赏到不同区域的......
  • CodeForces 1943D2 Counting Is Fun (Hard Version)
    洛谷传送门CF传送门被自己的赛时智障操作气笑了。谁告诉你容斥钦定了几个要记到状态里面的。。。/tuu显然先找“好数组”的充要条件。对原数组\(a\)差分,设\(b_i=a_i-a_{i-1}\)。那么一次可以选择一对\((i,j)\)满足\(i\lej-2\),然后给\(b_i\)减\(1\),给\(b_......