在下面的片段中,我有一个旋转 45 度的 div。我们怎样才能在不修改 HTML 的情况下沿 X 轴缩小这个 div ?
html,
body {
height: 100%;
margin: 0;
}
html {
overflow: hidden;
}
body {
display: flex;
}
div {
width: 10rem;
height: 10rem;
margin: auto;
background-image: linear-gradient( #eee, #888 );
border-radius: 2rem;
border-width: 0.05rem;
border-color: #666;
border-style: solid;
transform: rotate( 45deg );
}
<div></div>
使用包装元素实现的示例
html,
body {
height: 100%;
margin: 0;
}
html {
overflow: hidden;
}
body {
display: flex;
}
div {
margin: auto;
transform: scaleX( 0.75 );
}
div > div {
width: 10rem;
height: 10rem;
background-image: linear-gradient( #eee, #888 );
border-radius: 2rem;
border-width: 0.05rem;
border-color: #666;
border-style: solid;
transform: rotate( 45deg );
}
<div>
<div></div>
</div>
我们如何在不向仅包含 1 个 div 的原始示例添加任何标记的情况下实现上述目标?当然,我们可以用 JavaScript 做所有事情,但这里的兴趣特别是如果只有 CSS 就可以做到这一点。也许通过伪元素?
编辑解释为什么这不是如何在 CSS 中应用多个转换的副本?并且简单地将转换放在同一行特定顺序不起作用,请参见下面的代码段:
html,
body {
height: 100%;
margin: 0;
}
html {
overflow: hidden;
}
body {
display: flex;
}
div {
width: 10rem;
height: 10rem;
margin: auto;
background-image: linear-gradient( #eee, #888 );
border-radius: 2rem;
border-width: 0.05rem;
border-color: #666;
border-style: solid;
transform: rotate( 45deg ) scaleX( 0.75 );
}
<div></div>
之前的转换不会“记住”。缩放是从一个角度完成的,就好像 div 在旋转之前仍处于其原始位置一样。