如何仅在父元素中应用变换?
How to apply transform only in the parent element?
我有HTML
<div id="mydiv" style="color: white; height: 1080px; width: 1920px; transform: translate(-27px, -323px) scale(0.972, 0.401);">
<div class="player_controls">
<a class="right carousel-control" href="#" data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>
</div>
</div>
此代码包含
transform: translate(-27px, -323px) scale(0.972, 0.401);
应用于子元素 player_controls,a 标签。
那么可以做一些不影响子元素的事情吗?
我试图从 player_controls
中删除变换
#mydiv .player_controls{transform:''}
Child 元素将始终受到 parent 元素上变换的影响。这不是child继承的东西,因此它不能通过在[=40上使用transform: ' '
或transform: none
来over-ridden =].一种应对方法是对 child 应用反向变换。在这里,由于 scale
不应该影响 child,因此应该应用 parent 比例的倒数。
parent 上的 scaleX 是 0.972,因此 child 上的 scaleX 应该是 1/0.972(倒数),即 1.028。同样,对于 scaleY,它应该是 1/0.401,即 2.493。
#mydiv,#mydiv2 {
height: 200px;
width: 200px;
background: red;
transform: translate(27px, 23px) scale(0.972, 0.401);
}
#mydiv .player_controls {
transform: scale(1.028, 2.493);
transform-origin: left top;
}
<h2>With reverse transform on child</h2>
<div id="mydiv">
<div class="player_controls">
<a class="right carousel-control" href="#" data-slide="next"><span class="glyphicon glyphicon-chevron-right">Some icon</span>Some text</a>
</div>
</div>
<h2>With no reverse transform on child</h2>
<div id="mydiv2">
<div class="player_controls">
<a class="right carousel-control" href="#" data-slide="next"><span class="glyphicon glyphicon-chevron-right">Some icon</span>Some text</a>
</div>
</div>
如果出于某种原因您不能(或不愿意)对 child 元素应用反向转换,那么您必须更改结构并使 child 元素成为兄弟元素.
.container {
position: relative;
}
#mydiv {
position: absolute;
top: 0px;
left: 0px;
height: 200px;
width: 200px;
background: red;
transform: translate(27px, 23px) scale(0.972, 0.401);
transform-origin: 0px 0px;
}
.player_controls {
position: absolute;
top: 23px;
left: 27px;
}
<div class="container">
<div id="mydiv">
</div>
<div class="player_controls">
<a class="right carousel-control" href="#" data-slide="next"><span class="glyphicon glyphicon-chevron-right">Some icon</span>Some text</a>
</div>
</div>
我有HTML
<div id="mydiv" style="color: white; height: 1080px; width: 1920px; transform: translate(-27px, -323px) scale(0.972, 0.401);">
<div class="player_controls">
<a class="right carousel-control" href="#" data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>
</div>
</div>
此代码包含
transform: translate(-27px, -323px) scale(0.972, 0.401);
应用于子元素 player_controls,a 标签。
那么可以做一些不影响子元素的事情吗?
我试图从 player_controls
中删除变换#mydiv .player_controls{transform:''}
Child 元素将始终受到 parent 元素上变换的影响。这不是child继承的东西,因此它不能通过在[=40上使用transform: ' '
或transform: none
来over-ridden =].一种应对方法是对 child 应用反向变换。在这里,由于 scale
不应该影响 child,因此应该应用 parent 比例的倒数。
parent 上的 scaleX 是 0.972,因此 child 上的 scaleX 应该是 1/0.972(倒数),即 1.028。同样,对于 scaleY,它应该是 1/0.401,即 2.493。
#mydiv,#mydiv2 {
height: 200px;
width: 200px;
background: red;
transform: translate(27px, 23px) scale(0.972, 0.401);
}
#mydiv .player_controls {
transform: scale(1.028, 2.493);
transform-origin: left top;
}
<h2>With reverse transform on child</h2>
<div id="mydiv">
<div class="player_controls">
<a class="right carousel-control" href="#" data-slide="next"><span class="glyphicon glyphicon-chevron-right">Some icon</span>Some text</a>
</div>
</div>
<h2>With no reverse transform on child</h2>
<div id="mydiv2">
<div class="player_controls">
<a class="right carousel-control" href="#" data-slide="next"><span class="glyphicon glyphicon-chevron-right">Some icon</span>Some text</a>
</div>
</div>
如果出于某种原因您不能(或不愿意)对 child 元素应用反向转换,那么您必须更改结构并使 child 元素成为兄弟元素.
.container {
position: relative;
}
#mydiv {
position: absolute;
top: 0px;
left: 0px;
height: 200px;
width: 200px;
background: red;
transform: translate(27px, 23px) scale(0.972, 0.401);
transform-origin: 0px 0px;
}
.player_controls {
position: absolute;
top: 23px;
left: 27px;
}
<div class="container">
<div id="mydiv">
</div>
<div class="player_controls">
<a class="right carousel-control" href="#" data-slide="next"><span class="glyphicon glyphicon-chevron-right">Some icon</span>Some text</a>
</div>
</div>