JavaScript 库之 vanilla-tilt(一个平滑的 3D 倾斜库)

news2024/12/24 2:51:39

JavaScript 库之 vanilla-tilt(一个平滑的 3D 倾斜库)

  • 参考
  • 获取
  • vanilla-tilt
      • 特点
  • 使用
      • 示例
      • 使用
          • 1. data-tilt
          • 2. VanillaTilt.init()
      • 优先级
          • 示例
  • 配置选项
      • 其他

参考

项目描述
GitHub前往
Vanilla-tilt.js前往

获取

  1. Vanilla-tilt.js
  2. GitHub
  3. npm
npm install vanilla-tilt

vanilla-tilt

vanilla-tilt.js 是 JavaScript 中的一个平滑的 3D 倾斜库,该库存在 JQuery 版本——Tilt.js

效果

特点

vanilla-tilt 存在以下特点:

  1. 轻量级
  2. 无依赖项
  3. 使用简单
  4. 60 FPS
  5. 丝滑

使用

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vanilla-tilt</title>
    <style>
        *{
            /* 去除元素默认的内外边距 */
            margin: 0px;
            padding: 0px;
        }

        body{
            /* 设置显示区域的最小高度值为显示窗口的高度值 */
            min-height: 100vh;
            /* 使 body 中的元素居中显示 */
            display: flex;
            justify-content: center;
            align-items: center;
        }
        
        #card{
            /* 为目标元素指定宽高并为其设置渐变背景颜色 */
            width: 200px;
            height: 200px;
            background: linear-gradient(to right bottom, rgb(108, 240, 255), rgb(118, 255, 180));
        }
    </style>
</head>
<body>
    <!-- 需要添加 3D 倾斜特效的元素 -->
    <div id="card"></div>

	<!-- 导入 vanilla-tilt.js -->
	<script src="./vanilla-tilt.js"></script>
	<script>
    	VanillaTilt.init(document.querySelector('#card'), {
        	max: 15 // 设置倾斜的最大角度
    	});
	</script>
</body>
</html>

效果:

效果

使用

为目标元素应用倾斜样式可以有两种方式。

1. data-tilt

我们可以通过为元素添加属性 data-tilt 来指定该元素为目标元素并为其应用默认的倾斜配置。如果对默认的倾斜配置中的某个选项不满,需要对其进行更换,则可以通过为目标元素添加合适的属性并为其设置满意的属性值即可。

如下示例将设置 #card 元素为目标元素并将其 max 配置选项的值设置为 25

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vanilla-tilt</title>
    <style>
        *{
            /* 去除元素默认的内外边距 */
            margin: 0px;
            padding: 0px;
        }

        body{
            /* 设置显示区域的最小高度值为显示窗口的高度值 */
            min-height: 100vh;
            /* 使 body 中的元素居中显示 */
            display: flex;
            justify-content: center;
            align-items: center;
        }
        
        #card{
            /* 为目标元素指定宽高并为其设置渐变背景颜色 */
            width: 200px;
            height: 200px;
            background: linear-gradient(to right bottom, rgb(108, 240, 255), rgb(118, 255, 180));
        }
    </style>
</head>
<body>
    <!-- 需要添加 3D 倾斜特效的元素 -->
    <div id="card" data-tilt data-tilt-max="25"></div>

	<!-- 导入 vanilla-tilt.js -->
	<script src="./vanilla-tilt.js"></script>
</body>
</html>

效果:

效果

2. VanillaTilt.init()

VanillaTilt.init() 函数接收两个参数,第一个参数为需要添加倾斜效果的元素对象,第二个参数则是用于添加倾斜效果的配置对象。

如下示例将设置 #card 元素为目标元素并将其 max 配置选项的值设置为 25

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vanilla-tilt</title>
    <style>
        *{
            /* 去除元素默认的内外边距 */
            margin: 0px;
            padding: 0px;
        }

        body{
            /* 设置显示区域的最小高度值为显示窗口的高度值 */
            min-height: 100vh;
            /* 使 body 中的元素居中显示 */
            display: flex;
            justify-content: center;
            align-items: center;
        }
        
        #card{
            /* 为目标元素指定宽高并为其设置渐变背景颜色 */
            width: 200px;
            height: 200px;
            background: linear-gradient(to right bottom, rgb(108, 240, 255), rgb(118, 255, 180));
        }
    </style>
</head>
<body>
    <!-- 需要添加 3D 倾斜特效的元素 -->
    <div id="card"></div>

    <!-- 导入 vanilla-tilt.js -->
    <script src="./vanilla-tilt.js"></script>
    <script>
        VanillaTilt.init(document.querySelector('#card'), {
            max: 25
        })
    </script>
</body>
</html>

优先级

当使用 data-tilt-{option}VanillaTilt.init() 同时对配置选项进行设置时,将优先使用 data-tilt-{option} 提供的配置,VanillaTilt.init() 的所有配置都将失效。

示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vanilla-tilt</title>
    <style>
        *{
            /* 去除元素默认的内外边距 */
            margin: 0px;
            padding: 0px;
        }

        body{
            /* 设置显示区域的最小高度值为显示窗口的高度值 */
            min-height: 100vh;
            /* 使 body 中的元素居中显示 */
            display: flex;
            justify-content: center;
            align-items: center;
        }
        
        #card{
            /* 为目标元素指定宽高并为其设置渐变背景颜色 */
            width: 200px;
            height: 200px;
            background: linear-gradient(to right bottom, rgb(108, 240, 255), rgb(118, 255, 180));
        }
    </style>
</head>
<body>
    <!-- 需要添加 3D 倾斜特效的元素 -->
    <div id="card" data-tilt data-tilt-max="70"></div>

    <!-- 导入 vanilla-tilt.js -->
    <script src="./vanilla-tilt.js"></script>
    <script>
        VanillaTilt.init(document.querySelector('#card'), {
            max: 10,
            scale: 2 // 在鼠标悬停于目标元素之上时,将目标元素放缩指定倍数 
        })
    </script>
</body>
</html>

效果:

效果
可以看到目标元素使用了 data-tilt-max 所设定的配置选项的值,忽视了 VanillaTilt.init() 提供的 maxscale

配置选项

项目默认值描述
reversefalse反转倾斜方向(设置为 true 时,鼠标在目标元素悬浮时该处会向屏幕内测倾斜,默认向屏幕外侧倾斜)
max35最大倾斜角度。
scale1设置鼠标悬浮于目标元素时,目标元素的放缩倍数。
glarefalse如果设置为 True,则会在鼠标悬停的位置制造反光效果,反光效果仅出现在目标元素的下面部分。
max-glare1设置反光强度,取值范围为 0~1,该配置选项的值越是接近于 1 反光强度越大。反光强度的大小可以理解为 照到目标元素的那束光的光照强度 。该配置选项为 0 时与 glare 设置为 false 时的效果无异。
axisnull设置被激活的坐标轴,被禁用的坐标轴将不会产生倾斜效果。该配置选项的取值有 xynull。其中 null 表示同时激活 xy 轴。
resettrue当该选项设置为 false 时,鼠标若离开目标元素,目标元素将维持鼠标离开前的状态(倾斜状态及放缩状态)。若该选项设置为 true,鼠标若离开目标元素,目标元素将被去除倾斜状态及放缩状态。
startX0设置目标元素在 x 轴上的初始默认状态。若要使用该选项,需要保证配置选项 resetreset-to-start 的值均为 true
startY0设置目标元素在 y 轴上的初始默认状态。若要使用该选项,需要保证配置选项 resetreset-to-start 的值均为 true
reset-to-starttrue若该选项设置为 true,鼠标离开目标元素时,目标元素的倾斜状态将恢复至配置选项 startXstartY 指定的倾斜状态。
full-page-listeningfalse当该配置选项设置为 true 时,目标元素将响应当前页面的任何鼠标移动(鼠标即使没有悬停在目标元素中,也可以通过鼠标移动控制目标元素的倾斜状态)。

其他

配置选项中还存在其他选项,但目前这些选项我并没有弄清楚他们的用法。为避免误人子弟,我并没有对这些选项进行翻译,请见谅。

项目默认值描述
gyroscopetrueBoolean to enable/disable device orientation detection.
gyroscopeMinAngleX-45This is the bottom limit of the device angle on X axis, meaning that a device rotated at this angle would tilt the element as if the mouse was on the left border of the element.
gyroscopeMaxAngleX45This is the top limit of the device angle on X axis, meaning that a device rotated at this angle would tilt the element as if the mouse was on the right border of the element.
gyroscopeMinAngleY-45This is the bottom limit of the device angle on Y axis, meaning that a device rotated at this angle would tilt the element as if the mouse was on the top border of the element.
gyroscopeMaxAngleY45This is the top limit of the device angle on Y axis, meaning that a device rotated at this angle would tilt the element as if the mouse was on the bottom border of the element.
mouse-event-elementnullcss-selector or link to HTML-element what will be listen mouse events.
glare-prerenderfalsefalse = VanillaTilt creates the glare elements for you, otherwise you need to add .js-tilt-glare>.js-tilt-glare-inner by yourself.
easingcubic-bezier(.03,.98,.52,.99)Easing on enter/exit.
speed300Speed of the enter/exit transition.
perspective1000Transform perspective, the lower the more extreme the tilt gets.
transitiontrueSet a transition on enter/exit.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【开发环境】JRE 裁剪 ② ( 裁剪 bin 目录下的 dll 动态库文件 | 压缩 rt.jar 文件 )

文章目录一、裁剪 lib 目录下的 jar 文件二、压缩 rt.jar 文件参考博客 : 精简jre1.8精简jre步骤裁剪JRE(嵌入式设备的java环境移植) 资源下载地址 ( 本篇博客的资源快照 , 不是最终版的裁剪效果 ) : https://download.csdn.net/download/han1202012/87389091 JRE 裁剪分为三…

Pytorch深度学习【十五】

微调 网络架构 一个神经网络一般可以分成两块 特征抽取将原始像素变成容易线性分割的特征线性分类器来做分类 微调 思路—将相同功能的网络及其参数直接进行迁移使用&#xff0c;而并不是通过重新学习&#xff0c;只改变部分层次即可 训练 是一个目标数据集上的正常训练任务…

老杨说运维 | 2023,浅谈智能运维趋势(二)

&#xff08;文末附视频&#xff0c;一键观看精彩内容&#xff09; 前言&#xff1a; 上文提到了智能运维现状中的变化趋势以及 上文提到了智能运维现状中的变化趋势以及过往误区&#xff0c;老杨认为智能运维的体系化建设还需从抓牢数据治理为起点&#xff0c;以终为始做好规…

miniconda虚拟环境安装使用jupyter notebook及相关

一、安装jupyter 1创建miniconda虚拟环境。&#xff08;前面文章讲过了&#xff09; 2在创建的虚拟环境下&#xff0c;conda install ipython jupyter 3在该环境下执行jupyter notebook。 注意&#xff1a;此时打开的jupyter notebook内核Python 3(ipykernel)对应该虚拟环境&am…

数据安全治理 1

数据安全治理应以数据为中心&#xff0c;多元化主体共同参与&#xff0c;兼顾发展与安全。 数据安全总体视图&#xff0c;包含了体系&#xff0c;维度&#xff0c;目标&#xff0c;实践。 制度建设 技术体系&#xff0c;如加密、脱敏等手段&#xff0c;进行数据全生命周期的管…

盘点:2022年豆瓣评分8.0以上的计算机书籍有哪些?

2022年已经结束 &#xff0c;小编来盘点一下过去一年里出版的计算机图书里&#xff0c;有哪些计算机书籍是豆瓣评分8.0以上图书。 1、人工智能&#xff1a;现代方法&#xff08;第4版&#xff09;&#xff08;上下册&#xff09; ​ 系统性总结人工智能的方方面面&#xff0c;…

寒假每日一题2023——4261. 孤独的照片

写在前面 题目来源&#xff1a;AcWing 寒假每日一题2023活动 链接&#xff1a;https://www.acwing.com/problem/content/description/4264/ 题目 Farmer John 最近购入了 N 头新的奶牛&#xff0c;每头奶牛的品种是更赛牛&#xff08;Guernsey&#xff09;或荷斯坦牛&#x…

论文解读12——NGBoost: Natural Gradient Boosting for Probabilistic Prediction

目录1、文章贡献2、评分规则3、自然梯度4、自然梯度提升算法NGBoost1、文章贡献 由吴恩达团队提出的NGBoost是一种通过梯度提升进行概率预测的算法&#xff0c;与经典的回归模型返回一个点估计结果不同&#xff0c;概率回归模型返回全概率分布&#xff0c;将条件分布的参数视为…

Windows系统安装jenkins服务 war包形式

1.首先下载 jenkins war包 注意和jdk 的版本匹配 https://www.jenkins.io/zh/download/ 2.配置jenkins环境变量 如果不配置环境变量, jenkins的主目录默认生成在c盘下 环境变量怎么配? 请自行百度 3.运行jar包 注意修改war包路径 java -jar /data/jenkins/jenkins.war…

DNS原理与搭建(一)

文章目录一、DNS的概念与原理二、DNS私服搭建一、DNS的概念与原理 概念 DNS指的是域名服务器&#xff0c;就是将域名转换成IP[或者将IP转换成域名];当我们在浏览器中输入域名并按下回车&#xff0c;会对我们输入的域名进行解析&#xff0c;并返回一个IP地址&#xff0c;在通过…

Deepin系统深度学习环境配置指南

Deepin深度操作系统在众多Linux发行版本中深受欢迎&#xff0c;在实用性和专业方面到达了很好的均衡&#xff0c;该系统软件适配丰富支持很多第三方软件&#xff0c;增加了系统任务的灵活性。在装好该系统后&#xff0c;如何在该系统上进行深度学习代码训练调试&#xff0c;这就…

网络编程.

文章目录一、概述通信要素一&#xff1a;IP和端口号IP端口号通信要素二&#xff1a;网络协议TCP网络编程UDP网络编程URL网络编程每日一考一、概述 1、网络编程中两个主要问题&#xff1a; 如何定位网上的一台或多台主机&#xff0c;定位主机上的特定应用 找到主机后&#xff0…

北京化工大学1/17寒假集训题解(>1800)

目录 A - 文艺平衡树 B - 可持久化文艺平衡树 C - 可持久化平衡树 主要思路&#xff1a;FHQ Treap 可持久化 D - 维护数列 初始化 Insert操作 Delete操作 Reverse操作 Make-Same操作 Get-Sum操作 Max-Sum操作 懒标记的处理 E - 文本编辑器 A - 文艺平衡树 这里的…

贪心策略(二)兑换零钱(最后还得是动规)

兑换零钱(一)_牛客题霸_牛客网 兑换零钱(二)_牛客题霸_牛客网 兑换零钱(一)_牛客题霸_牛客网 描述 给定数组arr&#xff0c;arr中所有的值都为正整数且不重复。每个值代表一种面值的货币&#xff0c;每种面值的货币可以使用任意张&#xff0c;再给定一个aim&#xff0c;代表要…

C++程序设计——类和对象II

一、再谈构造函数 1.构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量赋一个合适的初始值。 虽然上述构造函数调用后&#xff0c;对象中已经有了初始值&#xff0c;但是不能将其称之为类对象成员的初始化&#xff0c;构造函数…

Vue学习笔记(三)

Vue学习笔记三1.组件的引入及使用2.插槽3. 插槽三种写法3.1 第一种3.2 第二种3.3 第三种简化写法4.组件生命周期4.Vue路由1.组件的引入及使用 在components中写入组件Header.vue 在App.vue中进行引入 <template><div><!-- 组件化: 1个页面由不同的部分组合而…

excel日期函数:DATEDIF的几个实际应用公式编写

DATEDIF函数不仅可以用来计算年龄、工龄、工龄工资、项目周期&#xff0c;还可以用来做生日倒计时提醒&#xff0c;项目竣工日倒计时提醒等等。用上它&#xff0c;您再也不会缺席那些重要的日子&#xff0c;不论是亲人生日、项目竣工日&#xff0c;还是儿女的毕业典礼日。DATED…

明道云大湾区2023年季度闭门会议圆满结束

2023年1月12日&#xff0c;明道云在深圳坂田天安云谷召开明道云大湾区2023年季度闭门分享会。超过百位来自中大型企业组织的IT部门代表和业务技术专家莅临现场&#xff0c;进行了一下午的同台交流。广汽本田、深圳龙华区人民医院、民生银行及华润置地的项目代表&#xff0c;深度…

WebService最优方案选择

需求 最近&#xff0c;接触到了一个java对接C#的项目&#xff0c;使用WebService技术开发。项目已经快告一段落了&#xff0c;经过这几个月接触和使用。我有了一个清晰的认识&#xff0c;之前也调研了互联网上大部分实现的通讯&#xff0c;他们的优缺点&#xff0c;我都有一定…

linux系统下如何获取文件的创建时间

linux 获取文件的创建时间 提到获取文件的创建时间&#xff0c;写Java的小伙伴可能会说&#xff0c;那太简单了&#xff0c;java.nio.file.attribute.BasicFileAttributes下这个类不就记录了文件的相关信息吗&#xff0c;比如下面这段代码不就得到文件的创建时间了嘛&#xff…