请参阅 https://codepen.io/anon/pen/VzmVNe
.wrapper {
width: 200px; height: 200px; padding: 10px;
border: 1px solid #888; overflow: auto;
}
.scale {
width: 400px; height: 300px;
background-color: red;
transform: scale(0.4);
transform-origin: 0 0; transition: all 0.5s ease-in-out;
}
.scale:hover {
transform: scale(4);
}
因为转换后内部div 在视觉上比其包装器小,所以我认为滚动条将不可见。
此外,它在Chrome和IE之间的行为不同。 在IE11中,x-和y-scrollbar都是可见的,但在Chrome中只有y-scrollbar是可见的。
将鼠标悬停在内部div 上按预期工作。
我想要实现的是:在IE和Chrome中都没有可见的滚动条,直到您将鼠标悬停在内部div上。 可能吗? 感谢。
快速解决方法可能是:
.scale {
width: 400px; height: 300px;
background-color: red;
transform: scale(0.4);
transform-origin: 0 0; transition: all 0.5s ease-in-out;
overflow: hidden;
}
.scale:hover {
transform: scale(4);
overflow: scroll;
}
您的初始状态具有垂直滚动条的原因是您的内部 DIV (.scale( 的高度大于外部 DIV (.wrapper(:
.wrapper {
width: 200px;
height: 200px; /* <---- */
padding: 10px;
border: 1px solid #888; overflow: auto;
}
.scale {
width: 400px;
height: 300px; /* <---- */
background-color: red;
transform: scale(0.4);
transform-origin: 0 0; transition: all 0.5s ease-in-out;
}
若要避免初始滚动条,请将内部 DIV 的大小调整为 <= 外部 DIV。
注意 - 我认为当用户尝试抓取和滚动内容时,您将遇到更多困难,因为滚动条不是内部 DIV 的一部分,因此 :hover 效果将脱离,缩放将恢复到原来的缩小大小。