css - 如何在使用 css 3d 变换向外倾斜时向前倾斜内部元素

标签 css 3d css-transforms

我想获得一个外部元素沿 z 轴向后倾斜的效果,以及一个在正常 2d 视角下从中立起的内部元素。换句话说,给定这个 html

<div id="outer">
  <div id="inner"></div>
</div>

我希望外部元素向后倾斜,其边线接近消失点,而内部元素的边是垂直的。

我如何实现这一目标?使用 CSS

div {
  display: inline-block;
}
#outer {
  padding: 20px;
  background-color: blue;
  -webkit-transform: perspective(400px) rotateX(45deg)
}

#inner {
  height: 150px;
  width: 150px;
  background-color: tomato;
  background-image: url(http://www.w3schools.com/html/smiley.gif);
  background-size: 100%;    
}

我以为我可以做到

#inner {
  -webkit-transform: rotateX(-45deg);
}

但这只会让它倾斜得更多。 Here is a jsbin

最佳答案

需要设置保留3d

#outer {
  padding: 20px;
  background-color: blue;
  -webkit-transform: perspective(400px) rotateX(45deg);
  -webkit-transform-style: preserve-3d;
}

#inner {
  height: 150px;
  width: 150px;
  background-color: tomato;
  background-image: url(http://www.w3schools.com/html/smiley.gif);
  background-size: 100%;   
  -webkit-transform: rotateX(-45deg);
  -webkit-transform-origin: bottom center;
}

jsbin

关于css - 如何在使用 css 3d 变换向外倾斜时向前倾斜内部元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23373737/

相关文章:

html - 使垂直下拉菜单与主菜单宽度相同

css - CSS透视规则和值之间有什么区别吗?

css - 使用可变同级将子 DIV 高度限制为父 DIV 高度

html - CSS 在我的页面上不起作用

javascript - 将 .json 模型导入 Three.js

3d - 将 3D 模型转换为 2D 图像

javascript - Three.js 纹理未加载 - 是什么原因导致的?

css - 为什么在将透视应用于父元素时隐藏背面可见性在 IE10 中不起作用?

javascript - CSS缩放比drawImage缩放更有效吗?

php - 自定义 wordpress 主题 : layout images not displaying