纯css实现3D鼠标跟随倾斜

这篇具有很好参考价值的文章主要介绍了纯css实现3D鼠标跟随倾斜。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

老规矩先上图

纯css实现3D鼠标跟随倾斜,js拒绝者联盟,前端,纯css,纯css3D跟随鼠标,纯css3D跟随鼠标运动,纯css3D跟随鼠标倾斜,css倾斜动画,纯css3D跟随鼠标动画

为什么今天会想起来整这个呢?这是因为和我朋友吵架,
就是关于这个效果的,就是这个 卡片懸停毛玻璃效果,

我朋友认为纯css也能写,

我则坦言他就是在放狗屁,这种跟随鼠标的3D效果要怎么可能能用纯css写,

然后吵着吵着发现,欸,好像真能用css写哦,我以前还写过这种类似的,就是这个取巧&视觉欺诈——纯css互动小飞机

然后我就来自己扇自己的脸了

原理在小飞机那写了,所以这里就不再赘述了

遵循开源精神,源码如下文章来源地址https://www.toymoban.com/news/detail-715730.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>纯css跟随鼠标倾斜</title>
  <style>
    @font-face {
      font-family: 'Fredoka One';
      font-style: normal;
      font-weight: 400;
      font-display: swap;
      src: url(https://fonts.gstatic.com/s/fredokaone/v14/k3kUo8kEI-tA1RRcTZGmTlHGCac.woff2) format('woff2');
      unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
    }

    *,
    :after,
    :before {
      padding: 0;
      margin: 0 auto;
      box-sizing: border-box;
    }

    body {
      background-color: #000;
      height: 100vh;
      display: grid;
      grid-template: repeat(15, 1fr)/repeat(15, 1fr);
      overflow: hidden
    }

    .cell {
      width: 100%;
      height: 100%;
      z-index: 2
    }

    .cell:nth-child(15n+1):hover~.content {
      --positionX: 0
    }

    .cell:nth-child(n+1):nth-child(-n+15):hover~.content {
      --positionY: 0
    }

    .cell:nth-child(15n+2):hover~.content {
      --positionX: 1
    }

    .cell:nth-child(n+16):nth-child(-n+30):hover~.content {
      --positionY: 1
    }

    .cell:nth-child(15n+3):hover~.content {
      --positionX: 2
    }

    .cell:nth-child(n+31):nth-child(-n+45):hover~.content {
      --positionY: 2
    }

    .cell:nth-child(15n+4):hover~.content {
      --positionX: 3
    }

    .cell:nth-child(n+46):nth-child(-n+60):hover~.content {
      --positionY: 3
    }

    .cell:nth-child(15n+5):hover~.content {
      --positionX: 4
    }

    .cell:nth-child(n+61):nth-child(-n+75):hover~.content {
      --positionY: 4
    }

    .cell:nth-child(15n+6):hover~.content {
      --positionX: 5
    }

    .cell:nth-child(n+76):nth-child(-n+90):hover~.content {
      --positionY: 5
    }

    .cell:nth-child(15n+7):hover~.content {
      --positionX: 6
    }

    .cell:nth-child(n+91):nth-child(-n+105):hover~.content {
      --positionY: 6
    }

    .cell:nth-child(15n+8):hover~.content {
      --positionX: 7
    }

    .cell:nth-child(n+106):nth-child(-n+120):hover~.content {
      --positionY: 7
    }

    .cell:nth-child(15n+9):hover~.content {
      --positionX: 8
    }

    .cell:nth-child(n+121):nth-child(-n+135):hover~.content {
      --positionY: 8
    }

    .cell:nth-child(15n+10):hover~.content {
      --positionX: 9
    }

    .cell:nth-child(n+136):nth-child(-n+150):hover~.content {
      --positionY: 9
    }

    .cell:nth-child(15n+11):hover~.content {
      --positionX: 10
    }

    .cell:nth-child(n+151):nth-child(-n+165):hover~.content {
      --positionY: 10
    }

    .cell:nth-child(15n+12):hover~.content {
      --positionX: 11
    }

    .cell:nth-child(n+166):nth-child(-n+180):hover~.content {
      --positionY: 11
    }

    .cell:nth-child(15n+13):hover~.content {
      --positionX: 12
    }

    .cell:nth-child(n+181):nth-child(-n+195):hover~.content {
      --positionY: 12
    }

    .cell:nth-child(15n+14):hover~.content {
      --positionX: 13
    }

    .cell:nth-child(n+196):nth-child(-n+210):hover~.content {
      --positionY: 13
    }

    .cell:nth-child(15n+15):hover~.content {
      --positionX: 14
    }

    .cell:nth-child(n+211):nth-child(-n+225):hover~.content {
      --positionY: 14
    }

    .content {
      --positionX: 7;
      --positionY: 7;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      display: flex;
      justify-content: center;
      align-items: center
    }

    .content,
    .css {
      position: absolute
    }

    .css {
      font-family: Fredoka One, cursive;
      top: 50%;
      left: 50%;
      animation: color 3s linear infinite;
      text-shadow: 0 0 10px #000a;
      transition: all .5s
    }

    .css:first-child {
      font-size: 100px;
      animation-delay: 0s;
      opacity: .1;
      transform: translateX(calc(-50% - (var(--positionX) - 7)*21px)) translateY(calc(-50% - (var(--positionY) - 7)*21px)) rotateX(calc(0deg - (var(--positionY) - 7)*5deg)) rotateY(calc((var(--positionX) - 7)*5deg))
    }

    .css:nth-child(2) {
      font-size: 110px;
      animation-delay: -.3s;
      opacity: .2;
      transform: translateX(calc(-50% - (var(--positionX) - 7)*18px)) translateY(calc(-50% - (var(--positionY) - 7)*18px)) rotateX(calc(0deg - (var(--positionY) - 7)*5deg)) rotateY(calc((var(--positionX) - 7)*5deg))
    }

    .css:nth-child(3) {
      font-size: 120px;
      animation-delay: -.6s;
      opacity: .3;
      transform: translateX(calc(-50% - (var(--positionX) - 7)*15px)) translateY(calc(-50% - (var(--positionY) - 7)*15px)) rotateX(calc(0deg - (var(--positionY) - 7)*5deg)) rotateY(calc((var(--positionX) - 7)*5deg))
    }

    .css:nth-child(4) {
      font-size: 130px;
      animation-delay: -.9s;
      opacity: .4;
      transform: translateX(calc(-50% - (var(--positionX) - 7)*12px)) translateY(calc(-50% - (var(--positionY) - 7)*12px)) rotateX(calc(0deg - (var(--positionY) - 7)*5deg)) rotateY(calc((var(--positionX) - 7)*5deg))
    }

    .css:nth-child(5) {
      font-size: 140px;
      animation-delay: -1.2s;
      opacity: .5;
      transform: translateX(calc(-50% - (var(--positionX) - 7)*9px)) translateY(calc(-50% - (var(--positionY) - 7)*9px)) rotateX(calc(0deg - (var(--positionY) - 7)*5deg)) rotateY(calc((var(--positionX) - 7)*5deg))
    }

    .css:nth-child(6) {
      font-size: 150px;
      animation-delay: -1.5s;
      opacity: .6;
      transform: translateX(calc(-50% - (var(--positionX) - 7)*6px)) translateY(calc(-50% - (var(--positionY) - 7)*6px)) rotateX(calc(0deg - (var(--positionY) - 7)*5deg)) rotateY(calc((var(--positionX) - 7)*5deg))
    }

    .css:nth-child(7) {
      font-size: 160px;
      animation-delay: -1.8s;
      opacity: .7;
      transform: translateX(calc(-50% - (var(--positionX) - 7)*3px)) translateY(calc(-50% - (var(--positionY) - 7)*3px)) rotateX(calc(0deg - (var(--positionY) - 7)*5deg)) rotateY(calc((var(--positionX) - 7)*5deg))
    }

    .css:nth-child(8) {
      font-size: 170px;
      animation-delay: -2.1s;
      opacity: .8;
      transform: translateX(calc(-50% - (var(--positionX) - 7)*0px)) translateY(calc(-50% - (var(--positionY) - 7)*0px)) rotateX(calc(0deg - (var(--positionY) - 7)*5deg)) rotateY(calc((var(--positionX) - 7)*5deg))
    }

    .css:nth-child(9) {
      font-size: 180px;
      animation-delay: -2.4s;
      opacity: .9;
      transform: translateX(calc(-50% - (var(--positionX) - 7)*-3px)) translateY(calc(-50% - (var(--positionY) - 7)*-3px)) rotateX(calc(0deg - (var(--positionY) - 7)*5deg)) rotateY(calc((var(--positionX) - 7)*5deg))
    }

    .css:nth-child(10) {
      font-size: 190px;
      animation-delay: -2.7s;
      opacity: 1;
      transform: translateX(calc(-50% - (var(--positionX) - 7)*-6px)) translateY(calc(-50% - (var(--positionY) - 7)*-6px)) rotateX(calc(0deg - (var(--positionY) - 7)*5deg)) rotateY(calc((var(--positionX) - 7)*5deg))
    }

    @keyframes color {
      0% {
        color: #ef8f8f
      }

      10% {
        color: #efc98f
      }

      20% {
        color: #dcef8f
      }

      30% {
        color: #a3ef8f
      }

      40% {
        color: #8fefb6
      }

      50% {
        color: #8fefef
      }

      60% {
        color: #8fb6ef
      }

      70% {
        color: #a38fef
      }

      80% {
        color: #dc8fef
      }

      90% {
        color: #ef8fc9
      }

      to {
        color: #ef8f8f
      }
    }
  </style>
</head>

<body>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="cell"></div>
  <div class="content">
    <div class="css">Qayrup</div>
    <div class="css">Qayrup</div>
    <div class="css">Qayrup</div>
    <div class="css">Qayrup</div>
    <div class="css">Qayrup</div>
    <div class="css">Qayrup</div>
    <div class="css">Qayrup</div>
    <div class="css">Qayrup</div>
    <div class="css">Qayrup</div>
    <div class="css">Qayrup</div>
  </div>
</body>

</html>

到了这里,关于纯css实现3D鼠标跟随倾斜的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CSS mask 实现鼠标跟随镂空效果,这些面试官常问的开发面试题你都掌握好了吗

    可能一开始无从下手,不要急,可以先从简单的、类似的效果开始,一步一步尝试,一起看看吧。 一、普通半透明的效果 比如平时开发中碰到更多的可能是一个半透明的效果,有点类似于探照灯(鼠标外面的地方是半透明遮罩,看起来会暗一点)。如下: 那先从这种效果开

    2024年04月28日
    浏览(160)
  • unity 3D,镜头跟随鼠标移动

    一、鼠标隐藏,使用UI图片作鼠标图 二、射线在屏幕中央,用于交互 三、鼠标与摄像头跟随

    2024年02月12日
    浏览(46)
  • 前端:运用html+css+js模仿百度热搜电影榜鼠标移入特效

    1. 实现原理 百度热搜上电影榜鼠标移入特效如上图所示。个人觉得上述特效实现原理为使用相对定位、绝对定位实现的(鼠标移入和没有移入时,元素布局有一些不同而已)。至于鼠标移入时,出现延迟效果,则是在css上设置transition(用于设置过渡效果的)实现的。我的实现效果

    2024年02月15日
    浏览(47)
  • 【CSS笔记】CSS动画效果(2d、3d)之渐变色、过渡、变换、平移、缩放、旋转、倾斜、关键帧动画

    这篇文章,主要介绍CSS动画效果(2d、3d)之渐变色、过渡、变换、平移、缩放、旋转、倾斜、关键帧动画。 目录 一、2d动画 1.1、渐变色 (1)线性渐变色 (2)径向渐变色

    2024年02月02日
    浏览(77)
  • 用HTML、CSS和JavaScript实现鼠标可交互的3D太阳和月亮切换效果

    部分数据来源: ChatGPT  引言         太阳和月亮对于我们来说是一种常见的对比,这篇文章将介绍一个使用HTML、CSS和JavaScript创建的网页场景,能够把太阳和月亮切换展示给用户。这个场景能够让用户使用鼠标和滚轮与场景互动,带来更多的趣味和体验。 这里展示了HT

    2024年02月07日
    浏览(53)
  • js实现鼠标滚轮放大缩小页面指定区域(css3 scale)

    一、需求 鼠标滚轮在红色边框区域内向上滚动:绿色边框盒子里所有元素缩小。 鼠标滚轮在红色边框区域内向下滚动:绿色边框盒子里所有元素放大。 点击还原按钮:绿色盒子里所有元素还原为初始值。 二、相关知识点 1、CSS3 Transform属性应用于元素的2D或3D转换。这个属性允许

    2024年02月11日
    浏览(37)
  • 前端,CSS,背景颜色跟随轮播图片改变而改变(附源码)

    首先看效果! 比如轮播图时红色,那么背景的底色也是红色,轮播图时黄色,背景的底色也是黄色,这就是根据轮播图的图片切换,而改变背景颜色随轮播图颜色一致 话不多说,直接上代码!非常简单 轮播图代码就不放上去了,直接使用插件 swiper ,选择你喜欢的版本 就可

    2024年02月22日
    浏览(35)
  • vanilla-tilt.js平滑3D倾斜库的使用

    💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发

    2024年02月11日
    浏览(23)
  • html+css+js实现微信和支付宝扫码支付前端

    本章教程,主要利用html+css+js技术实现微信和支付宝扫码支付前端页面。 目录 一、效果图预览  (1)支付宝扫码支付 (2)微信扫码支付 二、项目部分源码文件 (1)目录结构 (2)alipay.html (3)wxpay.html 三、项目完整源码下载 下载地址:html+css+js实现微信和支付宝扫码支付

    2024年02月11日
    浏览(60)
  • 实现Qwidget窗口填满整个主窗口,并跟随鼠标的拖动自动缩放

    实现Qwidget窗口填满整个主窗口,并跟随鼠标的拖动自动缩放 新建一个窗口,我想在这个窗口上放一个QWidget,并且这个QWidget能够布满整个窗口,还可以随着随鼠标的拖动自动缩放 1、首先给大家介绍一个好用的组件库:qt-material-widgets (1)开源地址(基于QWidgets) 基于Qt Qui

    2024年02月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包