CSS3转换不起作用


122

我正在尝试通过将菜单项旋转10度来对其进行转换。我的CSS在Firefox中可以使用,但是我无法在Chrome和Safari中复制效果。我知道IE不支持此CSS3属性,所以这不是问题。

我使用以下CSS:

li a {
   -webkit-transform:rotate(10deg);
   -moz-transform:rotate(10deg);
   -o-transform:rotate(10deg); 
}

有人可以建议我要去哪里错吗?

谢谢。


2
仅供参考,IE确实支持此CSS3属性,您只需要一个前缀即可:-ms-transform:rotate(10deg);
Joshua Pinter


2
由于尚无人提及,自2016年起,请确保将CSS规则的未前缀版本(例如transform: rotate(10deg);)放在您选择支持的任何前缀版本的下方。
Maximillian Laumeister

Answers:


300

这只是一个有根据的猜测,而没有看到其余的HTML / CSS:

您申请了display: block还是申请display: inline-blockli a?如果没有,请尝试。

否则,请尝试应用CSS3转换规则li


22
我爱你!的display: inline-block帮助。
Bugs Bunny

2
一个解释将是有帮助的:)
scitronboy '19

56

在基于Webkit的浏览器(Safari和Chrome)中,-webkit-transform 内联元素被忽略。。设置display: inline-block;使其工作。为了演示/测试,您可能还想使用负角,transformation-origin以免将文本旋转到可见区域之外。


非常适合我,谢谢!我在<span>&copy </ span>上使用它制作了一个copyleft符号。
伊丽莎白

@Elisabeth这是一个很好的应用程序。请注意<span>&copy;</span>,尽管大多数浏览器都提供两种方式,但实体引用需要以分号终止(如所示)。
phihag 2011年

另一个注意事项:如果您要为交互状态(例如:hover:active)应用转换,则需要将应用于inline-block默认状态下的元素(例如)a { display: inline-block; } a:active { transform: translateY(0.125em); }。仅将其inline-block应用于交互状态似乎无效。至少在Chrome中-在Firefox中可以正常工作。
Paul d'Aoust

1
感谢您指出-webkit-transform对嵌入式项目无效的事实。以前一直被卡在此上。
pbojinov 2014年

@phihag太好了,您为我节省了一些大事!值得一提的是,这可能导致您的元素在动画运行后消失。

21

由于没有人引用相关文档:

CSS转换模块级别1-术语-可转换元素

可变形元素是以下类别之一的元素:

  • 一个元素,其布局由CSS框模型控制,该CSS框模型可以是块级原子内联级元素,或者其display属性可以计算为table-row,table-row-group,table-header-group,table-footer -group,表单元格或表标题
  • SVG名称空间中的一个元素,不受具有转换属性,“ patternTransform”或“ gradientTransform”的CSS盒模型的控制。

在您的情况下,默认情况下为<a>元素inline

更改display属性的值以inline-block将元素呈现为原子的内联级元素,因此,这些元素根据定义变为“可变形的”

li a {
   display: inline-block;
   -webkit-transform: rotate(10deg);
   -moz-transform: rotate(10deg);
   -o-transform: rotate(10deg); 
   transform: rotate(10deg);
}

如上所述,这似乎仅适用于-webkit基于基础的浏览器,因为无论如何它似乎都可以在IE / FF中工作。


0

您是否专门尝试仅旋转链接?因为在LI标签上执行此操作似乎正常。

根据Snook变换,要求将受影响的元素块化。他还提供了一些代码,使您可以使用过滤器在IE上实现此功能,如果您愿意添加它的话(尽管对值似乎有一些限制)。


-4

-webkit-transform 不再需要

毫秒已支持旋转(-ms-transform: rotate(-10deg);

试试这个:

li a {
   ...

    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -sand-transform: rotate(10deg);
    display: block;
    position: fixed;
    }

1
在今天的测试中,我注意到-webkit-transformChrome确实不再需要该功能。但是,它仍然需要在Safari 8
约翰Slegers

-sand-transform的作用是什么?简短的Google搜索无济于事。
皮特2015年

google“ CSS Sandpaper”,它与问题有关,可能会使事情变得更容易。这是一种针对旧版IE实现对标准CSS转换的支持的黑客
Pedro Justo 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.