javascript - CSS 过渡仅在查看检查后激活 (CTRL+Shift+I)
问题描述
最近在我的一个爱好网站上工作,试图更新该网站以包含更多的 CSS 动画,以使网站的流程更容易一些。我一直在尝试将 CSS 淡入淡出添加到一组元素,当元素位于当前视口中时,这些元素将激活。
现在,在我要说的代码之前,这里使用的 javascript 是从其他地方获取的,我没有编写自己的 javascript 的经验。
JavaScript:
(function() {
var elements;
var windowHeight;
function init() {
elements = document.querySelectorAll('.hidden');
windowHeight = window.innerHeight;
}
function checkPosition() {
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var positionFromTop = elements[i].getBoundingClientRect().top;
if (positionFromTop - windowHeight <= 0) {
element.classList.add('fade-in-element');
element.classList.remove('hidden');
}
}
}
window.addEventListener('scroll', checkPosition);
window.addEventListener('resize', init);
init();
checkPosition();
})();
HTML:
<div class="social-div hidden">
<img class="socials" src="<?php echo get_site_url(''); ?>/wp-content/uploads/2020/07/social-fb.png" />
<p class="socials-text">@[Enter Social Here]</p>
</div>
CSS:
@keyframes fade-in {
from { opacity: 0; transform: scale(.7,.7) }
to { opacity: 1; }
}
.social-div { float:left; width:33%; text-align:center; }
.fade-in-element { animation-name: fade-in; animation-duration:2s; }
.hidden { opacity:0; }
我的问题是,虽然此代码似乎确实按预期工作,但它只有在我查看 Web 浏览器的 Inpsect Element 后才会激活,我也在 Internet Explorer 中尝试过,但发生了同样的问题。这让我相信问题出在代码上。我会很感激这方面的任何帮助,我以前从未遇到过这样的问题,所以我不确定问题可能是什么。
解决方案
问题是您可能在 HTML 代码之前调用了 javascript,因此当您点击 Inspect Element 时,窗口会调整大小并resize
触发事件。
推荐顺序是:
- CSS
- HTML
- Javascript
下面的代码片段显示了顺序:Javascript、CSS 和 HTML
但是,如果您运行代码并检查其中的 iframe,它的呈现方式会有所不同。
(function() {
var elements;
var windowHeight;
function init() {
elements = document.querySelectorAll('.hidden');
windowHeight = window.innerHeight;
}
function checkPosition() {
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var positionFromTop = elements[i].getBoundingClientRect().top;
if (positionFromTop - windowHeight <= 0) {
element.classList.add('fade-in-element');
element.classList.remove('hidden');
}
}
}
window.addEventListener('scroll', checkPosition);
window.addEventListener('resize', init);
init();
checkPosition();
})();
.body {
height: 1000px;
border: 1px dashed blue;
}
@keyframes fade-in {
from { opacity: 0; transform: scale(.7,.7) }
to { opacity: 1; }
}
.social-div { float:left; width:33%; text-align:center; }
.fade-in-element { animation-name: fade-in; animation-duration:2s; }
.hidden { opacity:0; }
<div class="body"></div>
<div class="social-div hidden">
<img class="socials" src="https://facebookbrand.com/wp-content/uploads/2019/04/f_logo_RGB-Hex-Blue_512.png?w=36&h=36" />
<p class="socials-text">@[Enter Social Here]</p>
</div>
推荐阅读
- mysql - 使用 Avro 作为使用 MySQL Debezium 连接器的发件箱模式的数据格式
- python - Python函数不传递变量
- phpstorm - WSL2 - 运行 webpack 构建找不到 npm-cli.js 错误
- machine-learning - 机器学习图像特征提取
- c - 为什么我的 c 代码从 VSCode 终端运行时崩溃,但从 gnome 终端运行时运行良好?
- linkedin - LinkedIn 异地共享链接在移动设备上不起作用?
- ios - 如何使用 HERE SDK for iOS Premium Edition 显示指南针和比例尺?
- ssh - Shellhub 使用 SSHID 连接到设备
- android - 如何创建链接以从浏览器打开 android 应用程序?
- php - Decimal separator issue on WooCommerce custom template price.php