Jquery圬工中心布局图,带图像';不适用于负载
我正在从事一个爱好项目,该项目使用Jquery砌体来布置我页面中的项目。我使用中心布局,这样无论我有多少个项目,它们始终位于页面的中心。事实上,它是有效的。问题是当页面第一次加载时,布局不是居中的,而是在页面的左侧。然后它“跳转”到所需的布局 这是我的答案,让你明白我的意思。请注意,突然跳转后布局不“正确”。我想要的是消除跳转,当布局呈现给用户时,使布局居中 我使用带有砌体的ImageLoaded插件。以下是相关代码:Jquery圬工中心布局图,带图像';不适用于负载,jquery,layout,Jquery,Layout,我正在从事一个爱好项目,该项目使用Jquery砌体来布置我页面中的项目。我使用中心布局,这样无论我有多少个项目,它们始终位于页面的中心。事实上,它是有效的。问题是当页面第一次加载时,布局不是居中的,而是在页面的左侧。然后它“跳转”到所需的布局 这是我的答案,让你明白我的意思。请注意,突然跳转后布局不“正确”。我想要的是消除跳转,当布局呈现给用户时,使布局居中 我使用带有砌体的ImageLoaded插件。以下是相关代码: $('#elements').imagesLoaded(function()
$('#elements').imagesLoaded(function(){
$('#elements').masonry({
itemSelector: '.element',
columnWidth: 245,
gutterWidth: 6,
isFitWidth: true,
isAnimated: true
});
});
为了使布局居中,我在#元素中添加了以下规则:
#elements{
margin: 0 auto;
}
如砌体文件所示
那么我的问题是什么?谢谢你的意见
编辑:
多亏了@Bendim,我想出了这个方法。我已经在下面写下了我的答案,但还有一个问题:整个界面需要一段时间才能呈现出来,这并不理想。无论如何,我会努力的。再次感谢,@Bendim.我也有同样的问题。我的解决方案是用砖石元素隐藏
div
,然后在一切都被引导后淡入。没有javascript的用户的回退对我来说很重要
<head>
<title>Example</title>
<style type="text/css">
#elements {
/* hide the elements to avoid jumping */
display: none;
}
</style>
<!-- fallback for people without javascript -->
<noscript>
<style type="text/css">
#elements {
/* overriding the css above */
display: block !important;
}
</style>
</noscript>
</head>
<body>
Your page content…
<!-- load all jquery from google, with fallback to local file -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="/jquery-1.7.2.min.js"><\/script>')</script>
<!-- load jQuery plugin that triggers a callback after all images have been loaded -->
<script src="/jquery.imagesloaded.min.js"></script>
<!-- load masonry script -->
<script src="/jquery.masonry.min.js"></script>
<script type="text/javascript">
var options = {
itemSelector: '.element',
columnWidth: 245,
gutterWidth: 6,
isFitWidth: true,
isAnimated: true
};
var $container = $('#elements');
$container.imagesLoaded(function(){
/* div with content fade in */
$('#elements').fadeIn(1000);
/* if all images are loaded it runs the masonry script */
$container.masonry(options);
});
</script>
</body>
</html>
例子
#元素{
/*隐藏元素以避免跳跃*/
显示:无;
}
#元素{
/*覆盖上面的css*/
显示:块!重要;
}
您的页面内容…
window.jQuery | | document.write(“”)
变量选项={
itemSelector:“.element”,
列宽:245,
排水沟宽度:6,
是的,
我说:是的
};
var$container=$(“#元素”);
$container.imagesLoaded(函数(){
/*内容淡入的div*/
$('元素').fadeIn(1000);
/*如果加载了所有图像,它将运行砌体脚本*/
$container.砌石(可选);
});
@Bendim给了我一个想法,我想尝试一下。但是当我隐藏#elements div时,我的元素在淡入后重叠。因此,我将隐藏.element div,然后淡入其中。以下是我所做的:
.element {
display: none;
}
然后在砌体规范之后:
$('#elements).mansory(
...
);
$('.element').each(function(i){
$(this).fadeIn('fast');
});
它工作得很好,完全没有跳跃。如果您使用固定的高度和宽度渲染图像,它们将不会重叠。我的解决方案是使用php函数
getimagesize($pathToImage)
,如果你有固定的宽度(例如260px),你只需要使用这个方法
<?php
$imageInfo = getimagesize($pathToImage);
$originalHeight = $imageInfo[1];
$originalWidth = $imageInfo[0];
$height = (260/$originalWidth) * $originalHeight;
print "<img src='path/to/image.jpg' widht='260px' height='$height'>";
?>
使用此方法打印的图像不会重叠。稍后将使用js加载的图像根本不需要设置高度,因此您只需要为该图像设置固定高度,该图像将由php而不是js渲染。您是否尝试过为
mainContent
容器指定宽度。@KristerAndersson我在希望它尽可能流畅之前就这样做了。因此,当我调整页面大小时,我希望项目能够对列设置动画,但仍然保持在pag的中心。如果我指定宽度,那么我就不能这样做。你可以用百分比来设置宽度。@KristerAndersson让我试试~谢谢!但当我隐藏元素时,元素重叠。相反,我隐藏每个元素,然后让它们出现。