Safari 5.x 上使用 CSS 的灰度图像

2023-11-26

我试图在页面上显示一些图像,它们应该显示在灰度,鼠标悬停时除外,当它们平滑过渡到颜色时。我已经让它在 IE、Chrome 和 Firefox 上运行良好,但它不适用于 Safari 5.x。问题出在 Mac 版 Safari 上and适用于 Windows 的 Safari。这是我到目前为止的代码:

filter: url('desaturate.svg#greyscale'); 
filter: gray;
-webkit-filter: grayscale(1);

第一行加载一个外部 .svg 过滤器(我没有将其内联url("data:...规则因为我想避免旧版 Firefox 中的一个错误).

第二行是针对 IE 的,看起来效果和filter:progid:DXImageTransform.Microsoft.BasicImage(grayScale=1);.

关于 webkit 的最后一行应该适用于 Safari 6 及更高版本以及 Chrome。

是否有任何 CSS 规则可以显示灰度图像Safari 5.x?或者,如果这是不可能的,有人可以推荐一种 JavaScript 解决方案,最好是能够处理灰度动画和灰度动画的解决方案吗?我想避免服务器端黑客攻击使用灰度图像,因为这会弄乱我的 HTML,然后我必须进行一些讨厌的浏览器检测才能有条件地提供 HTML。

thanks

Edit:

由于这已成为一个“值得注意的问题”,因此请不要继续在此处发布更多仅适用于 Safari 6 及更高版本的答案,或在数据 URL 中包含 .svg 文件的答案。在我编写 OP 时,支持 Safari 和 Firefox 的某些版本对我来说很重要,这些版本现在被认为是very过时了,但这仍然是我最初的问题。

我很清楚,对于现代浏览器来说,灰度过滤可以通过几行 CSS 代码轻松完成,但在我做这个项目时,图形设计师使用的是 Safari 5.x,客户端使用的是 Firefox 3.x。对我有用的解决方案是 Giona 建议的,即使用 Modernizr 来测试 css 过滤,如果不支持则回退到 javascript。

如果我今天做同样的事情,我会告诉他们去更新他们的浏览器!


正如你所看到的caniuse.com, 目前很少有浏览器支持 CSS3 过滤器。

如果你谷歌一下,有很多 JavaScript/jQuery 后备方案”JavaScript 灰度插件”。 这里有一些:

  • 灰度.js
  • jQuery 灰度级插件
  • Hoverizr
  • 用画布做(教程)

但我没有使用它们的经验,所以我不能建议你哪一个是最好的。

I tried jQuery 黑白很久以前,它给我带来了很多关于相对/绝对定位图像的问题,所以也许可以避免它。


包括这个现代化建设在您的页面中,您可以通过 Javascript 定位不支持过滤器的浏览器:

if(!Modernizr.css_filters){
    /* javascript fallback here */
}

or CSS:

.no-css_filters .element {
    /* css fallback here */
}

哦,别忘了网站需要在每个浏览器上看起来完全相同吗?

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

Safari 5.x 上使用 CSS 的灰度图像 的相关文章

  • 在每个打印页上重复水印? JavaScript 或 CSS

    所以 我有这个发票页面 我正在页面后面添加水印 我需要为要打印的每一页重复水印 问题是 我不知道会有多少页 可以有任意数量的页面 我需要在每个页面后面显示水印 这些图像取自 Google Chrome 的打印模式 这是该页面的 html 你
  • 将单选按钮放置在图像上

    我试图在图像上的确切位置放置一些单选按钮 我已将两者都放在 Div 中 但我不知道下一步该怎么做 这是我想要放置单选按钮的位置 红色圆圈 到目前为止 这是我的代码 center display block margin left auto
  • 设置overflow-y可见,而overflow-x为auto,以便内容可以垂直溢出父容器

    我在用着position absolute and position relative如果将其父级悬停在图像上 则在图像上显示文本 文本和图像父 div 所在的容器设置为overflow x auto 使其具有水平滚动条 我想要看起来垂直溢
  • 将 html 转换为 pdf 时防止表格单元格跨页破坏

    使用 Google Apps 脚本 我有一个 html 模板 我填写该模板 然后以 pdf 形式发送 通过传真和 或电子邮件 该模板包括一个带有问题 答案的两列表格 如果行数足够多 表格会在pdf中跨页分页 并且分页符通常发生在单元格的中间
  • 边界半径圆

    我有这个代码 span p margin 0 span background color red display inline block border radius 50 span p 25 p p 08 p span 我想在我的跨度上画
  • @Font-face 不适用于 IOS

    我正在开发一个 WordPress 网站 并且在每个页面上都有一个 H1 标签作为该页面的标题 我正在使用 font face 的特殊字体 它在每个浏览器的 Windows 上都运行良好 但是当我切换到 Mac 时 它不会显示 h1 标签
  • javascript中怪异模式的元素宽度?

    我一直在浏览所有流行的 js 库 但我找不到一个具有 DOM 元素宽度函数的库 该函数实际上可以解释 Internet Explorer 中的怪异模式 问题是 当启用怪异模式时 填充和边框不会计入宽度 据我所知 当省略 doctype 或将
  • 您能否确定 CSS 文件的范围,使其仅适用于给定元素的后代?

    给定一个 css 文件 有没有办法限制整个文件的范围 使其仅适用于给定元素内的元素 例如给定 div span class some element span div 有没有一种方法可以将整个 css 文件的范围应用于 容器 中的所有元素
  • 有 CSS 父选择器吗?

    我该如何选择 li 元素是锚元素的直接父元素 举个例子 我的 CSS 应该是这样的 li lt a active property value 显然 有多种方法可以使用 JavaScript 实现此目的 但我希望 CSS Level 2 本
  • React JS - 单击时更改颜色并将默认颜色放在所有其他颜色上

    我有 x 个渲染数文章预览依赖于 API 调用的组件 div div Object keys images map index i gt return div div
  • 使用 bootstrap 将搜索图标放入文本框中

    我默认使用引导程序 文本框占据列的全宽 我想将搜索图标放在文本框的末尾 我的代码是这样的 div class container div class row div class form group col lg 4 div div div
  • jQuery 在 Chrome 下发现错误元素

    我使用 jQuery 迭代 HTML 表 并动态填充每行的行号 通过在文本框中填充行号 function updateRowNums myTable find tr each function index this find input i
  • 监听浏览器宽度以进行响应式网页设计?

    我正在努力使我的网站适合移动设备 我想知道浏览器窗口的大小 以便当它比 728px 窄时我可以执行某些操作 而当它大于 728px 时我可以执行其他操作 这必须考虑到调整 PC 上的窗口大小以及在手机中从纵向模式更改为横向模式 如何才能做到
  • IE bug:具有不透明背景色的绝对定位元素

    我有一个绝对定位的 DIV 需要捕获 onclick 事件 事实证明 在 IE7 中 DIV 似乎没有诸如单击甚至光标之类的 足迹 例如 div width 200px height 200px position absolute bord
  • 理解 z-index:该元素如何出现在其父级同级元素的前面?

    为什么当我删除时红色 div 位于绿色 div 前面z index from wrapperRed 感觉像z index是沿着链条向上继承的 如果我改变z index将绿色 div 更改为 6 即使删除第一句中描述的行后 它仍保留在红色 d
  • 单击导航项锚链接时如何关闭切换菜单

    请看我的FIDDLE http jsfiddle net ayhpp8ax 我有一个带有 响应式 导航菜单 带有指向页面上元素的锚链接 的 1 页网站 当浏览器视口小于特定宽度 在我的情况下为 767px 时 使用此 javascript
  • 在 ember-cli 中安装 Foundation 5

    我对 ember 相当陌生 对构建工具也很陌生 我目前正在使用通常的基础安装以及基础 cli 和指南针来编译我的 css 这有点痛苦 并且对于团队工作来说非常糟糕 我认为用 Bower 安装文件并使用会更好ember cli compass
  • CSS 到底如何计算相对尺寸

    我想更好地理解某些 CSS 行为 这与具体问题无关 我只是在调试网站时遇到的 让我们在固定位置的 div 中放置一个全宽图像 div img style width 100 src https via placeholder com 150
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用

随机推荐

  • 如何将 MQ Server 回复消息与正确的请求相匹配

    我正在连接到 IBM Websphere MQ 我希望能够将回复消息与正确的请求消息相匹配 我已经翻阅了数百页才能得到这个 但没有运气 我有一个类 MQHandler 它将一条消息发送到一个定义的队列 并从另一个队列读取请求 这工作得很好
  • 如何使用 HtmlUnit 获取 HTML 页面

    我知道你可能认为这个问题很愚蠢 但我需要使用 HtmlUnit 但是 它以 XML 或文本形式返回页面 我不知道如何获取纯HTML 与浏览器返回的源代码相同 我需要这个 因为我需要使用一些编写的模块 有任何想法吗 您可以使用以下代码来实现您
  • 为什么两阶段查找无法选择“swap”的重载版本?

    我在学习这个令人着迷的答案 to a 微妙的问题关于实施的最佳实践swap用户定义类型的函数 我的问题最初是由讨论向命名空间添加类型的非法性std 我不会在此处重新打印上述链接答案中的代码片段 相反 我想理解答案 我在上面链接的答案在第一个
  • JFrame.dispose() 与 System.exit()

    这两种方法有什么区别 System exit and JFrame dispose 如果我们想在单击按钮时关闭 Java Swing 应用程序 我应该使用哪种方法 System exit 导致 Java VM 完全终止 JFrame dis
  • 更新到 Angular 8 CLI 后抛出“.getColorDepth 不是函数”

    我的一位同事将你的项目升级到 Angular 8 我拉了他的分支并运行npm install 在他的分支上一切正常 现在 每次运行任何 ng 命令时 我都会遇到相同的错误 C xxx party ui node modules angula
  • 使用 ajax 调用时如何拦截 jQuery 链接?

    我可能正在做一些愚蠢的事情 但是如果我有一个正常的链接 例如 div div a href Not Intercepted A link a 我将 jQuery 单击事件附加到链接 如下所示 interceptMe click functi
  • 散列密码和加密密码之间的区别

    目前得票最高的是这个问题 states 另一个问题虽然与安全相关 但与其说不是安全问题 而且完全失败了理解散列密码和加密密码之间的区别 最常见于程序员试图提供不安全的 提醒我密码 功能的代码中 这个区别到底是什么 我一直认为散列是加密的一种
  • Rails Bootstrap 导航栏和refineryCMS

    有人在refineryCMS 中实现了 Rails Bootstrap Navbar 吗 我很难弄清楚如何呈现下拉菜单 这应该是实现这一目标的正确方法 menu html erb div div
  • TypeScript 在 WebStorm 7 中将所有 ts 文件编译为单个 JavaScript 文件

    我的项目中有很多 ts 文件 WebStorm 将每个 ts 文件构建为 js 文件 但我不想那样 我有一个 app ts 文件 所有其他 ts 文件都将构建在该 app ts 文件中 我怎样才能在 WebStorm 7 中做到这一点 CL
  • jquery .on('input') 不会单独在 ie8 中被触发

    我遇到了 IE8 特有的问题 此事件不会单独在 IE8 中触发 但在 IE9 和其他浏览器 如 Firefox 和 Chrome 中运行良好 myId on input function do something 如果 IE8 中有相同的解
  • 从python中的网络驱动器号获取完整的计算机名称

    我正在使用 python 来填充一个表 其中包含多个存储文件的文件路径 但是 该路径需要具有完整的网络驱动器计算机名称 而不仅仅是驱动器号 即 计算机名 文件夹 子文件夹 文件 not P 文件夹 子文件夹 文件 我已经研究过使用 win3
  • java.lang.UnsupportedClassVersionError 不支持的major.minor版本51.0 [重复]

    这个问题在这里已经有答案了 我正在尝试构建一个应用程序 但它给出了一些错误 我的JDK版本如下 java version 1 6 0 30 Java TM SE Runtime Environment build 1 6 0 30 b12
  • 如何删除无意中出现的图像填充?

    我在一个容器中有三个图像 应该无缝堆叠 但它们之间存在一些填充 您可以在此处查看该页面 http www arbitersoflight net media 左侧容器中的三个大按钮就是有问题的按钮 这是容器的代码 CSS mainBoxFu
  • 基类中的方法可以以某种方式返回子类吗?

    我举个例子 以便您更好地理解我的意思 public class Base public Base Common return this public class XBase Base public XBase XMethod return
  • 参考错误:“驱动器”未定义

    在 Google App Maker 中 我正在 ServerScript 中编写一个函数 用于将用户上传的 Excel 电子表格转换为 Google 电子表格 我正在使用这段代码 https stackoverflow com a 355
  • Google API Python unauthorized_client:请求中未经授权的客户端或范围

    尝试运行我的代码时出现此错误 oauth2client client AccessTokenRefreshError unauthorized client Unauthorized client or scope in request 这
  • 谷歌分析的替代品是什么[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要在我的网络应用程序中跟踪唯一访客数量 我真的很想使用 Google Analytics 但由于 google 施加的负载限制 我将无法使用它们
  • javascript 日期到 java.time.LocalDate

    我正在尝试将 json 数据发布到 Java 中的控制器 这是我的控制器 ResponseBody RequestMapping value schoolId method RequestMethod POST public ClassGr
  • 替换Python中除了第一次出现的子字符串之外的所有内容?

    我有一个如下所示的字符串 string SELECT sdfdsf SELECT sdrrr SELECT 5445ff 现在我想替换每一个出现的SELECT除了第一个 SELECT所以最后字符串看起来像这样 SELECT sdfdsf S
  • Safari 5.x 上使用 CSS 的灰度图像

    我试图在页面上显示一些图像 它们应该显示在灰度 鼠标悬停时除外 当它们平滑过渡到颜色时 我已经让它在 IE Chrome 和 Firefox 上运行良好 但它不适用于 Safari 5 x 问题出在 Mac 版 Safari 上and适用于