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受到影响?
解决方法
而不是变换:scaleX尝试改变宽度
.wrapper:hover .parent { opacity: 1; width: 100%; }
http://jsfiddle.net/cdmkoao4/3/
更新:
老实说,我没有看到任何理由为什么你会使用scaleX而不是宽度,但这是我想出的唯一解决方案.只是不要将.child与.parent嵌套,使它们成为单独的div,其位置为:absolute.在悬停时,你只使用scaleX .parent,而你只改变.child的不透明度(我仍然使用相同的类,即使它们不再具有父子状态).
http://jsfiddle.net/cdmkoao4/9/
你需要玩转换延迟时间来获得你想要的确切效果.