CSS3转换规模和容器溢出

时间:2013-07-20 02:06:10

标签: css3 overflow transform scale

我正在尝试使用CSS3 Transform(缩放)为容器创建放大功能,并且所有功能似乎都很好用,但是当缩放图像时,溢出只覆盖图像的一部分,左上角部分溢出。

代码如下:

HTML:

<div class="outer">
    <img id="profile" src="http://flickholdr.com/300/200/" />
</div>
<button class="zoom orig">Original</button>
<button class="zoom x2">x2</button>
<button class="zoom x4">x4</button>

CSS:

.outer          { width: 500px; height: 500px; overflow: auto; text-align: center; background: #eee; }
.outer:before   { content: ''; display: inline-block; vertical-align: middle; height: 100%; }
.outer img      { vertical-align: middle; }

.scale_x2   { -webkit-transform: scale(2); -moz-transform: scale(2); -ms-transform: scale(2); -o-transform: scale(2); transform: scale(2); }
.scale_x4   { -webkit-transform: scale(4); -moz-transform: scale(4); -ms-transform: scale(4); -o-transform: scale(4); transform: scale(4); }

JS:

$(function() {
    $('.zoom').on("click", function() {
        if ($(this).hasClass('orig')) {
            $("#profile").removeClass();
        } else if ($(this).hasClass('x2')) {
            $("#profile").removeClass().addClass('scale_x2');
        } else if ($(this).hasClass('x4')) {
            $("#profile").removeClass().addClass('scale_x4');
        }
    });
});

点击此处的小提琴:http://jsfiddle.net/sbaydakov/RhmxV/2/

有关如何使这项工作的任何想法,以便整个图像可见?

感谢。

2 个答案:

答案 0 :(得分:3)

图像从中心径向向外缩放,从而导致左上角图像像素消失。检查这个工作小提琴http://jsfiddle.net/RhmxV/37/

.scale_x2 {
    margin-left: 150px;
    margin-top: -193px;
    -webkit-transform: scale(2);
    -moz-transform: scale(2);
    -ms-transform: scale(2);
    -o-transform: scale(2);
    transform: scale(2);
}
.scale_x4 {
    margin-left: 450px;
    margin-top: 15px;
    -webkit-transform: scale(4);
    -moz-transform: scale(4);
    -ms-transform: scale(4);
    -o-transform: scale(4);
    transform: scale(4);
}

答案 1 :(得分:1)

如果您想将左上角保持在原位,请使用transform-origin

transform: scale(2);
transform-origin: top left;