javascript - 如何使用滑块(CSS/Javascript)减少 CLS(累积布局移位)?
问题描述
我是Ninja Slider响应式图像滑块脚本 (CSS/Javascript) 的付费用户,它一直运行良好。不幸的是,谷歌现在警告说,它会导致在响应式布局中放置一个不可接受的大 CLS(累积布局移位)。我很乐观地看到 Stackoverflow 上的某个人已经调整了这段代码——或者类似的代码——并且可以提供帮助。
这个滑块在我的连接上加载得足够快,以至于我什至很难看到这种转变,但我同意任何转变都可能很麻烦,我想相应地修复它。本质上,我想修改代码,以便它快速勾勒出一个动态框,该框的大小是在加载图像之前将加载的图像大小,因此如果用户滚动过去并在第一张图像之前开始阅读,则以下文本不会向下移动在滑块加载中。
在 Google 的默认优化累积布局转换建议中,该公司建议添加图像的宽度和高度——就像在响应前的日子里一样——并像这样添加height: auto
到img
CSS 中的代码中:
img {
width: 100%; /* or max-width: 100%; */
height: auto;
}
这适用于直接在动态布局中显示的图像,但不适用于滑块代码中的图像,因为图像不是作为img
标签呈现,而是作为a href
无序列表中列表项中的链接(标签)呈现。
尽管如此,我还是尽职尽责地尝试在div 和类height: auto
中添加我认为可能相关的适用 CSS 文件。这并没有破坏任何东西,但也没有解决问题。默认 CSS 代码在此处。#ninja_slider
slider-inner
根据要求,我相信这是相关代码,但我可能是错的,查看完整代码可能很有用:
#ninja-slider {
width:100%;
background:#191919;
padding: 30px 0;
margin:0 auto;
overflow:hidden;
box-sizing:border-box;
}
#ninja-slider .slider-inner {
max-width:600px;
margin:0 auto;/*center-aligned */
font-size:0px;
position:relative;
box-sizing:border-box;
}
StackOverflow 上的这篇文章是我能够挖掘的唯一相关文章,答案表明display: none
使用 CSS 类添加“块”可以解决问题。
根据我对display:none
工作原理的理解,我认为这只会阻止滑块出现,但我仍然尝试将其添加到ninja_slider
div 以及slider_inner
类ul
和li
元素中。那没起效。我的代码与默认代码类似,但如果实时实现有帮助,请点击此处。
我在看什么?如何更改滑块代码以快速显示一个将很快容纳图像的框,以便随后放置的文本将保留在原位并且在图像加载时不会被按下?谢谢你。
解决方案
推荐阅读
- c# - 有没有办法获取这个 Lambda 表达式的内部值
- excel - 检查一行可见单元格的过滤数据,如果没有找到数据移动到下一张表并在那里检查
- sql - 有没有办法从 Redshift 中的字符串中提取所有日期?
- opencv - 从 Windows 中的命令行打开 OpenCV
- python - Jinjna2 如何根据字符串中的值设置字符串样式
- ruby-on-rails - 使用带有 JSON API 而不是 ActiveRecord 模型的 ActiveAdmin
- angular - 我应该使用什么实用程序来建立到 z/OS 大型机的 ftp 连接并将文件传输到 angular webapp 内的本地计算机?
- android - 向 AOSP 中的框架/支持添加新的支持库
- python - 如何在按钮按下时更新屏幕?
- python - NameError:未定义名称“classroom_list”