За последние 24 часа нас посетили 17020 программистов и 1652 робота. Сейчас ищут 977 программистов ...

Конфликт с вложенными div и js

Тема в разделе "HTML и CSS", создана пользователем altblog, 27 фев 2019.

Метки:
  1. altblog

    altblog Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте! Извините за вопрос, но я в CSS полный ноль. Есть страница с div и js. Задача js — скрывать изображение при клике. У меня никак не получается сделать так, чтобы они размещались горизонтально, вплотную друг к другу и чтобы при этом работал скрипт. Если убрать class="hide-on-click", то они будут горизонтально, но с интервалом между друг другом и js конечно же перестает работать. Если первый класс hide переименовать в hide-on-click, то при клике будут исчезать все картинки в нем, а нужно по отдельности.

    HTML:
    1. <div class="hide">
    2.   <div class="hide-on-click"><img width="350px" src="../image.png"></div>
    3.   <div class="hide-on-click"><img width="350px" src="../image.png"></div>
    4.   <div class="hide-on-click"><img width="350px" src="../image.png"></div>
    5.   <div class="hide-on-click"><img width="350px" src="../image.png"></div>
    6. </div>
    7.  
    Код (Javascript):
    1. <script>
    2. (function () {
    3.     var elements = document.getElementsByClassName('hide-on-click');
    4.     for (var i = 0; i < elements.length; i++) {
    5.         elements[i].addEventListener('click', function () {
    6.             this.style.display = 'none';
    7.         });
    8.     }
    9. })();
    10. </script>
     
  2. altblog

    altblog Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    4
    Симпатии:
    0
    Решение:
    Код (CSS):
    1. <style>
    2. .hide-on-click {
    3.   background:lightgreen;
    4.   width:350px;
    5.   height:50px;
    6.   display: inline-block;
    7.   margin:0px;
    8. }
    9. </style>
     
  3. Ivan Vanko

    Ivan Vanko Новичок

    С нами с:
    3 мар 2019
    Сообщения:
    20
    Симпатии:
    2
    @altblog Попробуйте так, под себя подправьте только.
    Код (CSS):
    1. img {
    2.     width: 350px;
    3.     height: 50px;
    4. }
    5.  
    6. .hide-on-click {
    7.   background: lightgreen;
    8.   width: 350px;
    9.   height: 50px;
    10.   display: block;
    11.   float: left;
    12.   margin: 0px;
    13. }
    HTML:
    1. <div class="hide">
    2.   <div class="hide-on-click"><img src="..."></div>
    3.   <div class="hide-on-click"><img src="..."></div>
    4.   <div class="hide-on-click"><img src="..."></div>
    5.   <div class="hide-on-click"><img src="..."></div>
    6.   <div style="clear: both;"></div>
    7. </div>
    --- Добавлено ---
    @altblog Поскольку у вас изначально свойство display: inline-block было, то ваши промежутки между блоками div - это что-то вроде пробелов между словами в тексте. Вы можете просто добавить в стили следующее:
    .hide {
    font-size: 1px;
    }
    и убедиться в этом. Но не уверен, что так вообще кто-то делает.