如何在css3中防止受影响的孩子变换规模?

mid*_*ack 4 html css transform css3 css-transforms

HTML

<div class="wrapper">
    <div class="parent">
        <div class="child">
            lorem ipsum
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.wrapper {
    width: 300px;
    height: 300px;
    margin: 30px auto;
    border: 1px dashed #ccc;
    overflow:hidden;
}

.parent {
    width: 1px;
    height: 100px;
    background-color: #f00;
    opacity: 0;
    margin: 0 auto;
    -webkit-transition: all 0.4s ease;
            transition: all 0.4s ease;
}

.wrapper:hover .parent {
    opacity: 1;
    -webkit-transform: scaleX(300);
            transform: scaleX(300);
}

.wrapper . parent .child {
    -webkit-transform: none;
            transform: none;
}
Run Code Online (Sandbox Code Playgroud)

我想在悬停.wrapper div时只缩放.parent元素.但它也会影响两个div(父级和子级),尽管为.child div提供transform:none属性.如何防止.child受到影响?

http://jsfiddle.net/cdmkoao4/1/

Dav*_*ion 5

而不是transform: scaleX尝试改变宽度

.wrapper:hover .parent {
    opacity: 1;
    width: 100%;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/cdmkoao4/3/

更新:

老实说,我没有看到任何理由为什么你会使用scaleX而不是width,但这是我想出的唯一解决方案.根本就没有燕窝.child.parent,使他们有独立的div position: absolute.悬停,你scaleX.parent,而你只改变opacity.child(我仍然使用相同的类,即使他们没有parent-child状态了).

http://jsfiddle.net/cdmkoao4/9/

你需要transition-delay花点时间来获得你想要的确切效果.

  • **位置**,**比例**,**旋转**和**不透明**在现代浏览器中非常便宜,如果可能的话,最好不要使用。如果使用其他任何方法,则可能不会获得每秒60帧的动画。 (2认同)