我对javascript还很陌生,如果描述得很糟糕,请耐心等待。。。如果有人能花时间帮我检查这个代码,我相信有一个简单的解决方案:
http://nang-nang.net/masonry/index.html
^我的测试站点
我正在尝试使用Masonry,但卸载的图像会导致元素重叠。(在Masonry附录页面中)提供了一个名为ImagesLoaded的解决方案,我尝试过,但无法使其发挥作用。然后我想,ImagesLoaded可能不起作用,因为导致问题的图像是由另一个javascript生成的。。。
我正在使用一个从你的tumblr博客中提取最新图像的脚本。这是我最新的tumblr图片,在Masonry排列我的元素之前没有加载。所以tumblr元素之后的元素总是出现在它的顶部。(我不能设置图像的高度,因为它总是变化的。)
我想我的问题是;在Masonry可以排列我的元素之前,我如何让tumblr脚本加载我最新的tumblr图像?
嗨,又是我@Rishit Bansal!我终于详细研究了你的问题,得到了经过测试的解决方案!与之前的回答相比,有很多新的编辑,所以我发布了一个新的答案。。。。好吧,这就是你要做的-1.制作一个新的js文件,并将其命名为arrangemasonry.js。这是arrangemasonry.js-中的代码
var container = document.querySelector('#container');
var msnry = new Masonry( container, {
itemSelector: '.item'
});
2.将文件保存在与index.html相同的文件夹中。3.这是index.html编辑的正确代码-
index.html-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Masonry</title>
<style type="text/css">
body {
background-image: url(http://www.nang-nang.net/concrete3.jpg);
background-repeat: repeat;
margin: 0px;
padding: 0px;
}
@font-face {
font-family: 'bebas_neueregular';
src: url('http://www.nang-nang.net/tumblr/bebasneue-webfont.eot');
src: url('http://www.nang-nang.net/tumblr/bebasneue-webfont.eot?#iefix') format('embedded-opentype'), url('http://www.nang-nang.net/tumblr/bebasneue-webfont.woff') format('woff'), url('http://www.nang-nang.net/tumblr/bebasneue-webfont.ttf') format('truetype'), url('http://www.nang-nang.net/tumblr/bebasneue-webfont.svg#bebas_neueregular') format('svg');
font-weight: normal;
font-style: normal;
}
h1 {
font-family: "bebas_neueregular", Arial Narrow, Arial;
font-size: 60px;
font-weight: 100;
line-height: 0px;
margin-bottom: 10px;
color: #666666;
text-transform: uppercase;
}
h2 {
font-family: "bebas_neueregular", Arial;
font-size: 20px;
font-weight: 100;
line-height: 20px;
color: #a80000;
text-transform: uppercase;
}
a:link {
color: #a80000;
border-bottom: 0px;
text-decoration: none;
}
a:active {
color: #a80000;
border-bottom: 0px;
text-decoration: none;
}
a:hover {
color: #a9a9a9;
border-bottom: 0px;
text-decoration: none;
}
a:visited {
color: #a80000;
border-bottom: 0px;
text-decoration: none;
}
.item {
width: 300px;
left: 0px;
margin-right: 10px;
margin-bottom: 10px;
padding: 20px;
background-image: url(http://www.nang-nang.net/portfolio/images/80bg.png);
font-family: Lucida Grande, Arial, Helvetica, sans-serif;
font-size: 10px;
}
</style>
</head>
<body>
<div id="container">
<!-- ///// ONE /////-->
<div class="item">
<h1>Nang-nang</h1>
<font face="Times New Roman, Times, serif" size="5">
..................................................
</font>
<div style="font-size:14px;">nang-nang.net is the portfolio of digital designer Sam Roberts, who also goes by the online moniker <em>bubblejam</em>
</div>
</div>
<!-- ///// TWO /////-->
<div class="item">
<a href="http://bubblejam.tumblr.com/tagged/places-I-have-worked" target="_blank">
<h1>Worked for</h1>
</a>
<font face="Times New Roman, Times, serif" size="5">
..................................................
</font>
<span style="font-family:Lucida Grande, Arial, Helvetica, sans-serif; font-size:13px; font-weight:bold;">
<a href="" target="_blank" style="text-decoration:none;">Ted Baker</a>
<font color="#000000" size="-3">•</font>
<a href="http://bubblejam.tumblr.com/tagged/ASOS" target="_blank" style="text-decoration:none;">ASOS</a>
<font color="#000000" size="-3">•</font>
<a href="http://bubblejam.tumblr.com/tagged/by-the-scruff" target="_blank" style="text-decoration:none;">By The Scruff</a>
<font color="#000000" size="-3">•</font>
<a href="http://bubblejam.tumblr.com/tagged/joythestore" target="_blank" style="text-decoration:none;">JOY</a>
<font color="#000000" size="-3">•</font>
<a href="http://bubblejam.tumblr.com/tagged/vice" target="_blank" style="text-decoration:none;">Vice</a>
<font color="#000000" size="-3">•</font>
<a href="http://bubblejam.tumblr.com/tagged/tv-print-factory" target="_blank" style="text-decoration:none;">TV Print Factory</a>
<font color="#000000" size="-3">•</font>
<a href="http://bubblejam.tumblr.com/tagged/buballs" target="_blank" style="text-decoration:none;">Buballs</a>
<font color="#000000" size="-3">•</font>
<a href="http://bubblejam.tumblr.com/tagged/don%27t-panic" target="_blank">
Don't Panic</a> <font color="#000000" size="-3">•</font>
<a href="http://bubblejam.tumblr.com/tagged/twentysix-london" target="_blank">
Twentysix Digital</a>
</span>
</div>
<!-- ///// THREE /////-->
<div class="item">
<h2>Nang-nang photoblog</h2>
<!--start of tumblr script
taken from http://jiapps.com/free-stuff/tumblr-widget-for-your-website.html
-->
<div class='ji-tumblr-photos' style="max-width:280px; overflow:hidden; border:solid 10px white; text-align:center;">
<a id='ji-tumblr-url--1' href=''>
<img border='0' style='margin-left:-25%;' id='ji-tumblr-photo--1' src='' alt='' />
</a>
</div>
<script type='text/javascript' src='http://bubblejam.tumblr.com/api/read/json?number=1&type=photo'></script>
<script type='text/javascript'>
document.getElementById('ji-tumblr-photo--1').setAttribute('src', tumblr_api_read.posts[0]['photo-url-400']);
document.getElementById('ji-tumblr-url--1').setAttribute('href', 'http://bubblejam.tumblr.com');
</script>
<!-- end of tumblr script-->
<br />A collection of illustration, art, GIFs, cartoons, music, fashion, videos & all round design that I find candid or inspirational. <em>Since Aug 2012.</em>
<br />
<br />
<a href="http://bubblejam.tumblr.com" target="_blank" title="bubblejam on Tumblr">bubblejam on tumblr >></a>
</div>
<!-- ///// FOUR /////-->
<div class="item">
<h2>Instagram</h2>
<!-- SnapWidget -->
<iframe src="http://snapwidget.com/in/?u=bmFuZ25hbmduZXR8aW58MjgwfDF8MXx8bm98MHxub25lfG9uU3RhcnR8bm8=&v=19414" title="Instagram Widget" allowTransparency="true" frameborder="0" scrolling="no" style="border:solid 10px white; overflow:hidden; width:280px; height:280px"></iframe>
<br />
<br />
<a href="http://instagram.com/nangnangnet" target="_blank" title="nangnangnet on Instagram">nangnangnet on Instagram >></a>
</div>
<!-- ///// FIVE /////-->
<div class="item">
<iframe width="300" height="300" src="tweets2.html" frameborder="0" scrolling="no"></iframe>
<br />
<br />
<a href="http://twitter.com/bubblejam" target="_blank" title="bubblejam on twitter">bubblejam on twitter >></a>
</div>
</div>
<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "arrangemasonry.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="masonry.pkgd.min.js"></script>
</body>
</html>
3.这应该可以像我测试过的那样工作。耐心等待页面加载,因为只有在图像完全加载后,图像才会被排列。如果你还有其他问题,请告诉我。
我想这可能对你有用-将tumblr代码保存在index.html文件中的某些脚本标记之间。现在,您可以编写这样的javascript,以便只有在加载了索引页面之后才能加载外部砖石文件-
<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "masonry.pkgd.min.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
我希望这能解决你的问题!如果你不理解我答案的一部分,我可以自由编辑,只需评论。。。。PS:请确保删除您之前添加到masonry.pkgd.min.js 的任何脚本标记