2

第一次在这里寻求帮助,希望有一个简单的答案。我在我的网站中使用 AOS - Animate on Scroll 库,我希望能够根据屏幕宽度更改 aos 延迟值,因为我需要根据屏幕尺寸不同的延迟时间。

是否可以将下面的“1300”值称为“数字”,然后通过 CSS 或 javascript 中的媒体查询更改该值?

        <div class="skill" data-aos="fade-in" data-aos-delay="1300">
            <div class="icon-container">
                <img src="images/pencilruler.gif" alt="">
            </div>
            <h1>Graphic Design</h1>
            <p>
                Custom designs for screen and print. From logo designs and corporate branding, to adverts and packaging.
            </p>
        </div>

我没有找到解决这个问题的方法。我尝试在 javascript 中使用 getElementById() 但只能设法更改 div 的内容而不是其中的值。

目前我的解决方法(如下)是为每个延迟长度设置重复的 div,然后使用'display:none;' 我可以根据屏幕大小删除不需要的。这是一个真正的痛苦并且有点混乱,因为我想要很多延迟变化。

  @media screen and (max-width : 419px){
   .skill-desktop{
    display:none;
    }
  }

感谢任何帮助或想法。

4

2 回答 2

2

Hugo Elhaj-Lanhsen一样,您可以更改数据属性。我想根据视口大小添加如何执行此操作,在 JavaScript 中使用Window.matchMediaMediaQuery.addListener() 。

const mqList = window.matchMedia("(max-width: 419px)")
// If media query matches on load
if (mqList.matches) {
    setDelay(400) // using Hugo's function
}
// If media query matches after resize
mqList.addListener(function(mql) {
    if (mql.matches) {
        setDelay(400) // using Hugo's function
    }
})

并确保添加 HTML视口元标记,以便视口是设备的大小。

<meta name="viewport" content="width=device-width, initial-scale=1">
于 2020-11-05T08:59:32.613 回答
1

属性

在 HTML 中,像这样的键值对class="name"被称为属性 classstyle并且src是属性的示例。

带有前缀的属性data-称为数据属性。数据属性与 HTML 中直接定义的普通属性不同,可以由程序员定义。这就是为什么您的库使用数据属性来设置延迟的原因。

改变属性

要设置属性的value,您可以使用Element.setAttribute(name, value)。在这种情况下,我们将获取元素并设置其data-aos-delay数据属性:

function setDelay(number) {
  document.querySelector('.skill').setAttribute('data-aos-delay', number)
}
于 2020-11-05T08:37:32.710 回答