- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用关键帧和变换的简单动画,特别是 rotateX
和 rotateZ
。动画效果如我所料(至少在 Chrome 中,还没有尝试过其他动画)。
现在我已经可以正常工作了,如果动画元素超出其父元素,我想隐藏它们。我将普通的 overflow: hidden;
放在父级上。
然后 rotateX
就停止渲染了。 rotateZ
按预期继续。奇怪的是,看起来该元素在检查时继续变换,但子元素仅遵循 rotateZ
。
@keyframes stir {
0% {
transform: rotateX(0deg) rotateZ(-25deg);
}
25% {
transform: rotateX(3deg) rotateZ(0deg);
}
50% {
transform: rotateX(0deg) rotateZ(25deg);
}
75% {
transform: rotateX(-3deg) rotateZ(0deg);
}
100% {
transform: rotateX(0deg) rotateZ(-25deg);
}
}
* {
box-sizing: border-box;
}
.mixing {
position: relative;
width: 80px;
padding-top: 50px;
margin: 50px auto;
}
.mixing .rim,
.mixing .rimb {
width: 80px;
height: 20px;
border: 2px solid #000;
border-radius: 40px / 10px;
background: #fff;
position: relative;
z-index: 5;
}
.mixing .rimb {
z-index: 3;
}
.mixing .sides {
position: relative;
background: #fff;
height: 8px;
width: 100%;
margin: -18px 0 0;
border-left: 2px solid #000;
border-right: 2px solid #000;
top: 10px;
z-index: 4;
}
.mixing .bowl {
width: 70px;
height: 40px;
margin: -16px auto 0;
border: 2px solid #000;
background: #fff;
border-radius: 0 0 30px 30px / 0 0 40px 40px;
}
.mixing .spoon-box {
width: 120px;
height: 70px;
border-radius: 0 0 60px 60px / 0 0 20px 20px;
position: absolute;
top: -2px;
left: -20px;
z-index: 10;
perspective: 25px;
transform-style: preserve-3d;
}
.mixing .spoon {
position: absolute;
left: 50%;
margin-left: -9px;
bottom: -50px;
transform-origin: center bottom;
animation: stir 2s infinite;
animation-timing-function: linear;
}
.mixing .spoon .stick {
height: 55px;
width: 8px;
border: 2px solid #000;
border-radius: 3px 3px 0 0;
border-width: 2px 2px 0px;
background: #fff;
margin: 8px 5px -4px;
position: relative;
z-index: 2;
}
.mixing .spoon .cup {
position: relative;
height: 22px;
width: 18px;
margin-bottom: 40px;
border: 2px solid #000;
background: #fff;
border-radius: 9px / 11px;
}
.broken .spoon-box {
overflow: hidden;
}
<div class="mixing">
<div class="rim"></div>
<div class="sides"></div>
<div class="rimb"></div>
<div class="bowl"></div>
<div class="spoon-box">
<div class="spoon">
<div class="stick"></div>
<div class="cup"></div>
</div>
</div>
</div>
<div class="mixing broken">
<div class="rim"></div>
<div class="sides"></div>
<div class="rimb"></div>
<div class="bowl"></div>
<div class="spoon-box">
<div class="spoon">
<div class="stick"></div>
<div class="cup"></div>
</div>
</div>
</div>
最佳答案
您是否考虑过使用 clip-path css 规则而不是 overflow: hidden
?在对最新的 Firefox 和 Chrome 进行简短测试后,您的 rotateZ
未应用的问题似乎已解决。作为一个不错的奖励,您可以更具体地裁剪,因此要匹配碗的形状,您可以使用 clip-path: ellipse(...)
,如下图所示:
但是,请注意,IE and Edge 不支持 clip-path
.
修改后的例子可以在这个forked codepen中找到或者在下面的代码片段中:
@keyframes stir {
0% {
transform: rotateX(0deg) rotateZ(-25deg);
}
25% {
transform: rotateX(3deg) rotateZ(0deg);
}
50% {
transform: rotateX(0deg) rotateZ(25deg);
}
75% {
transform: rotateX(-3deg) rotateZ(0deg);
}
100% {
transform: rotateX(0deg) rotateZ(-25deg);
}
}
* {
box-sizing: border-box;
}
.mixing {
position: relative;
width: 80px;
padding-top: 50px;
margin: 50px auto;
}
.mixing .rim,
.mixing .rimb {
width: 80px;
height: 20px;
border: 2px solid #000;
border-radius: 40px / 10px;
background: #fff;
position: relative;
z-index: 5;
}
.mixing .rimb {
z-index: 3;
}
.mixing .sides {
position: relative;
background: #fff;
height: 8px;
width: 100%;
margin: -18px 0 0;
border-left: 2px solid #000;
border-right: 2px solid #000;
top: 10px;
z-index: 4;
}
.mixing .bowl {
width: 70px;
height: 40px;
margin: -16px auto 0;
border: 2px solid #000;
background: #fff;
border-radius: 0 0 30px 30px / 0 0 40px 40px;
}
.mixing .spoon-box {
width: 120px;
height: 70px;
border-radius: 0 0 60px 60px / 0 0 20px 20px;
position: absolute;
top: -2px;
left: -20px;
z-index: 10;
perspective: 25px;
transform-style: preserve-3d;
}
.mixing .spoon {
position: absolute;
left: 50%;
margin-left: -9px;
bottom: -50px;
transform-origin: center bottom;
animation: stir 2s infinite;
animation-timing-function: linear;
}
.mixing .spoon .stick {
height: 55px;
width: 8px;
border: 2px solid #000;
border-radius: 3px 3px 0 0;
border-width: 2px 2px 0px;
background: #fff;
margin: 8px 5px -4px;
position: relative;
z-index: 2;
}
.mixing .spoon .cup {
position: relative;
height: 22px;
width: 18px;
margin-bottom: 40px;
border: 2px solid #000;
background: #fff;
border-radius: 9px / 11px;
}
.broken .spoon-box {
transform-style: preserve-3d;
clip-path: ellipse(80px 49px at 60px 22px);
}
<div class="mixing">
<div class="rim"></div>
<div class="sides"></div>
<div class="rimb"></div>
<div class="bowl"></div>
<div class="spoon-box">
<div class="spoon">
<div class="stick"></div>
<div class="cup"></div>
</div>
</div>
</div>
<div class="mixing broken">
<div class="rim"></div>
<div class="sides"></div>
<div class="rimb"></div>
<div class="bowl"></div>
<div class="spoon-box">
<div class="spoon">
<div class="stick"></div>
<div class="cup"></div>
</div>
</div>
</div>
关于css - RotateX 停止并 overflow hidden ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54853899/
好的。我已经做了很多研究,但我什么也想不出来。在可能过度思考这个问题之后,我希望得到你的帮助。 我希望能够旋转 围绕它的中心,所以它的背面变得可见。我能够用 rotateY 做到这一点——没有任何问题
我有以下选项卡。 它的代码是。 .nav-tabs li a { color: $color_1; -webkit-transform: perspective(100px) rota
喜欢这个演示: http://codepen.io/anon/pen/sorAB 当它们是 rotateX 时,如何去除 block 之间的白线。 也许没有 translate/margin/top
Reproduction online 为什么这条白线是可见的?它实际上不是白色的,只是显示了网站的背景,恰好是白色的。 当使用背景图像而不是旋转 div 的颜色时,这不会发生。 使用它来应用旋转:
我对 CSS 过渡有疑问。我的网站上有两个按钮 ( here ),当鼠标按住它时,它们应该被推回到底部,就像在 Windows 8 开始菜单上一样。相反,发生的事情是它只是改变了我的元素的大小,就像
好的,我已经解决了这个问题。 http://plnkr.co/edit/CUkOlK 一开始我以为 zindex 搞砸了,但在浏览并查看它们之后它们看起来都很好,在 firebug 中将输入 zind
Chrome 版本 39.0.2148.0 我正在尝试在每侧使用 2 张不同的图片来实现翻转图像效果。最初的想法源于http://themestrong.com/demo/argo_wp/ (我也看到
我正在尝试制作一个面板,当鼠标悬停在上面时,它会稍微倾斜。我认为我应该使用 JQuery,因为我比高级 CSS 动画更了解它。我已经尝试了很多东西,但都行不通。下面的代码是我目前拥有的。如果您告诉我我
我在 Chrome 浏览器上使用 rotateX 时遇到一些问题。 有时我会看到很好的过渡,但有时主要是在 Chrome 上我会看到奇怪的动画发生。 Div 不会旋转,但会从顶部开始降低高度,直到它达
我有一个使用关键帧和变换的简单动画,特别是 rotateX 和 rotateZ。动画效果如我所料(至少在 Chrome 中,还没有尝试过其他动画)。 现在我已经可以正常工作了,如果动画元素超出其父元素
我正在尝试创建一个旋转椭圆( with border-radius: 100%;)并且我想border 总是相同的宽度。但是,元素旋转时边框消失: 无论 rotateX,边框都可以具有相同的宽度吗?感
我正在尝试在带有 rotateX 的元素内的子项上应用 z-index。如果我删除 rotateX 它工作正常,但实际上我无法删除它。 .message { position: relative;
我正在尝试使用 CSS 执行翻转效果。我怎样才能得到 - 变换:透视(1200px) rotateX(0deg) 来自 变换:透视(1200px) rotateX(90deg) 使用 jQuery 的
我正在尝试使用 CSS 属性“transform”旋转图像。这是我的代码: http://jsfiddle.net/Ucph5/4/ 这是进行旋转的部分(使用 jquery): $('#rotatio
#learn-more-button { position: relative; top: 69%; margin: 0 auto; padding-top: 18px; widt
我似乎无法让 div 元素围绕其底部边缘旋转。默认情况下,rotateX(angle) 使元素围绕其中心旋转。 这是一个代码笔:Trying to flip div over bottom edge
我正在学习创建立方体旋转效果。在悬停时,如果我将 rotateX 替换为 rotateY,立方体将围绕 Y 轴中心旋转。但是,当存在 rotateX 时,立方体不会围绕以 X 轴为中心的旋转。如何正确
我正在尝试 css3 中的新功能,同时我发现 rotateY() 和 rotateX() 没有给出预期的结果。我在页面中只有一个 div 这是CSS #element{ position:
我正在尝试 css3 中的新功能,同时我发现 rotateY() 和 rotateX() 没有给出预期的结果。我在页面中只有一个 div 这是CSS #element{ position:
我在 Raphael.js 的文档中搜索到 transform 功能,[似乎] 只支持 2D 转换。即平移、旋转、缩放。 现在的问题是:是否有任何方法可以应用(和动画)具有 3D 转换的元素。例如旋转
我是一名优秀的程序员,十分优秀!