html - 带有透视css3的旋转div

标签 html css

我有一个 45 度旋转的 div。我正在尝试通过使用 css3 透视图将其悬停在其 y 轴周围。它不像我想要的那样悬停,悬停时它变成一个正方形。我想在动画结束时保持旋转 45 度。

这是我的代码:

<div class="perspective">
   <a href="#" class="box">
      <div class="innerbox">
            text
      </div>    
   </a>
</div>

.perspective
{
    position:relative;
    width:100px;
    height:100px;
    margin:200px 0px 0px 200px;
    -moz-perspective: 300px;
    -webkit-perspective: 300px;
    -o-perspective: 300px;
    -ms-perspective: 300px;
    perspective: 300px;
}

.box
{
    width:80px;
    height:80px;    
    position:absolute;
    top:0;
    bottom:0;
    left:0;
    right:0;
    margin:auto;
    border: 5px solid #000;
    -moz-transform: rotate(45deg);
    -webkit-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    transform: rotate(45deg);
    -webkit-transition: all 800ms ease;
    -moz-transition: all 800ms ease;
    -ms-transition: all 800ms ease;
    -o-transition: all 800ms ease;
    transition: all 800ms ease;
}

.innerbox
{
    margin:30px 0px 0px 20px;
    -moz-transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg);
    -o-transform: rotate(-45deg);
    -ms-transform: rotate(-45deg);
    transform: rotate(-45deg);  
}

.box:hover
{
    -moz-transform: rotateY(180deg);
    -webkit-transform: rotateY(180deg);
    -o-transform: rotateY(180deg);
    -ms-transform: rotateY(180deg);
    transform: rotateY(180deg);
    -webkit-transition: all 800ms ease;
    -moz-transition: all 800ms ease;
    -ms-transition: all 800ms ease;
    -o-transition: all 800ms ease;
    transition: all 800ms ease; 
}

我做了一个例子http://jsfiddle.net/o6mo0rjq/

最佳答案

您最初已将 .box 绕 Z 轴旋转 45 度。当您指定一个新的 transform 时,这个初始旋转将被覆盖 - 因此对于 :hover 上的新旋转,您还应该指定原始旋转。您的 block 声明将变为:

.box:hover {
    -moz-transform: rotateY(180deg) rotateZ(45deg);
    -webkit-transform: rotateY(180deg) rotateZ(45deg);
    -o-transform: rotateY(180deg) rotateZ(45deg);
    -ms-transform: rotateY(180deg) rotateZ(45deg);
    transform: rotateY(180deg) rotateZ(45deg);
    -webkit-transition: all 800ms ease;
    -moz-transition: all 800ms ease;
    -ms-transition: all 800ms ease;
    -o-transition: all 800ms ease;
    transition: all 800ms ease;
}

这是一个 JSFiddle展示。 (注意:transform 中的顺序很重要!因为这决定了将旋转应用到元素的顺序,这可能会根据您应用的转换给出不同的结果。)

希望对您有所帮助!如果您有任何问题,请告诉我。

关于html - 带有透视css3的旋转div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30238457/

相关文章:

html - 将背景图像与本地文件 html/css 一起使用的正确方法

html - 具有堆叠上下文的 Z-index

html - IE 8 CSS 选择器

css - 如何通过 CSS 设置更改 Blazor 中 NavLink 的文本颜色

css - @font-face 字体不工作

javascript - Twitter Bootstrap 工具提示和 Angular.js 绑定(bind)

javascript - 在javascript中为乘法时间表添加起点和终点

javascript - 将阿拉伯语或希伯来语文本与拉丁语混合时出现括号问题

jquery - 使用 jQuery 移动一个 div

javascript - 是否有接近位置 : Relative-Fixed? 的任何东西