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

时间:2014-08-16 11:00:49

标签: html css css3 transform css-transforms

HTML

<div class="wrapper">
    <div class="parent">
        <div class="child">
            lorem ipsum
        </div>
    </div>
</div>

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;
}

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

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

1 个答案:

答案 0 :(得分:5)

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

.wrapper:hover .parent {
    opacity: 1;
    width: 100%;
}

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

<强>更新

老实说,我认为你没有使用scaleX代替width的原因,但这是我提出的唯一解决方案。只是不要将.child.parent嵌套,使它们与position: absolute分开。在悬停时,您只需scaleX .parent,而您只更改opacity的{​​{1}}(我仍然使用相同的课程,即使他们没有{ {1}}状态了。)

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

你需要花费.child时间来获得你想要的确切效果。