2014-02-07 62 views
4

我有覆盖整个页面(高度和宽度均为100%)的DIV。我试图使用CSS(可能还有JavaScript)创建缩小动画效果,以便DIV更小(使div内的所有内容 - 其子项 - 也更小)到页面上的特定点(页面中间)和特定的widthheight(比方说100 * 100px)。使用CSS缩小div

我开始用下面的代码:

<div id="toBeZoomedOut"> 
    <div>something</div> 
    <div><img src="background.jpg"></div> 
</div> 

#toBeZoomedOut { 
    background-color: black; 
    border: 1px solid #AAAAAA; 
    color: white; 
    width: 300px; 
    height: 300px; 
    margin-left: auto; 
    margin-right: auto; 
    -webkit-transition: 1s ease-in-out; 
    -moz-transition: 1s ease-in-out; 
    transition: 1s ease-in-out; 
} 

#toBeZoomedOut img { 
    height: 250px; 
    width: 250px; 
} 

#toBeZoomedOut:hover { 
    zoom: 0.5; 
} 

这段代码的问题是,它缩小的成分下来(父DIV),并立即缩小里面有什么它然后回到放大组件。

基本上它是一个小车。任何有帮助的修复方法都可以缩小一切吗?如果我可以将所有内容一起缩小到页面上的特定位置以及特定的宽度/高度(例如,将所有内容缩放到左侧:100px,顶部:100px,并且父div应该是:100px * 100px和其他一切都是相对的大小)。

我知道使用JavaScript可能会更容易吗?任何帮助?

最后一个注意事项是,如果您注意到动画并非真正反映缩放动画。虽然这将是一个额外的优点,但实际的缩放动画将非常棒。

感谢提前:)

的jsfiddle链接,使其更容易:http://jsfiddle.net/HU46s/

+0

你试图做[这](http://stackoverflow.com/questions/21300673/how-do-我变焦一个背景图像上-A-DIV-与背景尺寸/ 21300704#21300704)? –

+0

感谢您的回应,但不是真的。我想要做的是当我有一个div(即使它有10个不同大小和位置的不同大小的孩子),我试图放大父div,缩小其内部相对于它现在的新大小没有被放大在第一个div的div。你在那里有一个div,当你离开悬停时,它的背景放大到悬停并放大,这与我的问题不同。我很感激你试图帮助,虽然,谢谢:) – user220755

+0

哦,你需要他们的亲戚:)好吧,谢谢澄清.. –

回答

5

我使用的是通用选择里面的一切目标父容器的css转换应用于它。

我做的下一件事是改变了里面的内容宽度相%便于缩放。

这里是CSS:

#toBeZoomedOut * { 
    -webkit-transition: all 1s ease; 
    -moz-transition: 1s ease; 
    transition: 1s ease; 
} 

最后,小提琴:Demo

+0

谢谢你的答案!还有几个问题(在上面的问题中提出): 1.我们能否将最终结果设为特定的宽度和高度而不是缩放:0.5? 2.我们能否将最终结果(最终缩小的框)放在特定的位置(平滑缩小到页面中的特定位置,例如top:100px,left:100px)? 再次感谢您的回答:) – user220755

+0

当然!这是一个更新的小提琴,http://jsfiddle.net/HU46s/3/。 –

+0

真棒,我也更新它,以确保它缩小到页面上的特定位置。这很酷,我会接受这个答案。谢谢! :) – user220755

1

为了让所有图像和DIV背景的同时放大,你必须使用#伸缩镜头,里面的元素百分比大小和设置一个特定的字体大小...

但是不光滑,如果你想要一个更流畅的结果,我建议你使用jQuery结合一些animation()方法或插件。

小提琴:http://jsfiddle.net/HU46s/1/

代码:的jQuery

#toBeZoomedOut { 
    background-color: black; 
    border: 1px solid #AAAAAA; 
    color: white; 
    width: 300px; 
    height: 300px; 
    margin-left: auto; 
    margin-right: auto; 
    -webkit-transition: all 1s ease-in-out; 
    -moz-transition: all 1s ease-in-out; 
    transition: all 1s ease-in-out; 
} 
#toBeZoomedOut div, #toBeZoomedOut img { 
    width: 90%; 
    font-size: 20px; 
} 
#toBeZoomedOut img { 
    height: 90%; 
    width: 90%; 
} 

#toBeZoomedOut:hover { 
    zoom: 0.5; 
} 

平滑:

小提琴:http://jsfiddle.net/HU46s/5/

代码: jQuery的 - 流畅的解决方案(甚至更少CSS):

$('#toBeZoomedOut').hover(/* change the animation speed as you want :) */ 
    function(){ 
     $(this).animate({ 'zoom': 0.5}, 400); //animation speed 400=0.4s ! 
    }, 
    function(){ 
     $(this).animate({ 'zoom': 1}, 400); //animation speed 400=0.4s ! 
    } 
); 

...你需要这个只有CSS是:

#toBeZoomedOut { 
    background-color: black; 
    border: 1px solid #AAAAAA; 
    color: white; 
    width: 300px; 
    height: 300px; 
    margin-left: auto; 
    margin-right: auto; 
} 

#toBeZoomedOut img { 
    width: 250px; 
} 
+0

感谢您的答案!虽然这可以解决问题的一部分(相对放大),但它仍然不流畅(正如您所提到的)以及它看起来不像缩放效果。你认为你可以提供任何帮助与jQuery实现?再次感谢您的答案:) – user220755

+0

是的,我可以请检查,并可能接受:) –