为什么 [CSS 功能] 在 [浏览器] 中不起作用,但在其他浏览器中起作用?

2024-04-21

我尝试使用transition在 Firefox 15 上,它不起作用,即使它可以在其他版本的 Firefox 以及 Chrome 和 Safari 等其他浏览器上运行。

当我使用 Firefox 的检查器查看属性时transition被删除并给出“无效属性值”的错误。MDN https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Using_CSS_transitions and caniuse http://caniuse.com/#search=transition据说 Firefox 4 及以上版本支持它!

#mydiv {
    transition: width 1s; /* Did I do this wrong? */
    background: #f00;
    width: 100px; height: 100px;
}
#mydiv:hover { width: 200px }

为什么有时属性像transition and animation在某些浏览器中有效而在其他浏览器中无效?

免责声明:这是所有可通过添加供应商前缀完全解决的问题的规范副本。堆栈溢出问题应该not除非在元上讨论以及此后创建的规范答案,否则会如此广泛就像这个 https://meta.stackoverflow.com/questions/267634/what-to-do-with-css-prefix-questions.


尽管情况并非总是如此,但像这样的房产最常见的原因之一是transition or animation可以在某些浏览器上运行,而不能在其他浏览器上运行,这是因为供应商前缀.

什么是供应商前缀?

在 Firefox 版本 4 推出时,CSS 转换模块规范还是一个工作草案。在规范最终确定之前(实际上,这是当它达到候选推荐值时),浏览器供应商添加供应商前缀属性、值和 @-rules,以防止规范更改时出现兼容性问题。

供应商前缀正如其名称所描述的那样 - 属性或值的特定于供应商(供应商意味着开发浏览器的公司)前缀。它们通常针对每个浏览器以特定方式实现,因为属性或值仍处于候选推荐阶段之前的许多实验阶段之一,即他们被认为已准备好实施的阶段 https://stackoverflow.com/questions/19994770/why-are-there-vendor-prefixes-in-css3/19995110#19995110.

最常见的是-moz-(火狐浏览器),-webkit-(Chrome、Safari 等),以及-ms-(微软 Internet Explorer),但是还有更多 https://stackoverflow.com/q/5411026/3890059.

我什么时候需要使用它们?

这完全取决于您想要提供服务的浏览器、您正在使用的属性和值以及您在什么时间点开发网站。有一些网站尝试保留当前列表 http://peter.sh/experiments/vendor-prefixed-css-property-overview/但它们并不总是准确或保持最新。

以下是一些最常见的前缀属性和值。如果您的项目不支持属性右侧注释中提到的浏览器,则无需将其包含在 CSS 中。

过渡

无前缀的属性有时具有前缀的等效项,例如-webkit-transition.

为了获得完整的浏览器支持,需要满足以下条件:

.foo {
    -webkit-transition: <transition shorthand value>; /* Safari 3.1-6, Chrome 1-25, Old Android browser, Old Mobile Safari, Blackberry browser */
    -moz-transition: <transition shorthand value>;    /* Firefox 4-15 */
    -o-transition: <transition shorthand value>;      /* Old opera */
    transition: <transition shorthand value>;         /* Modern browsers */
}

请注意,-ms-前缀存在于transition,但是它仅由 IE10 的预发布版本实现,该版本不再起作用,因此永远不需要它。它在 IE10 RTM 及更高版本中实现为无前缀。

变换

.foo {
    -webkit-transform: <transform-list>; /* Chrome 21-35, Safari, iOS Safari, Opera 22, many mobile browsers */
    -ms-transform: <transform-list>;     /* IE9 */
    transform: <transform-list>;
}

动画

动画需要有属性前缀and相应的关键帧前缀,如下所示:

.foo {
  -webkit-animation: bar; /* Safari 4+ */
  -moz-animation: bar;    /* Fx 5+ */
  -o-animation: bar;      /* Opera 12+ */
  animation: bar;         /* IE 10+, Fx 16+ */
}

@-webkit-keyframes bar { /* Keyframes syntax */ }
@-moz-keyframes bar { /* Keyframes syntax */ }
@-o-keyframes bar { /* Keyframes syntax */ }
@keyframes bar { /* Keyframes syntax */ }

Flexbox

值也可以带有前缀,例如flexbox https://stackoverflow.com/tags/flexbox/info. Note:为了获得最大的浏览器兼容性,Flexbox 特定的属性,例如ordinal-group, flex-flow, flex-direction, order, box-orient等在某些浏览器中需要加前缀此外至以下内容:

.foo {
    display: -webkit-box;  /* OLD - iOS 6-, Safari 3.1-6 */
    display: -moz-box;     /* OLD - Firefox 19- (buggy but mostly works) */
    display: -ms-flexbox;  /* TWEENER - IE 10 */
    display: -webkit-flex; /* NEW - Chrome */
    display: flex;         /* NEW, Spec - Opera 12.1, Firefox 20+ */

    -webkit-box-flex: <flex shorthand value>;
    -moz-box-flex: <flex shorthand value>;
    -webkit-flex: <flex shorthand value>;
    -ms-flex: <flex shorthand value>;
    flex: <flex shorthand value>;
}

Calc

.foo {
    width: -webkit-calc(<mathematical expression>); /* Chrome 21, Safari 6, Blackberry browser */
    width: -moz-calc(<mathematical expression>);    /* Firefox <16 */
    width: calc(<mathematical expression>);         /* Modern browsers */
}

渐变

See CSS 渐变 http://css-tricks.com/css3-gradients/有关更多信息,请参阅 CSS-Tricks。

.foo {
    background-color: <color>; /* Fallback (could use .jpg/.png alternatively) */
    background-image: url(bar.svg); /* SVG fallback for IE 9 (could be data URI, or could use filter) */  
    background-image: -webkit-gradient(linear, left top, right top, from(<color-stop>), to(<color-stop>)); /* Safari 4, Chrome 1-9, iOS 3.2-4.3, Android 2.1-3.0 */  
    background-image: -webkit-linear-gradient(left, <color-stop>, <color-stop>); /* Safari 5.1, iOS 5.0-6.1, Chrome 10-25, Android 4.0-4.3 */  
    background-image: -moz-linear-gradient(left, <color-stop>, <color-stop>); /* Firefox 3.6 - 15 */
    background-image: -o-linear-gradient(left, <color-stop>, <color-stop>); /* Opera 11.1 - 12 */
    background-image: linear-gradient(to right, <color-stop>, <color-stop>); /* Opera 15+, Chrome 25+, IE 10+, Firefox 16+, Safari 6.1+, iOS 7+, Android 4.4+ */
}

注意left and to right代表相同的方向,从左到右,因此left and to left point opposite方法。看这个答案 https://stackoverflow.com/questions/19486680/are-top-and-to-top-the-same-direction-for-linear-gradients/19488034#19488034一些背景信息。

边界半径(大多数情况下不需要)

.foo {
    -webkit-border-radius: <length | percentage>; /* or iOS 3.2 */
    -moz-border-radius: <length | percentage>;    /* Firefox 3.6 and lower */
    border-radius: <length | percentage>;
}

盒子阴影(大多数情况下不需要)

.foo {
    -webkit-box-shadow: <box-shadow shorthand value>; /* iOS 4.3 and Safari 5.0 */
    -moz-box-shadow: <box-shadow shorthand value>;    /* Firefox 3.6 and lower */
    box-shadow: <box-shadow shorthand value>;
}

如何用 JavaScript 来实现它们?

要访问 JavaScript 中的前缀属性和事件,请使用骆驼香烟盒 https://en.wikipedia.org/wiki/CamelCase相当于 CSS 前缀。这对于像这样的事件监听器来说是正确的foo.addEventListener('webkitAnimationIteration', bar )还有(foo是一个 DOM 对象,比如document.getElementsById('foo')).

foo.style.webkitAnimation = '<animation shorthand value>';
foo.style.mozAnimation = '<animation shorthand value>';
foo.style.oAnimation = '<animation shorthand value>';

前缀工具

在线前缀可能会有帮助,但并不总是可靠。始终确保在您希望支持的设备上测试您的项目,以确保每个设备都包含适当的前缀。

CSS 预处理器函数:

  • SASS 和 SCSS 属性前缀 http://www.stefanwienert.de/blog/2012/05/18/easy-css-vendor-prefix-mixin-for-sass/
  • LESS 属性前缀 https://github.com/JoelSutherland/LESS-Prefixer

JavaScript 前缀函数:

  • -CSS 属性和值无前缀 http://leaverou.github.io/prefixfree/
  • 事件前缀 http://www.sitepoint.com/css3-animation-javascript-event-handlers/

也可以看看: 为什么浏览器要为 CSS 属性创建供应商前缀? https://stackoverflow.com/q/8131846/3890059

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

为什么 [CSS 功能] 在 [浏览器] 中不起作用,但在其他浏览器中起作用? 的相关文章

  • 外部 css 文件在 Flask 框架中不起作用

    我正在尝试在我的 html 文件中使用外部 css 文件 起初我使用 bootstrap 框架 效果很好 然而 当我尝试通过添加自定义的css文件来自定义网页时 它根本不起作用 这是我的代码
  • Highcharts - 使用选定的饼图切片获得 3D 效果

    在 highcharts 中 我试图使当用户选择或将鼠标悬停在饼图的切片上时 该切片会产生沿 z 轴 朝向用户 上升的效果 我试图通过 css 设置阴影过滤器并使切片的边框更宽 填充颜色相同 来实现此目的 然而 我面临的问题是切片仍然可以位
  • 在具有不同边框的 div 上调用函数

    我有一个div对于一个名为 ball 的类 div 的每个边缘都有一个边框 顶部边框 左侧边框等 当用户单击每个边框上的边框时 我想用 JavaScript 触发不同的事件 例如 用户点击边框顶部console log top 等等 HMT
  • jquery UI datepicker仅月份和年份的css定位问题

    我已经实施了这里讨论的解决方案 JQuery 日期时间选择器 只需选择月份和年份 https stackoverflow com questions 4079525 jquery datetime picker need to pick m
  • 如何防止桌面浏览器(Chrome、Safari)缩放网页

    我尝试使用以下元视图端口标记来防止浏览器缩放 但这不起作用 我知道这是可能的 因为我的缩放在此网站上被阻止 未来主义 xyz http futurism xyz 该网站的视口标签是这样的
  • Android浏览器上的Web应用程序宽度问题

    所以到目前为止我只在 Android 浏览器上遇到过这个问题 基本上我的网站几乎一直运行良好 而且我还没有在 Dolphin Opera 或 Skyfire 上看到这个问题 但偶尔当我从手机主屏幕之一上的书签重新打开 Android 浏览器
  • 如何检测被覆盖的 CSS 属性?

    I can get all css properties for an element with document stylesheets but some of those are not active because those pro
  • 文本的彩虹色

    rainbowtext background image webkit gradient linear left top right top color stop 0 f22 color stop 0 15 f2f color stop 0
  • 网格布局:创建 CSS,以便元素在调整相邻元素大小时保持位置

    我想在网格布局中构建一个简单的图像库 并且我正在使用类似的东西悬停时缩放 http www javascript fx com navigation imagezoom general help help html缩放悬停图像 但我宁愿使用
  • CSS 标签“object-fit:cover”不会在 Chrome 中裁剪/剪辑视频

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

    添加项目符号点?

    Update 例子 p Text Text p 在示例中 是否可以选择第二个 文本 单词 p 元素并单击按钮仅动态添加项目符号点到选定的 单词 有没有可能 在一个 p p Text p 突出显示从 p 元素并添加项目符号点到按钮上动态单击的
  • 严格/过渡 DOCTYPE 之间的浏览器渲染差异

    前段时间我遇到了一个 问题 但我从未深入了解过 希望有人能够照亮它 当我将 DOCTYPE 从严格更改为过渡时 是什么导致某些浏览器 Chrome Opera 和 Safari 以不同方式呈现页面 我知道造成这种情况的一般原因是触发了怪异模
  • jQuery 位置 DIV 固定在滚动顶部

    我有一个相当长的页面 在布局的菜单中 有一个弹出菜单 我希望菜单的弹出部分显示在页面顶部 即使用户已将菜单栏滚动到视图之外 这是菜单的 HTML div div Compare up to 3 cards side by side Clic
  • 如何防止 CFDocument 中的内容中间发生分页?

    我使用 cfdocument 标签从 html css 动态生成 PDF 文件 有些内容块我不想跨越多个页面 经过一番搜索后 我发现根据文档支持 page break inside 样式 然而 在我的测试中 声明 page break in
  • 在 javascript、jQuery 或 css 中,如何让 div 或 iframe 展开以填充其余空间

    我有三个 iframe 我将顶部 iframe 设置为 50px 高度 将底部 iframe 设置为 50px 但我希望中间 iframe 扩展以填充其余空间 有没有一种技术可以用来对任何窗口屏幕尺寸执行此操作 谢谢 example
  • 更快地开发和测试打印样式表的方法(避免每次都进行打印预览)?

    这是我现在的流程 保存对 print css 的更改 打开浏览器并刷新页面 右键单击并选择 打印 gt 打印预览 Firefox 但实际上是任何浏览器 第三步让我烦恼 我想知道是否可以通过插件或其他东西将其从流程中删除 只需选择以打印媒体形
  • 淘汰赛绑定,每个都可进行自定义

    我这里有一个情况 用于淘汰每个带有定制的绑定 这是我的代码 div div table tbody tr td td td td tr tbody table div div
  • 如何使用 vanilla JS 实现可维护的反应式 UI

    今天我遇到了一个问题 可以通过使用像 Vue 这样的反应式和状态管理框架来轻松解决 遗憾的是 无法使用它 以下 简化 情况 链接到代码笔 https codepen io theiaz pen BazErKV 我们有一个服务器渲染的页面 其
  • 即使在包裹后也具有等宽的弹性项目

    是否可以制作一个像这样的纯 CSS 解决方案 物品有一些min width 它们应该动态增长以填充所有容器宽度 然后换行到新行 列表中的所有项目都应具有相同的宽度 现在看起来是这样的 这就是我希望它看起来像的样子 我已经手动管理这些底部项目
  • 如何强制外部 div 扩展到内部 div 的高度?

    我有 ajax 到的数据 div class content 我希望外部 div 扩展到内部 div 的高度 我不知道该怎么做 HTML div class outer div class inner div class content S

随机推荐

  • 如何在 Aqua Data Studio 中导出注册的服务器设置?

    有谁知道如何在 Aqua Data Studio 中导出注册服务器 也许有一些棘手的方法可以通过复制一些 ini 文件或注册表项来完成此操作 AD Studio 服务器注册位于 USER HOME datastudio connection
  • MySQL - 行计数和左连接问题

    我有 2 个表 活动和活动代码 营销活动 id partner id 状态 Campaign codes ID 代码 状态 我想要获取所有营销活动的所有营销活动代码的计数 其中营销活动代码 status 等于 0 或营销活动没有营销活动代码
  • 使用 jQuery 获取语法错误 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions Add a
  • Android 相当于 iPhone 的“添加到主屏幕”吗?

    我正在开发一个移动网络应用程序 目前我有一段 jQuery 代码 用于检查应用程序是否全屏运行 if window navigator standalone content before div class notice To enjoy
  • XSD 架构和 JAXB 类中的多态性

    我有一个像这样的xml
  • 如何防止 SVN 缓存单个存储库的凭据?

    我正在使用 Collabnet SVN 客户端版本 1 5 和 1 6 我的本地计算机运行的是 Windows Vista x64 我知道 确实非常悲伤 我想每次尝试在选定的存储库上执行任何颠覆操作时都强制进行身份验证 我如何将属性或设置设
  • 用于将 格式的 unicode 字符转换为其 ASCII 等效项的脚本

    我正在对 Linux 区域设置文件进行一些更改 usr share i18n locales 如 pt BR 更改日期 时间 数字等的默认格式 但是由于 unicode 字符在
  • 使用 Angular FormArray 计算值

    我正在尝试根据 FormArray 中的特定值计算总计或其他值 我发现订阅时valueChanges并尝试将整个数组传递给类似的东西reduce 新值 不存在于父 FormGroup 中 StackBlitz 上的原始示例 https st
  • 如何确定 C 中数组的大小?

    如何确定 C 中数组的大小 即数组可以容纳多少个元素 执行摘要 int a 17 size t n sizeof a sizeof a 0 完整答案 要确定数组的大小 以字节为单位 您可以使用sizeof操作员 int a 17 size
  • @ControllerAdvice 未触发

    我正在开发 Spring MVC Webflow 应用程序 版本 3 2 并尝试进行异常处理 我可以将自定义异常消息输出到日志文件和 error jsp 我遇到的问题是异常处理程序没有被解雇 我创建了以下类并对其进行了注释 Controll
  • 如何以编程方式从设置中设置默认启动器?

    我想将我的启动器设置为默认启动器 我的代码对很多人来说都可以正常工作 但在乐视设备上却无法正常工作 因为它提供了从默认应用程序设置中设置默认启动器的功能 运行此代码时 它会在默认启动器上移动 但仅在乐视设备中不显示启动器选择器弹出窗口 如何
  • libgdx 中帧缓冲区的结果不明确

    我得到以下奇怪的结果帧缓冲区 http libgdx badlogicgames com nightlies docs api com badlogic gdx graphics glutils FrameBuffer htmllibgdx
  • 二进制到十进制转换 C 代码 - 满足特定测试用例的问题

    C程序将输入的二进制数转换为十进制数 该代码对于输入 10001000 101100 工作正常 输出分别为 136 和 44 但对于以下情况则失败 My code include
  • Cloud Firestore - 动态查询

    我有一个Collection在 Cloud Firestore 中有一定数量的项目 我们称之为Collection X 这个项目数量会不断变化 在任何给定时间 我想听一下此中的项目数Collection并创建几个whereEqualto 调
  • 在 python 中创建接口和可交换实现

    是否可以在 python 中创建一个类接口以及该接口的各种实现 示例 我想创建一个用于 pop3 访问的类 以及所有方法等 如果我使用商业组件 我想将其包装以遵守合同 将来 如果我想使用另一个组件或编写自己的代码 我希望能够交换组件而不是让
  • Jarsigner:找不到证书链

    我已将证书导入到私有证书中 keystore file keytool list Enter keystore password Keystore type JKS Keystore provider SUN Your keystore c
  • 无法安排 azure webjob

    我无法将计划的 WebJob 发布到 Azure 应用服务 我正在使用 Visual Studio 2017 使用此设置一切正常 架构 http schemastore org schemas json webjob publish set
  • 如何设置 Silverlight 4 OOB 应用程序的最小宽度和高度?

    有没有办法为我的 Silverlight 4 浏览器外应用程序设置最小宽度和高度 没有内置设置来控制窗口的最小宽度和高度 因此您需要使用代码来处理它 首先 您的 OOB 应用程序需要具有更高的信任度 然后您需要附加一个处理程序SizeCha
  • 如何在Prolog中编写cmp_list/3函数?

    Write a predicate cmp list 3 the first 2 arguments are 2 lists and the last one is Comparison which means ge lt le or gt
  • 为什么 [CSS 功能] 在 [浏览器] 中不起作用,但在其他浏览器中起作用?

    我尝试使用transition在 Firefox 15 上 它不起作用 即使它可以在其他版本的 Firefox 以及 Chrome 和 Safari 等其他浏览器上运行 当我使用 Firefox 的检查器查看属性时transition被删除