CSS3 转换元素但不转换其后代
我有一个水平菜单,我想将其某些选项卡向左或向右旋转 90°。 问题是变换属性也会旋转后代。 看起来很难恢复原状,有什么办法吗?
PS 我想避免使用图像或 JS,它们可以作为后备。
I have an horizontal menu and I want to rotate 90° left or right some of its tabs.
Problem is that the transform property also rotates descendants.
It looks difficult to put them back in place, is there a solution?
P.S. I want to avoid using images or JS, they are ok as fallbacks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以对后代应用反向旋转。
例如
示例: http://jsfiddle.net/RpcfB/1/
仅供参考,您需要使用
padding
和/或margin
才能使其全部正常工作。编辑
这就是事实!虽然,正如我所提到的,你必须使用 CSS。
例如,要修复第一个,您需要进行以下调整:
向第一个
li
添加一个类<前><代码>#nav_main_gts> li.rotate{ //在这里添加类
-moz变换:旋转(-90度);
-webkit-transform:旋转(-90度);
-o-变换:旋转(-90度);
-ms-变换:旋转(-90度);
过滤器:progid:DXImageTransform.Microsoft.BasicImage(旋转= -1);
变换:旋转(-90度);
}
然后更改第二个规则以定位下一个
ul
而不是li
然后摆弄
margin
以获取全部内容到位。记住,因为第一个li
是旋转的,向下不是向左,所以需要一个负的margin-left
<前><代码>#nav_main_gts> li.rotate ul{ //此处更改为 UL
-moz变换:旋转(90度);
-webkit变换:旋转(90度);
-o-变换:旋转(90度);
-ms-变换:旋转(90度);
过滤器:progid:DXImageTransform.Microsoft.BasicImage(旋转= 1);
变换:旋转(90度);
左边距:-100px; //在这里添加边距
}
继续其他。
更新示例: http://jsfiddle.net/FKCTk/1/
You could apply the reverse rotation on the descendants.
For example
Example: http://jsfiddle.net/RpcfB/1/
Fyi, you will need to play with
padding
and/ormargin
to make it all work.EDIT
That's the truth!! Although, I as mentioned, you have to play with the css.
For example, to fix the first one, you need to make these adjustments:
add a class to the first
li
Then change the second rule to target the next
ul
notli
Then fiddle with the
margin
to get it all in place. Remember, because the firstli
is rotated, down is not left, so a negativemargin-left
is neededcontinue with the others.
Updated example: http://jsfiddle.net/FKCTk/1/