2016-05-22 3 views
0

Я назначил класс на 4 элемента div на странице, и все они установлены для отображения = none Теперь я хочу изменить это, чтобы отобразить блок, когда нажимается другой div на странице. Я успешно удалось 1. скрыть все элементы OnLoad 2. использование Javascript, чтобы изменить свойства отображения, чтобы блокировать при нажатии другой DIV элементcss property DISPLAY не дает желаемого результата

проблема заключается в том, что он отображает содержимое полную ширину, как и есть на самом деле но вместо этого он появляется в одном столбце, перекрывающем все это, и в одном прямом столбце я не знаю, почему это происходит, и я буду благодарен за помощь.

Javascript код:

<script> 
    function myFunction(id){ 
    var elements = document.querySelectorAll('.element'); 
    for(var i=0; i<elements.length; i++){ 
    elements[i].style.display = elements[i].id == id ? ' inline' : 'none'; 
    } 
} 
</script> 

Этот код работает отлично, ребята, пожалуйста, помогите мне понять, как отобразить его должным образом, когда кто-то нажимает на приготовление & рецепты, напитки, исследовать и рестораны. Ссылка на страницу: http://theinformant.to/food-drink/

ответ

0

похоже, что сайт использует isotope (http://isotope.metafizzy.co) для раскладки сетки. Переключение свойства display, к сожалению, не вызывает isotope для пересчета позиций отображения элементов.

Поскольку вы скрыли элементы на нагрузке, когда isotope инициализируется, он не может определить размер каждого элемента, как это не в документе потоке за счетом display: none, поэтому, когда показан, он просто получает уложены друг на друг , Вы также заметите, что при изменении размера окна просмотра элементы будут правильно размещены. Это связано с тем, что isotope прослушивает событие изменения размера окна и автоматически вызывает его метод layout().

Таким образом, решение, чтобы это когда вы меняете элементы display: block вы также должны вызвать isotope «s layout() метод (http://isotope.metafizzy.co/methods.html#layout).

+0

Благодарю вас. Я не мог догадаться. Я новичок в программировании, и я действительно предлагаю вам помощь. Я не использую jquery, но я использую javascript. На открывшейся странице вы упоминаете я нашел: // JQuery $ grid.isotope ('макет') // ваниль JS iso.layout() вар $ сетки = $ изотоп (('сетку.'). { кладка: { column Ширина: 50 } }); // изменить размер элемента путем переключения класса gigante $ grid.on ('click', '.grid-item', function() { $ (this) .toggleClass ('gigante'); // trigger layout после изменения размера предмета $ grid.isotope ('layout'); }); Что я должен использовать из этого? – user2296604

+0

Ну, так как вы используете предварительно созданную тему WordPress, кажется, что они уже используют 'jQuery' и использовали его для инициализации' изотопа'. Так что было бы проще, если бы вы просто использовали 'jQuery ('. Isotope'). Isotope ('layout');' который по существу ищет 'div' с классом' .isotope' (тот, который содержит все ваши сообщения в эту страницу) и называет метод 'layout' isotope' layout'. – kevinto

+0

поэтому в теге скрипта я должен написать: jQuery ('изотоп'). Изотоп ('layout'); ?? – user2296604