Masonry проблема с Chrome / загрузка с imagesloaded
Доброго времени суток)
Скрипт masonry позволяет иметь структуру блоков как на сайте pinterest (вдруг кто не знает)) https://github.com/desandro/masonry Но у него есть слабость: в хроме он запускается раньше, чем определяются размеры изображений, следовательно эти размеры не учитываются и красивая страничка превращается в месиво. Эта проблема решается с помощью скрипта imagesLoaded. https://github.com/desandro/imagesloaded Но как? Я не понимаю, т.к. плохо знаю js, можете помочь с этим? Собственно, сейчас ситуация следующая: сайт на joomla, в хедере подключены скрипты: <script src="/templates/rt_chimera/js/imagesloaded.pkgd.min.js"></script> <script src="/templates/rt_chimera/js/masonry.pkgd.min.js"></script> Для запуска masonry, я добавляю к родительскому div класс "js-masonry", как прописано вот тут: http://masonry.desandro.com/#init-with-html Вот тут, вроде как объясняется, как использовать imagesLoaded скрипт, но я не пойму, как? http://masonry.desandro.com/appendix.html Объясните, пожалуйста) что и куда копировать? |
misterdc,
jquery есть? |
misterdc, удалите ваш второй пост он только картину портит
и вам для медитации - не ставить класс js-masonry, можно любой другой ... строки 18 - 25 для теста ... остальное нужно.
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.block_info{
width: 600px;
}
img { width: 25%; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/masonry/3.2.2/masonry.pkgd.js"></script>
<script src="https://imagesloaded.desandro.com/imagesloaded.pkgd.js"></script>
<script>
$(function(){
var s = $(".block_info");
function more() {
$.each(Array(Math.round(Math.random() * 50 + 11)), function(indx, element) {
$('<img/>', {
'src': 'https://tympanus.net/Development/AutomaticImageMontage/images/' + (Math.round(Math.random() * 72 + 1)) + '.jpg'
}).prependTo(s)
});
}
more()
var $container = $('.block_info');
$container.imagesLoaded( function() {
$container.masonry({columnWidth: 150,
itemSelector: 'img'});
});
});
</script>
</head>
<body>
<div class='block_info'></div>
</body>
</html>
|
Благодарю вас,рони) Все работает)
|
время от времени это не срабатывает и все съезжает опять. Почему так?
|
Может есть какой-нибудь альтернативный скрипт?
|
misterdc,
как вариант сделайте загрузку не $(function(){... а без всяких дополнительных плагинов
$(window).load(function(){
var $container = $('.block_info');
$container.masonry({columnWidth: 150,
itemSelector: 'img'});
});})
|
Может я что-то не так делаю?
Я вставляю этот скрипт в виде:
<script>
$(window).load(function(){
var $container = $('.block_info');
$container.masonry({columnWidth: 150,
itemSelector: 'img'});
});})
</script>
вставляю его в саом конце хедера, прямо перед </head> В браузере проверяю - скрипт на месте. Ошибок нет. Но страницы в хроме продолжают загружаться по настроению - кусок как надо, кусок съехал, потом вся как надо, потом вся съехала. Причем это не зависит от того, закэшированы ли изображения |
Вчера это просто совпадение было - присутствие или отсутствие того скрипта тоже ни как не изменяет ситуацию
|
misterdc,
может ссылку в личку |
| Часовой пояс GMT +3, время: 16:52. |