CSS3转换的回退
我有一个CSS3转换,可以在悬停状态下调整/定位div中的图像 这可以按预期工作,但我关心的是像IE9-这样的浏览器。是否可以编写此CSS代码,以便这些浏览器具有回退功能 理想情况下,回退应该显示图像,使其适合div,而不是僵化()并且悬停时没有动画 我更喜欢只使用CSS的解决方案,而不是修改标记 完整代码示例: HTML:CSS3转换的回退,css,css-transitions,fallback,Css,Css Transitions,Fallback,我有一个CSS3转换,可以在悬停状态下调整/定位div中的图像 这可以按预期工作,但我关心的是像IE9-这样的浏览器。是否可以编写此CSS代码,以便这些浏览器具有回退功能 理想情况下,回退应该显示图像,使其适合div,而不是僵化()并且悬停时没有动画 我更喜欢只使用CSS的解决方案,而不是修改标记 完整代码示例: HTML: 一般来说,CSS转换(以及大多数CSS)的设计都考虑了渐进增强。在不理解转换的浏览器中,预期的回退非常简单,就是忽略转换属性本身。这允许样式更改仍然发生,只是立即发生,而
一般来说,CSS转换(以及大多数CSS)的设计都考虑了渐进增强。在不理解转换的浏览器中,预期的回退非常简单,就是忽略转换属性本身。这允许样式更改仍然发生,只是立即发生,而不是平滑过渡(如名称所示),并且不需要复杂的变通方法 然而,你要做的是,状态根本不会发生任何变化;您希望将图像固定在未缩放状态。那将需要更多的工作 如果一开始就实现了
@supports
,那么您很容易就能逃脱惩罚
img{
display:block;
position:absolute;
height:auto;
width:100%;
top:0;
left:0;
-webkit-transition-property: width, left, top;
-webkit-transition-duration: .8s;
-webkit-transition-timing-function: ease-out;
transition-property: width, left, top;
transition-duration: .8s;
transition-timing-function: ease-out;
}
@supports (-webkit-transition-property: all) or (transition-property: all) {
div:not(:hover) img{
width:200%;
left:-30%;
top:-60%;
}
}
但当然,并非所有事情都是这样。真正令人遗憾的是,@支持
提出得太晚,而实现仍然没有流行起来。但我离题了
看看caniuse.com上的支持表,基于Gecko和WebKit/Blink的浏览器似乎覆盖得非常好(除了Firefox 3.6和更早版本),这让我松了一口气,因为我想不出任何纯粹的基于CSS的解决方案来迎合这些引擎(除了丑陋的黑客)
对于其他浏览器,我可以看到一些其他解决方法:
- 如果您关心Presto Opera,那么可能值得包含
前缀-o-
- 如果您关心Firefox<16,那么同样可以使用
-moz-
- 对于IE,只需在条件注释中隐藏
规则就足够了,因为支持转换和忽略条件语句的IE的第一个版本恰好是相同的-版本10:div:not(:hover)img
<!--[if !IE]><!--> <style> div:not(:hover) img{ width:200%; left:-30%; top:-60%; } </style> <!--<![endif]-->
注意这里使用的div:not(:悬停)img{ 宽度:200%; 左-30%; 前-60%; }
,类似于上面假设的div:not(:hover)
示例。您需要相应地用@supports
规则交换声明img
@supports
,那么您很容易就能逃脱惩罚
img{
display:block;
position:absolute;
height:auto;
width:100%;
top:0;
left:0;
-webkit-transition-property: width, left, top;
-webkit-transition-duration: .8s;
-webkit-transition-timing-function: ease-out;
transition-property: width, left, top;
transition-duration: .8s;
transition-timing-function: ease-out;
}
@supports (-webkit-transition-property: all) or (transition-property: all) {
div:not(:hover) img{
width:200%;
left:-30%;
top:-60%;
}
}
但当然,并非所有事情都是这样。真正令人遗憾的是,@支持
提出得太晚,而实现仍然没有流行起来。但我离题了
看看caniuse.com上的支持表,基于Gecko和WebKit/Blink的浏览器似乎覆盖得非常好(除了Firefox 3.6和更早版本),这让我松了一口气,因为我想不出任何纯粹的基于CSS的解决方案来迎合这些引擎(除了丑陋的黑客)
对于其他浏览器,我可以看到一些其他解决方法:
- 如果您关心Presto Opera,那么可能值得包含
前缀-o-
- 如果您关心Firefox<16,那么同样可以使用
-moz-
- 对于IE,只需在条件注释中隐藏
规则就足够了,因为支持转换和忽略条件语句的IE的第一个版本恰好是相同的-版本10:div:not(:hover)img
<!--[if !IE]><!--> <style> div:not(:hover) img{ width:200%; left:-30%; top:-60%; } </style> <!--<![endif]-->
注意这里使用的div:not(:悬停)img{ 宽度:200%; 左-30%; 前-60%; }
,类似于上面假设的div:not(:hover)
示例。您需要相应地用@supports
规则交换声明img
我们不要撒谎,我们谈论的唯一浏览器是IE9,所以只需添加:
width: 200%\9;
left: -30%\9;
top: -60%\9;
IE9将使用它。我们只希望2017年不再需要CSS黑客。我们不要撒谎,我们谈论的唯一浏览器是IE9,所以只需添加:
width: 200%\9;
left: -30%\9;
top: -60%\9;
IE9将使用它。我们只希望2017年不再需要CSS破解。@Jason:除了对转换的支持比
@支持更广泛之外。很难相信IE9不支持转换,我从未在IE9上尝试过我的演示,但我记得我在,据报道IE9确实支持过渡。也许我记错了。关于你的问题,你想要的后备结果还不清楚。你的意思是,结果应该首先应用于图像还是悬停?哦,对。。我还没有真正考虑过支持。那没关系。@KingKing这是我想要避免的,我需要图像没有悬停效果,并显示图像,例如width:100%;高度:适用于不支持转换的浏览器。@KingKing我刚刚意识到我对IE9支持的css转换有这种感觉,因为我将它们与I支持的transform
属性进行了比较