8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

尝试通过上传不同大小的图像并编写 JavaScript 代码来使我网站上的所有图像都具有响应性

David Bermudez 1月前

14 0

应用我编写的脚本后,google page speed insight 仍会向我显示以下建议:1. 适当调整图像尺寸;2. 图像没有明确的宽度和高度这是脚本...

在应用我编写的脚本后,google page speed insight 仍向我显示以下建议:1. 适当调整图像尺寸;2. 图像没有明确的宽度和高度

这是我正在使用的脚本。我也指定了宽度和高度,但它不能正常工作。

document.addEventListener('DOMContentLoaded', function() {
    const images = document.querySelectorAll('img');

    images.forEach(img => {
        // Skip images with the attribute "data-no-responsive"
        if (img.hasAttribute('data-no-responsive')) {
            return;
        }

        const src = img.src;
        const fileName = src.split('/').pop().split('.')[0];
        const originalExt = src.split('.').pop();
        
        // Directories for different sizes
        const smallDir = 'assets/img/small/';
        const middleDir = 'assets/img/middle/';
        const originalDir = 'assets/img/';

        // new image object to get the original width and height
        const tempImg = new Image();
        tempImg.src = src;
        tempImg.onload = function() {
            const originalWidth = tempImg.width;
            const originalHeight = tempImg.height;
            const middleWidth = originalWidth / 2;
            const middleHeight = originalHeight / 2;
            const smallWidth = originalWidth / 4;
            const smallHeight = originalHeight / 4;

            // Rounded dimensions
            const roundedOriginalWidth = Math.round(originalWidth);
            const roundedOriginalHeight = Math.round(originalHeight);
            const roundedMiddleWidth = Math.round(middleWidth);
            const roundedMiddleHeight = Math.round(middleHeight);
            const roundedSmallWidth = Math.round(smallWidth);
            const roundedSmallHeight = Math.round(smallHeight);

            // srcset URLs
            const smallSrc = `${smallDir}${fileName}-400w.webp`;
            const middleSrc = `${middleDir}${fileName}-800w.webp`;
            const originalSrc = `${originalDir}${fileName}.${originalExt}`;

            // Update the img element with srcset, sizes, and width/height attributes
            img.srcset = `${smallSrc} ${roundedSmallWidth}w, ${middleSrc} ${roundedMiddleWidth}w, ${originalSrc} ${roundedOriginalWidth}w`;
            img.sizes = '100vw'; 

            // CSS to ensure the image fills the width of its container
            img.style.width = '100%';
            img.style.height = 'auto';
            img.style.maxWidth = '100%'; // Prevent the image from exceeding the width of its container

            // Explicit width and height attributes
            img.setAttribute('width', roundedOriginalWidth);
            img.setAttribute('height', roundedOriginalHeight);
        };
    });
});

帖子版权声明 1、本帖标题:尝试通过上传不同大小的图像并编写 JavaScript 代码来使我网站上的所有图像都具有响应性
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由David Bermudez在本站《javascript》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我不确定客户端 javascript 是否会改善此问题。我解读这些 Page Speed 消息的方式如下:

    适当调整图像尺寸

    当您将高分辨率图像放入较小的容器内时。 阅读更多

    图像没有明确的宽度和高度

    这与 HTML 标记本身有关, <img src="image.jpg" width="400" height="300" alt="My Image"> 以便浏览器能够更好地呈现页面。 阅读更多

返回
作者最近主题: