首页>建站相关>jquery.lazyload图片占位高度与实际不符的原因

jquery.lazyload图片占位高度与实际不符的原因

想为站点图片添加一个lazyload的效果,没成想整整耗费了两天的时间去解决图片高度的问题。未加lazyload之前的图片,比例均衡姿态完美,一加lazyload,宽度没有什么问题,但灰色的placeholder区域整整高出了几层楼,于是等lazyload一结束,图片刷的一蹦三尺高。

placeholder方案

尝试了一下用一张与图片同尺寸的灰色图案代替,不使用默认的placeholer,可以解决这个问题,页面重新加载时的比例确实均衡了,但是一想,这图片尺寸各异的时候不能挨个去做对应尺寸的loadding图片吧。于是尝试想找个更为简单的方式。

jquery方案

仔细观察了一下页面,发现页面宽度是正常的,仅仅是高度产生了异常,在js运行过程中console.log测试了一下,发现:

$('.catelist-img img').width();

可以正常输出图片的宽度,但尝试输出高度的时候得到的数值是0。既然自己知道图片比例,又有了图片宽度,那就直接按宽度计算高度呗。

$('.catelist-img img').height($('.catelist-img img').width()/3);

尝试在lazyload语句之前加了这么一句,提前设置了图片的宽度。实际页面效果确实变好了,一般出现“确实”,“倒是”这类词的时候,往往代表问题好像解决了,又没有完全解决。尝试缩小窗口的时候发现,固定的style限制了图片的高度,导致页面自适应变换的时候,图片比例失调了。

玄学操作

行内style具备最高的优先级,于是尝试给css的图片高度加了一个important,缩放正常了,加载黑边又回来,一切又回到了原点。

.catelist-img > img{
    display:block;
    width: 100%;
    height: auto!important;
}

解铃还需系铃人

去掉了important,既然是行内css的锅,找个合适的时机删除掉吧。直接在lazyload语句后增加了一句:

$('.catelist-img img').removeAttr('style');

加载黑边继续顽固存在,看来这个高度不能在读取前删除,因为是手动缩放时产生的变形,那么就加在resize里吧,问题是暂时解决了。不清楚有没有更好的方案,看着眼前七零八落的代码,耳边响起一句名言:如果代码能跑,那就不要尝试去改动它了。 -_-!!!

标签: javascript

移动端可扫我直达哦~

推荐阅读

javascript 2023-10-13

用jquery取代a链接的title说明文字

站点的标签页原来是类似下图左侧的,在标签后用括号的形式展示了文章数量,边栏本来就小,加了数字后感觉内容变长,也有点影响标签文字的识别,就想着改成下图右侧的形式。记录一下原来生成含数字标签的代码,方便以后修改时的查询:<?php ...

建站相关 javascript

javascript 2023-10-11

js正则表达式的匹配与替换操作

利用exec()可以提取到某一段字符串中的指定的值,比如有下面这样一行字符串:a='-aaaa-bbbb-cccc-';想要分别提取其中的连续的字符,即“aaaa”、“bbbb”、“cccc”,书写正则表达式如下,并利用exec()函...

建站相关 javascript

javascript 2023-10-09

双栏多栏主题图片的lazyload问题

想为全站添加lazyload效果,这样在图片加载成功后会得到一个渐变显示的效果,看起来酷酷的。使用jquery的lazyload老牌插件,先写的js效果,后添加的模块,左边栏的图片加载的好好的,等到右边栏输出缩略图时,就出现了问题。l...

建站相关 javascript

javascript 2023-09-27

php如何传递数据给前端的javascript

尝试写主题的时候遇到了需要利用后台的设置数据去改变前端javascript设置的需求,比如后台设置一个幻灯的轮播速度为“5000”毫秒,需要将这个数据传递给js插件“slidejs”。最初的做法是利用php直接输出一段标签,类似下面这...

建站相关 javascript

javascript 2023-05-28

利用js获取当前页面的域名与网络协议等信息

浏览器会在用户有历史搜索记录之后自动弹出一些关键词供用户选择。但弹出的窗口的位置往往距离输入框过近,弹窗样式也不是特别好看。所以准备参考360,记录用户的搜索关键词,以标签的形式放在弹出窗口中,当输入框获取到焦点时,弹出自定义的窗口,...

建站相关 javascript

javascript 2023-05-09

利用localStorage保存用户的浏览记录

尝试在页面上加载了一言,没事刷新页面就会看到一条新的记录。偶然刷到这样一句话:“大佬永远都觉得自己是萌新”,秉承这种态度的人,一方面可能是出自谦虚。另一方面,技术迭代日新月异,知识浩如烟海,能在某一方面保持拔尖的人,确实为数不多。说回...

建站相关 javascript

javascript 2023-04-27

利用console.time来测试一下js程序的执行效率

想测试一下自己的程序跑一圈需要多少时间,可以尝试启动一个计时器来跟踪它的占用时长。每一个计时器必须拥有唯一的名字。当以此计时器名字为参数调用 console.timeEnd() 时,浏览器将以毫秒为单位,输出对应计时器所经过的时间。启...

建站相关 javascript

javascript 2023-04-10

利用lazysizes.js实现图片懒加载

站点的专题图片稍有点大,恩,其实主要是服务器的带宽过小。导致访问的时候图片加载过慢,页眉部分会空出一块,直到加载结束。于是就想参照joe主题的样式,做一个图片懒加载的效果。joe主题使用了lazysizes实现图片的懒加载。于是查询了...

建站相关 javascript

javascript 2022-11-16

利用js代码获取淘宝详情页大图

利用代码成功获取到了京东的宝贝详情页的大图,想顺便尝试一下淘宝的大图的获取。与京东不同,京东修改了图片的路径地址以实现不同尺寸的展现,淘宝则是以修改图片后缀名的方式,如果想要展现宝贝的大图,直接去掉图片的后缀名就可以了。获取图片的js...

建站相关 javascript