css - 如何在section标签中设置相同图片的不同背景图片格式(png和webp)

标签 css image background-image inline webp

我已经开始在我的网站中使用 webp 图像 <picture>标签。除此以外的所有设置

<section class="sec-bg" style="background: url('images/bg.jpg');"> 

我不知道,如何设置同一图像的不同背景图像格式(png 和 webp)。请在 section 标签中给出这个内联 CSS 的解决方案。

对于其他图像,我使用下面的代码
<picture>
  <source srcset="img/awesomeWebPImage.webp" type="image/webp">
  <source srcset="img/creakyOldJPEG.jpg" type="image/jpeg"> 
  <img src="img/creakyOldJPEG.jpg" alt="Alt Text!">
</picture> 

最佳答案

我建议你使用 JS 来处理这个问题。例如,您可以找到带有 background 的所有元素或 background-image页面上的样式,然后替换您的 webp图片发送至 jpeg版本。所以你的脚本看起来像:

document.deepCss= function(who, css){
  if(!who || !who.style) return '';
  var sty= css.replace(/\-([a-z])/g, function(a, b){
    return b.toUpperCase();
  });
  if(who.currentStyle){
    return who.style[sty] || who.currentStyle[sty] || '';
  }
  var dv= document.defaultView || window;
  return who.style[sty] ||
      dv.getComputedStyle(who,"").getPropertyValue(css) || '';
};
var elms = document.getElementsByTagName('*');
for (var i=0;i<elms.length;i++) {
  var url = document.deepCss(elms[i], 'background-image');
  if (url) {
    url=/url\(['"]?([^")]+)/.exec(url);

    if (url && url[1]) {
      elms[i].style.backgroundImage = "url("+url.replace('.webp', '.jpeg')+")"
    }
  }
}

以相同名称的两种格式存储相同的图像会容易得多,例如 test.jepgtest.webp ,在这种情况下,您可以使用我上面提供的脚本替换图像扩展名。

关于css - 如何在section标签中设置相同图片的不同背景图片格式(png和webp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56792199/

相关文章:

javascript - 如何向该脚本添加元素符号?

javascript - `if` 无法检查 <img> src 的值

jsf-2 - background-image: url ("") 在 CSS h:outputStylesheet 没有加载

css - 使用网格时如何使背景图像扩展到全宽?

css - Bootstrap 4 Alpha 6 右拉等效

asp.net - 在 ASP.NET 下将服务器端变量/函数结果注入(inject) CSS 的最佳方法?

html - Flex 在 Firefox 中无法正常工作

PHP 在根文件夹中包含来自不同子目录的文件

image - RGB 565 - 为什么绿色采用 6 位

html - 如何将背景应用到内容周围的容器而不是 HTML?