You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vanilla Tilt不生效且控制台无报错 玻璃拟态卡片倾斜效果无法实现

问题原因

  • DOM加载顺序错误:你将JS引入和初始化代码放在了.card元素的前面,JS执行时对应DOM节点还未渲染,document.querySelector(".card")获取到的值为null,Vanilla Tilt对空输入不会抛出错误,因此控制台无报错但效果不生效。
  • 选择器匹配范围错误:querySelector仅能匹配页面中第一个符合条件的元素,即使顺序调整正确,第二个卡片也无法触发倾斜效果。

解决方案

方案1:调整代码顺序(推荐)

将JS相关代码移动到所有.card元素的末尾,同时遍历所有卡片元素完成初始化,修改后代码如下:

<!-- 卡片DOM放在前面 -->
<div class="card">
  <div class="content">
    <h2>02</h2>
    <h3>Tech Stuff</h3>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Consequuntur tenetur laborum repellendus maxime excepturi nisi enim? Perferendis est nulla explicabo?</p>
    <a href="#">Check it out</a>
  </div>
</div>

<div class="card">
  <div class="content">
    <h2>03</h2>
    <h3>Tech Stuff</h3>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Consequuntur tenetur laborum repellendus maxime excepturi nisi enim? Perferendis est nulla explicabo?</p>
    <a href="#">Check it out</a>
  </div>
</div>

<!-- JS代码放在DOM之后 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/vanilla-tilt/1.7.2/vanilla-tilt.min.js" integrity="sha512-K9tDZvc8nQXR1DMuT97sct9f40dilGp97vx7EXjswJA+/mKqJZ8vcZLifZDP+9t08osMLuiIjd4jZ0SM011Q+w==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
document.querySelectorAll(".card").forEach(card => {
  VanillaTilt.init(card, {
    max: 25,
    speed: 400,
    glare: true,
    "max-glare": 1
  });
})
</script>

方案2:监听DOM加载完成事件

如果不想调整代码位置,可以将初始化逻辑包裹在DOMContentLoaded事件回调中,等页面DOM全部渲染完成后再执行初始化:

document.addEventListener('DOMContentLoaded', () => {
  document.querySelectorAll(".card").forEach(card => {
    VanillaTilt.init(card, {
      max: 25,
      speed: 400,
      glare: true,
      "max-glare": 1
    });
  })
})

内容的提问来源于stack exchange,提问作者HJTCH76

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:54:03