2013-06-05 246 views
0

我想要做同样的事情,您可以在youassist.org处看到。根据图像大小和窗口大小显示图像的不同方法

看看幻灯片中的图像,并尝试调整浏览器窗口的大小*。你可以看到两个“行为”的图像显示:

  1. 用较大的窗口图像会逐渐放大;
  2. 更小的窗口**图像不会缩小,但会水平滚动。

我试图做到这一点。这是迄今为止我所知道的,但只有当我从一个大窗口调整到一个较小的窗口时,才会起作用,但反之亦然。

这里是一个小提琴:

HTML:

<div class="page-header-2"> 
    <img class="img-header" src="http://youassist.org/assets/home1.jpg" /> 
</div> 

CSS:

.page-header-2{ 
    height:350px; 
    overflow:hidden; 
    width:100%; 
    background:red; 
} 
.img-big{ 
    width: 100%; 
} 
.img-small{ 
    height: 100%; 
    max-width: none; 
} 

脚本:

var imgH = $(".page-header-2 img").height(); 
var divH = $(".page-header-2").height(); 

if(imgH <= divH){ 
    $(".page-header-2 img").addClass("img-small"); 
} else { 
    $(".page-header-2 img").addClass("img-big"); 
} 

$(window).resize(function() { 
    var imgH = $(".page-header-2 img").height(); 
    var divH = $(".page-header-2").height(); 

    if(imgH <= divH){ 
     $(".page-header-2 img").removeClass("img-big"); 
     $(".page-header-2 img").addClass("img-small"); 
    } else { 
     $(".page-header-2 img").removeClass("img-small"); 
     $(".page-header-2 img").addClass("img-big"); 
    } 
}); 

*:逐步调整窗口的大小,并且不超出所在部位重组本身作为响应现场提供移动点。我并不感兴趣!

**:“小窗口”是不正确的,我想,当图像尺寸比窗口尺寸做到这一点

+0

我没有downvoted,但我可以告诉大家,这是可能是因为这个问题在节录一个非常混乱的方式。 –

回答

1

它看起来像一个“新”background-size规则的应用程序。你所做的不是将它放在图像标签中,而是将图像放在容器的背景中,然后使用虚拟元素来设置高宽比。

<div class="img-header"> 
    <div class="aspect"></div> 
</div> 
.aspect { 
    padding-top: 50%; 
} 
.img-header { 
    background: url(url) center center/cover; 
    min-height: 200px; 
} 

因为你很可能希望把里面的内容也一样,你需要绝对定位,否则虚设的元素(.aspect)将打破定位。为此,容器(img-header)需要相对定位,并且内容需要绝对顶部/右侧/底部/左侧为零。我也为此创建了一个小提琴的版本。

JSFiddles:

  1. http://jsfiddle.net/dualed/gkBM5/(基本)
  2. http://jsfiddle.net/dualed/gkBM5/1/(与内容元素)
+0

哇!这似乎恰恰是我需要的,它真的很棒,没有js,它是如何工作的!但我没有得到'aspect' div的有用性。如果我删除它,代码以相同的方式工作。你能解释一下吗? –

+0

我可能误解了你的问题; aspect元素是在增加浏览器窗口大小的同时增加图像大小,同时保持图像的纵横比。如果你不想要这个,只想扩展背景,你可以直接删除它并直接在'.img-header'中放置你的内容。你*不应该做绝对定位。 – dualed

1

一种方法是用简单的CSS出现这种情况。检查了这一点:http://jsfiddle.net/panchroma/XBuGc/

我删除了所有您的JavaScript并添加了一些CSS

.img-header{ 
width:100%; 
height:auto; 
min-width:450px; /* adjust as necessary */ 
} 

希望这有助于!

+0

嗨大卫,这是行不通的,因为图像是在一个div内,并且必须具有相同的div高度。然后我应该指定像素的高度,而不是自动。但具有固定的高度,它显然不起作用。我更新了我的jsfiddle:http://jsfiddle.net/z8RpZ/5/并添加到你的上述问题:http://jsfiddle.net/XBuGc/5/ –

+0

@FredK,我无法确切地描绘出什么你想要做的,但也许使用div上的背景覆盖是你的选择? http://css-tricks.com/perfect-full-page-background-image/ –

相关问题