此教程来源于一个js库(vanilla-tilt.js)

网址如下:

https://micku7zu.github.io/vanilla-tilt.js/

下面存放四个库:

image.png

今天教学的是第三个库(vanilla-tilt.babel.js)

下面我们演示下:
  • 下面我们写了五个div,一个父元素,四个子元素
  • 分别写样式

布局演示

下面我们加入js:

复制代码

注意的是js中的querySelector只能让我们的四个div中的第一个div3D效果,需要其它三个div3D需要把它改成:querySelectorAll效果图如下:

引入js

我们再加入css动画和z轴样式:

css说明

很简单吧

css演示

源码放下面:

  • html源码
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <link rel="stylesheet" href="css/index.css">
    </head>
    <body>
        <div class="card">
            <div class="card-item">
                <img src="https://www.cenguigui.cn/log/vanilla-tilt/card.png" alt="">
                <h4>没有什么太难的事关键是敢于尝试</h4>
                <p>有钱人终成眷属,没钱人亲眼目睹!人间忽晚山河已秋</p>
            </div>
            
            <div class="card-item">
                <img src="https://www.cenguigui.cn/log/vanilla-tilt/card.png" alt="">
                <h4>没有什么太难的事关键是敢于尝试</h4>
                <p>有钱人终成眷属,没钱人亲眼目睹!人间忽晚山河已秋</p>
            </div>
            
            <div class="card-item">
                <img src="https://www.cenguigui.cn/log/vanilla-tilt/card.png" alt="">
                <h4>没有什么太难的事关键是敢于尝试</h4>
                <p>有钱人终成眷属,没钱人亲眼目睹!人间忽晚山河已秋</p>
            </div>
            
            <div class="card-item">
                <img src="https://www.cenguigui.cn/log/vanilla-tilt/card.png" alt="">
                <h4>没有什么太难的事关键是敢于尝试</h4>
                <p>有钱人终成眷属,没钱人亲眼目睹!人间忽晚山河已秋</p>
            </div>
        </div>
        <script type="text/javascript" src="https://www.cenguigui.cn/log/vanilla-tilt/js/vanilla-tilt.babel.js"></script>
        <script type="text/javascript">
            VanillaTilt.init(document.querySelectorAll(".card-item"), {
                 max: 50,//鼠标经过时它旋转的角度
                speed: 3000  //鼠标经过时它的旋转速度
            });
        </script>
    </body>
</html>
  • css源码:
.card {
    font-family: 'Guiguifonts';
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 20px;
    height: 100vh;
    /* 视窗高度 */
}

.card-item {
    font-family: 'Guiguifonts';
    width: 200px;
    height: 250px;
    background-color: #171b17;
    border: 1px solid #31363d;
    border-radius: 10px;
    text-align: center;
    /* 创建视差效果 */
    transform-style: preserve-3d; /*视觉差的3D*/
    transform: perspective(1000px); /*1000 px是默认透视*/
}

.card-item img {
    width: 80px;
    margin-top: -40px;
    /* 创建视差效果 让元素跳出*/
    transform: translateZ(30px); /*让元素跳出来*/
}

.card-item h4 {
    color: #fff;
    margin-top: 20px;
    text-shadow: 2px 2px 2px rgba(255, 255, 255, .5);
    /* 创建视差效果 让元素跳出*/
    transform: translateZ(40px); /*让元素跳出来*/
}

.card-item p {
    margin: 35px;
    font-size: 12px;
    color: #7f859c;
    text-align: left;
    /* 创建视差效果 让元素跳出*/
    transform: translateZ(30px); /*让元素跳出来*/
}

好了教程就到这就结束了,下面我把效果页面翻页总结出来:

  • 最基本的用法:

  1. 添加 <script src=“ vanilla-tilt. js “>< / script> 就在关门前 </ body> 标签
  2. 标记元素 <div data-tilt></div>
  • 创建视差效果:

1. 添加 transform-style: preserve-3d 你的倾斜元件
2. 添加 transform: perspective(1000px); 你的倾斜元件。(1000 px是默认透视,但可以更改)
3. 添加 transform: translateZ(20px) 你的内在元素必须要跳出来
  • 眩光效应:

设置此选项将启用眩光效果。您可以调整眩光值

data-tilt-max-glare
<div data-tilt data-tilt-glare data-tilt-max-glare="0.8"></div>
  • 反向倾斜:

设置此选项将反转倾斜。

<div data-tilt data-tilt-reverse="true"></div>
  • 保持漂浮:

当用户鼠标离开元素时,设置此选项将不会重置倾斜元素。

<div data-tilt data-tilt-reset="false"></div>
  • 整页收听:

设置此选项将使元素响应页面上的任何鼠标移动。

<div data-tilt data-tilt-full-page-listening></div>
  • 悬停缩放:

设置此选项将在悬停时缩放倾斜元素。

<div data-tilt data-tilt-scale="1.1"></div>
  • 开始倾斜位置:

设置此选项将在页面加载时以特定角度倾斜元素。

<div data-tilt data-tilt-startX="20" data-tilt-startY="-20" data-tilt-reset-to-start="true"></div>

“reset-to-start”-在鼠标离开时将位置重置为[startX,startY]

  • 禁用X轴:

设置此选项将禁用倾斜元件上的X轴。

<div data-tilt data-tilt-axis="y"></div>
  • 禁用Y轴:

设置此选项将禁用倾斜元件上的Y轴。

<div data-tilt data-tilt-axis="x"></div>
  • 销毁方法:

调用此方法将从tilt元素中删除所有事件和类。

let destroyBox = document.querySelector("#destroy-box");
VanillaTilt.init(destroyBox);

document.querySelector("#destroy-button").addEventListener("click", function () {
    destroyBox.vanillaTilt.destroy();
});

document.querySelector("#enable-button").addEventListener("click", function () {
    VanillaTilt.init(destroyBox);
});

毁坏 启用

  • 倾斜变化事件:

倾斜改变事件将输出倾斜的x、y&百分比。

let eventBox = document.querySelector("#box-event");
let outputContainer = document.querySelector(".output");
VanillaTilt.init(eventBox);


eventBox.addEventListener("tiltChange", function (event) {
    let li = document.createElement("li");
    li.textContent = JSON.stringify(event.detail);
    outputContainer.insertBefore(li, outputContainer.firstChild);
});
四个库的js地址我已经上传到我的服务器了,可以调用我的也可以另存到本地:
https://www.cenguigui.cn/log/vanilla-tilt/js/vanilla-tilt.js

https://www.cenguigui.cn/log/vanilla-tilt/js/vanilla-tilt.min.js

https://www.cenguigui.cn/log/vanilla-tilt/js/vanilla-tilt.babel.js

https://www.cenguigui.cn/log/vanilla-tilt/js/vanilla-tilt.babel.min.js
此次教程到处结束啦

演示地址:
https://www.cenguigui.cn/log/vanilla-tilt/vanilla.html

最后修改:2023 年 05 月 26 日
如果觉得我的文章对你有用,请随意赞赏