css - 2022 年处理 Safari 和 .webp 图片

标签 css macos background-image webp browser-detection

我一直在等待使用 .webp 图片很长时间。

现在是 2022 年,所以,给定:

  • 图像格式已经存在了十年
  • Chrome 于 2014 年 1 月开始支持 .webp
  • Firefox 于 2019 年 1 月开始支持 .webp

我前天决定冒险尝试将网站上的一堆.png图像转换为.webp图像。

菜鸟错误。因为,当然,我应该检查:https://caniuse.com/webp首先,这会告诉我 Safarima​​cOS 11.0 Big Sur(2020 年 11 月) 之前的任何版本上 支持 .webp 图片。

但是我已经厌倦了等待。所以...我想 Safari 可以继续使用 .png 图片。

因为我绝对确实想为 Firefox、Brave、Chrome、Edge、Opera 等用户提供 .webp 图像。

如果我使用标记图像,声明一个或多个后备图像是基本的:

<picture>
  <source srcset="a-webp-for-most-browsers.webp" type="image/webp">
  <source srcset="a-png-for-safari.png" type="image/png"> 
  <img src="a-png-for-safari.png" alt="My Image">
</picture>

但是(叹息)在这种情况下,图像是 CSS 背景图像,因此创建回退的选项更加有限:

我是否仅限于通过 PHP 进行浏览器嗅探,如下所示:

if (preg_match('/Mac OS X/', $_SERVER['HTTP_USER_AGENT'])) {

  $Body_Element_CSS_Class_List .= ' oh-no-here-comes-safari';
}

有没有比浏览器检测更好/更可靠的方法?

最佳答案

我有同样的问题,但我相信今天解决 CSS 背景图像的一个好方法是使用 Modernizr .

在该链接中,您可以制作一个 Modernizr 脚本构建,专门验证浏览器中的 webp 支持。然后你只需要将脚本添加到 <head>它将向 <html> 添加类基于您正在验证的功能。因此,例如,要为 CSS 背景图像加载不同的图像格式,您可以执行以下操作:

.webp .image {
  background-image: url('/image.webp');
}
.no-webp .image {
  background-image: url('/image.png');
}

关于css - 2022 年处理 Safari 和 .webp 图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71079702/

相关文章:

css - 悬停和鼠标移出的不同 CSS 过渡延迟?

javascript - react 响应模式 : Change background-color when modal is open

python - 在 Mac OS X 上安装 MySQL Python

jquery - 使用 jQuery 添加多个背景

html - 当有其他背景图像时,具有重复的背景图像必须停止

JavaScript:在 classList 中添加一个特定于类的标签

css - 使用css围绕中心文本位置旋转svg文本

swift - NSOutlineView,如何获取选中的单元格

html - 图像在 Windows 和 OS X 浏览器中呈现不同

css - 背景图像在 chrome 浏览器中消失