我可以为背景大小实现纯 CSS 后备吗?

2024-03-06

这对于支持的浏览器来说效果很好background-size。否则,图像会缩放 2 倍。

.a {
  background-image: url(img2x.jpg); /* 1000x1000 */
  background-size: 100%;
  height: 500px;
  width: 500px;
}

这应该用于没有background-size支持。

.a {
  background-image: url(img1x.jpg); /* 500x500 */
  height: 500px;
  width: 500px;
}

是否有可能欺骗浏览器在以下情况下回退background-size不支持?我知道我可以使用@supports https://developer.mozilla.org/en-US/docs/Web/CSS/@supports但它的支持比background-size在这种情况下毫无意义。我也不想使用 JavaScript。

基本上都是这样,除了工作!

.a {
  background-image: url(img1x.jpg); /* 500x500 */
  height: 500px;
  width: 500px;
  /* stop parsing this rule when background-size is not supported */
  /* otherwise continue parsing and set different background-image */
  background-size: 100%;
  background-image: url(img2x.jpg); /* 1000x1000 */
}

这显然不起作用,但是有什么技巧可以让它起作用吗?谢谢。


仅 CSS 后备background-size这很棘手,但是是可以做到的。

诀窍是使用缩写形式backgroundstyle 来设置各种背景属性,而不是使用单独的样式,例如background-size, background-image, etc.

所以在你的情况下,你会得到这样的东西:

background: url(img2x.jpg) 0% 0%/100%;

(The 0% 0% is for background-position(默认为 0% 0%)background-size使用短格式样式时的值)。

到目前为止,我所做的就是将现有代码压缩成一个简短的 CSS 行,但聪明的一点是,现在我们已经做到了这一点,一个无法识别的浏览器background-size会扔掉整条线,而不是仅仅扔掉background-size在其自己的。

这意味着我们可以为旧版浏览器指定一组完全不同的背景值。

background: url(ie8bg.jpg);   /* Shown by IE8 and other old browsers */
background: url(img2x.jpg) 0% 0%/100%;  /* shown by new browsers with background-size support*/

你可以看一下这个的演示在这里行动 http://jsfiddle.net/DgtxD/embedded/result/。现代浏览器将获得一张背景图像,拉伸 100%background-size设置,旧版浏览器(如 IE8)将获得完全不同的图像,没有任何拉伸。

由于您可以为旧浏览器定义完全独立的背景,因此您甚至可以为 IE8 设置纯色背景而不是图像,同时仍为其他浏览器提供图像。

所以是的,一个完整的 CSS 解决方案可以为不支持的浏览器提供后备方案background-size.

希望有帮助。

[EDIT]
浏览器兼容性在这里可能是一个小问题。部分浏览器可能支持background-size但不支持将其作为background简短的语法。大多数情况下,这仅适用于较旧的浏览器(例如 Firefox 7),但在当前版本的 Safari 中仍然存在问题。这意味着,通过这种技术,Safari 将看到后备背景,即使它实际上支持background-size.

这显然并不理想,但它至少会获得后备图像,这意味着页面至少应该看起来还不错,即使不如其他浏览器那么好。希望 Safari 中的这个问题能够在未来的版本中得到解决。

同时,这一点并没有减损这个答案是问题的有效解决方案的事实 - 它确实在纯 CSS 中提供了后备选项。

鉴于这个问题我已经写了一篇关于该主题的博客文章 http://spudley.com/blog/css-background-size-and-browser-support,希望它能更详细地介绍它,并在这个 CSS 后备解决方案不够时提供其他选项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以为背景大小实现纯 CSS 后备吗? 的相关文章

  • 无法从代码隐藏更改 CSSClass

    这一定是世界上最简单的事情 但它就是行不通 我有一个外部 div 我想对其应用一个类以使其显示样式 none 以便隐藏其中的所有内容 它实际上是一个 asp panel 元素 所以我假设我可以在后面的代码中设置 control CssCla
  • 手机上猫头鹰轮播的高度

    我有一个使用 Owl Carousel 覆盖桌面上整个屏幕的图像 当我在手机设备上查看相同的图像时 它仅占用屏幕尺寸的三分之一 我如何调整高度 使其比手机上当前的高度更高 我读过一些帖子 但作为猫头鹰旋转木马的新手 我不确定我是否做错了什么
  • Twitter Bootstrap - 多图像(缩略图)轮播 - 一次移动一个缩略图

    我正在尝试 Twitter bootstrap 3 我对 HTML CSS 和 Javascript 还很陌生 我有一个我创建的轮播 它的代码如下所示 div class container div class carousel slide
  • 从 PHP 生成渐变颜色

    我想知道如何构建一个给出颜色代码和 显示该颜色的渐变 例如 function generate color int colorindex Generate 10 pale colors of this color 请帮我 迈克尔引用的代码相
  • css 字体 twitter 像关闭按钮一样,我错过了什么?

    twitter 有一个关闭按钮 它是单个字符 x 我需要类似的东西 但是在我检查之后 span x span 我按照 firebug 告诉我的那样创建 css 规则 close button font family Tahoma Arial
  • 使用 jQuery 检测容器溢出?

    我见过这个问题 https stackoverflow com questions 2059743 detect elements overflow using jquery但感觉必须有一个 更干净 的 jQuery 方法来做到这一点 我什
  • 自 2012 年 6 月 12 日以来,“未定义”随机附加在我网站上 1% 的请求网址中

    自 2012 年 6 月 12 日 11 20 TU 起 我在我的 varnish apache 日志中看到非常奇怪的错误 有时 当用户请求一页时 几秒钟后我会看到类似的请求 但 url 中最后一个 之后的所有字符串已被 未定义 替换 例子
  • CSS:如何在模糊的背景上剪切文本?

    我想重新创建以下样式 我想出了以下内容 问题是剪切不会影响模糊滤镜 我不知道如何解决它 这是我的 HTML 代码 glass width 40 height 100 position absolute background rgba 255
  • 背景大小:封面在视网膜显示屏上看起来像素化

    可以看到我正在开发的网站here http ourcityourstory com dev 如果你查看 iPad 3 或 iPhone 4 上的 关于 或 联系 部分 背景看起来全都是疯狂的像素化 我有background size set
  • 与 960.gs 的列高度相同吗?

    我有一排 4 列 根据我在每一列中放入的信息量 它们将具有不同的高度 如果你给它们加上背景颜色你就可以看到 我如何给其他列最大高度的列的高度 您可以使用 jQuery 来执行此操作 http www cssnewbie com equal
  • 引用 url() 的值真的有必要吗?

    我应该在样式表中使用以下哪一项 Example 1 background image url image png Example 2 background image url image png Example 3 background i
  • 使用 jQuery 更改 CSS 类属性

    有没有办法使用 jQuery 更改 CSS 类的属性 而不是元素属性 这是一个实际的例子 我有一个 div 类red red background red 我想转班级red背景属性 而不是具有类的元素red分配的背景 如果我用 jQuery
  • PC上同一浏览器的多个版本

    我的机器上运行的是 Windows 7 我安装了以下网络浏览器 Opera 谷歌浏览器 Safari Windows 版本 火狐3 6 IE 8 我正在本地 IIS Web 服务器上进行一些开发 需要跨浏览器测试我的 net Web 应用程
  • jquery UI datepicker仅月份和年份的css定位问题

    我已经实施了这里讨论的解决方案 JQuery 日期时间选择器 只需选择月份和年份 https stackoverflow com questions 4079525 jquery datetime picker need to pick m
  • 将图例标签设置为块

    我已经在以下网址设置了我的问题的演示 http jsfiddle net YHHg7 4 http jsfiddle net YHHg7 4 我正在尝试执行以下操作 legend display block border bottom 1p
  • CSS 选择器:Active 不适用于 IE8 中的子元素单击

    我有以下 HTML 结构 div class wrapper div class control clickable img src logo png div div 以及以下 CSS control border 1px solid 00
  • CSS 边框底部的曲线

    我需要 CSS 中的这个图像 并且在这个边框内需要一个背景图像 我努力了 border radius 0 0 50 50 webkit border radius 0 0 50 50 但没有得到所需的形状 任何帮助 将不胜感激 边界半径 您
  • a:悬停颜色不起作用

    一件很奇怪的事情 我想在悬停时更改链接的文本颜色和背景颜色 这是代码 css link menu a color white display block height 100 width 100 text decoration none t
  • 中有样式表 吗?

    在内部链接 CSS 文件是一个坏主意吗 body 我读过 如果浏览器在外部找到另一个 CSS 文件 则它会被迫重新开始 CSS 渲染 head 只是因为它可能需要将样式应用于已经渲染的元素 另外 我认为 HTML 无法正确验证 我需要确认这
  • CSS 标签“object-fit:cover”不会在 Chrome 中裁剪/剪辑视频

    CSS tag object fit cover无法按预期在 Chrome 中剪辑 裁剪视频 这种情况仅适用于视频且仅在 Chrome 中发生 图像在 Chrome 中正常 在所有其他经过测试的浏览器中 图像和视频都工作正常 The beh

随机推荐