Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.02.2015, 15:27
Новичок на форуме
Отправить личное сообщение для misterdc Посмотреть профиль Найти все сообщения от misterdc
 
Регистрация: 18.02.2015
Сообщений: 6

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

Объясните, пожалуйста) что и куда копировать?
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2015, 18:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

misterdc,
jquery есть?
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2015, 18:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

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>

Последний раз редактировалось рони, 04.12.2020 в 22:30.
Ответить с цитированием
  #4 (permalink)  
Старый 18.02.2015, 19:14
Новичок на форуме
Отправить личное сообщение для misterdc Посмотреть профиль Найти все сообщения от misterdc
 
Регистрация: 18.02.2015
Сообщений: 6

Благодарю вас,рони) Все работает)
Ответить с цитированием
  #5 (permalink)  
Старый 19.02.2015, 17:42
Новичок на форуме
Отправить личное сообщение для misterdc Посмотреть профиль Найти все сообщения от misterdc
 
Регистрация: 18.02.2015
Сообщений: 6

время от времени это не срабатывает и все съезжает опять. Почему так?

Последний раз редактировалось misterdc, 19.02.2015 в 17:46.
Ответить с цитированием
  #6 (permalink)  
Старый 19.02.2015, 17:47
Новичок на форуме
Отправить личное сообщение для misterdc Посмотреть профиль Найти все сообщения от misterdc
 
Регистрация: 18.02.2015
Сообщений: 6

Может есть какой-нибудь альтернативный скрипт?
Ответить с цитированием
  #7 (permalink)  
Старый 19.02.2015, 18:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

misterdc,
как вариант сделайте загрузку не $(function(){...
а без всяких дополнительных плагинов
$(window).load(function(){ 
var $container = $('.block_info');
$container.masonry({columnWidth: 150,
  itemSelector: 'img'});
});})
Ответить с цитированием
  #8 (permalink)  
Старый 19.02.2015, 19:11
Новичок на форуме
Отправить личное сообщение для misterdc Посмотреть профиль Найти все сообщения от misterdc
 
Регистрация: 18.02.2015
Сообщений: 6

Может я что-то не так делаю?
Я вставляю этот скрипт в виде:
<script>
	$(window).load(function(){ 
var $container = $('.block_info');
$container.masonry({columnWidth: 150,
  itemSelector: 'img'});
});})
</script>

вставляю его в саом конце хедера, прямо перед </head>
В браузере проверяю - скрипт на месте. Ошибок нет. Но страницы в хроме продолжают загружаться по настроению - кусок как надо, кусок съехал, потом вся как надо, потом вся съехала. Причем это не зависит от того, закэшированы ли изображения
Ответить с цитированием
  #9 (permalink)  
Старый 19.02.2015, 19:22
Новичок на форуме
Отправить личное сообщение для misterdc Посмотреть профиль Найти все сообщения от misterdc
 
Регистрация: 18.02.2015
Сообщений: 6

Вчера это просто совпадение было - присутствие или отсутствие того скрипта тоже ни как не изменяет ситуацию
Ответить с цитированием
  #10 (permalink)  
Старый 19.02.2015, 19:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

misterdc,
может ссылку в личку
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jcarousel и проблема с Chrome diakon Opera, Safari и др. 7 24.10.2014 16:26
проблема с флешем в Chrome Zimb Общие вопросы Javascript 2 20.10.2014 13:53
предварительная загрузка страниц в Chrome Kealman Opera, Safari и др. 0 24.07.2013 16:33
Проблема с onended для chrome С.Тарасов Events/DOM/Window 14 21.05.2012 18:55
Проблема с setTimeout при первой загрузке в Chrome slobodchuk jQuery 1 17.02.2012 02:16