首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置同一张图片在段标签中的不同背景图片格式(png和webp

问如何设置同一张图片在段标签中的不同背景图片格式(png和webp
EN

Stack Overflow用户
提问于 2019-06-27 21:31:10
回答 3查看 3.1K关注 0票数 8

我已经开始在我的网站上使用带有<picture>标签的webp图片了。除此之外的所有设置

代码语言:javascript
复制
<section class="sec-bg" style="background: url('images/bg.jpg');"> 

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

对于其他图像,我使用以下代码

代码语言:javascript
复制
<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> 
EN

回答 3

Stack Overflow用户

发布于 2020-11-13 01:03:57

我建议你使用JS来处理这个问题。例如,您可以在页面上找到所有具有background或background-image样式的元素,然后只需将您的webp图像替换为jpeg版本。因此,您的脚本将如下所示:

​

代码语言:javascript
复制
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.jepg和test.webp,在这种情况下,您可以使用我上面提供的脚本来替换图像扩展名。

票数 2
EN

Stack Overflow用户

发布于 2021-05-15 00:36:09

如果您不想使用JavaScript提供特定于客户端的格式,请考虑将<picture>标记与两个源一起使用,并使用CSS、position: absolute和z-index: -1将图像推送到背景中。

为了扩展您的示例,下面是它的工作原理:

HTML

代码语言:javascript
复制
<div class="sec-bg">
  <div class="sec-bg__image">
    <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> 
  </div>
 
  <div class="sec-bg__content">
    <p>Your section content goes here!</p>
  </div>
</div>

CSS

代码语言:javascript
复制
.sec-bg
{
  position: relative;
  z-index: 0;
}

.sec-bg__image
{
  position:absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  z-indez: -1;
}
票数 1
EN

Stack Overflow用户

发布于 2019-06-27 21:40:19

您尝试过下面的CSS规则吗?

代码语言:javascript
复制
background-image: url('img/image1.webp'), url('img/image1.jpg');

考虑到两个图像是相同的,如果第一个图像不存在,则使用第二个图像。这样,它就像一个“后备图像”。

内联解决方案可以是

代码语言:javascript
复制
<section class="sec-bg" style="background-image: url('img/image1.webp'), url('img/image1.jpg');"> 
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56792199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档