我已设法自动调整每行图库的图像,具体取决于它是水平的(每行一个图像)还是垂直的(每行两个图像)。
现在的问题是我希望图像可扩展(在窗口调整大小时调整大小)但我不知道如何实现它。我该怎么做? (我正在寻找一个javascript / jquery解决方案来避免身高:自动问题......)
这是网络:http://ldlocal.web44.net/test2/gallery.html
可在此处下载:http://ldlocal.web44.net/test2/test.zip
这是我的代码:
var gallery = new Gallery($('#gallery_images_inner'));
function Gallery(selector){
this.add_module = function(type, image){
var container = $('<div />' , {
'class' : 'gallery_container'
}).append(image);
if(type == 'horizontal'){
var h_ar = image.attr('height') / image.attr('width');
container.css({
'width' : selector.width(),
'height' : selector.width()*h_ar
})
}
if(type == 'vertical'){
container.css({
'width' : v_width,
'height' : v_height
})
}
container.appendTo(selector);
container.children('img').fitToBox();
}
var _this = this;
var gutter = 0;
// start vars for counting on vertical images
var v_counter = 0;
var w_pxls = 0;
var h_pxls = 0;
// iterates through images looking for verticals
selector.children('img').each(function(){
if($(this).attr('width') < $(this).attr('height')){
v_counter++;
h_pxls += $(this).attr('height');
w_pxls += $(this).attr('width');
}
})
// calculates average ar for vertical images (anything outside from aspect ratio will be croped)
var h_avrg = Math.floor(h_pxls/v_counter);
var w_avrg = Math.floor(w_pxls/v_counter);
var v_ar = h_avrg/w_avrg;
var v_width = (selector.width())/2;
var v_height = v_width*v_ar;
selector.children('img').each(function(){
if(parseInt($(this).attr('width')) > parseInt($(this).attr('height'))){
_this.add_module('horizontal', $(this));
}else{
_this.add_module('vertical', $(this));
}
})
selector.isotope({
masonry: {
columnWidth: selector.width() / 2
}
});
}
答案 0 :(得分:0)
更新所有新代码:
HTML:
<div id="content">
<img class="fluidimage" src="http://thedoghousediaries.com/comics/uncategorized/2011-04-06-1b32832.png"
/>
</div>
CSS:
body {
text-align:center;
}
img {
float: right;
margin: 0px 10px 10px 10px;
}
#content {
width:70%;
margin: 0px auto;
text-align: left;
}
JS:
$(document).ready(function () {
function imageresize() {
var contentwidth = $('#content').width();
if ((contentwidth) < '300') {
$('.fluidimage').attr('height', '300px');
} else {
$('.fluidimage').attr('height', '600px');
}
}
imageresize(); //Triggers when document first loads
$(window).bind("resize", function () { //Adjusts image when browser resized
imageresize();
});
});
在这篇文章中找到了这个:
http://buildinternet.com/2009/07/quick-tip-resizing-images-based-on-browser-window-size/
答案 1 :(得分:0)
如果您想自动调整图片大小并按比例缩小图片,您只需在max-width
标记上设置css <img>
即可。您可以根据$(window)
或文档中的任何元素使用百分比值自动缩小。以下是如何使用$(window)
按比例缩放窗口百分比的示例:
$(document).ready(function() {
$(window).resize(function() {
var xWidth = $(window).width();
$('.[img class]').each(function() {
$(this).css({maxWidth: xWidth * ([your percentage value of window] / 100)});
});
}).trigger('resize');
});
将[img class]
更改为图像类。
将[your percentage value of window]
更改为您希望缩放图像宽度的窗口元素的百分比。因此,如果您想要90%,请将其更改为90.当用户调整浏览器窗口大小时,它也会自动调整图像大小。