Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.06.2020, 12:22
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

Показать дочерний блок
Подскажите, пожалуйста, как показать дочерний элемент .hidden при условии, что большая часть его родительского элемента .item видна (именно по ширине, высота не имеет значения)? В противном случае дочерний элемент .hidden прятать. Спасибо.

<style>
.container {
  background-color: #f1f1f1;
  border: 2px solid black;
  width: 100%;
  height: calc(100vh - 60px);
  overflow-y: hidden;
  overflow-x: auto;
  white-space: nowrap;
  margin-top: 50px;
}

.item {
  display: inline-block;
  background-color: gray;
  width: 100%;
  height: 100%;
  vertical-align: top;
  margin: 0 5vw;
}

.hidden {
  display: none;
  position: fixed;
  top: 10px;
  left: 10px;
  font-size: 25px;
}
</style>
<div class="container">
  <div class="item"><div class="hidden">Один</div></div>
  <div class="item"><div class="hidden">Два</div></div>
  <div class="item"><div class="hidden">Три</div></div>
  <div class="item"><div class="hidden">Четыре</div></div>
</div>

Последний раз редактировалось LADYX, 01.06.2020 в 12:42.
Ответить с цитированием
  #2 (permalink)  
Старый 01.06.2020, 15:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

добавление класса в зоне видимости scroll
Сообщение от LADYX
как показать дочерний элемент .hidden при условии, что большая часть его родительского элемента .item видна (именно по ширине,
можно так ...
<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
.container {
  background-color: #f1f1f1;
  border: 2px solid black;
  width: 100%;
  height: calc(100vh - 60px);
  overflow-y: hidden;
  overflow-x: auto;
  white-space: nowrap;
  margin-top: 50px;
}

.item {
  display: inline-block;
  background-color: gray;
  width: 100%;
  height: 100%;
  vertical-align: top;
  margin: 0 5vw;
}

.hidden {
  display: none;
  position: fixed;
  top: 10px;
  left: 10px;
  font-size: 25px;
}

.item.vis .hidden {
    display: block;
}

</style>
<script>
document.addEventListener('DOMContentLoaded', ready);
function ready()
{
   const root = document.querySelector('.container');
   const boxs = document.querySelectorAll('.item');
   function addCls() {
        const width = root.scrollWidth / boxs.length;
        const n = Math.floor((root.scrollLeft + width/2)/ width);
        boxs.forEach((item, i) => {
          item.classList.toggle('vis', n == i)
        });
      }
    root.addEventListener('scroll', addCls);
    addCls();
}

</script>
</head>
<body>

<div class="container">
  <div class="item"><div class="hidden">Один</div></div>
  <div class="item"><div class="hidden">Два</div></div>
  <div class="item"><div class="hidden">Три</div></div>
  <div class="item"><div class="hidden">Четыре</div></div>
</div>

</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 01.06.2020, 16:08
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

рони,
как всегда вам огромное спасибо. Супер! Успехов вам! Будем теперь встраивать)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить доступную высоту страницы и показать блок со свободной стороны BZDR Элементы интерфейса 10 01.03.2018 02:04
Как реализовать работу блоков таким образом? marchenkovby Элементы интерфейса 10 18.12.2017 00:28
Скрыть показать блок virtas Элементы интерфейса 4 28.07.2015 12:17
Копирование блоков в блок maximus Events/DOM/Window 1 14.09.2013 19:40
Показать/скрыть блок Lelja_05 jQuery 10 01.07.2013 20:05