Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.04.2016, 05:57
Интересующийся
Посмотреть профиль Найти все сообщения от stomaks
 
Регистрация: 26.05.2015
Сообщений: 11

Как прокрутить блок по горизонтали до ID внутри него
Мой код:
#menu {
  display: flex;
  overflow: auto;
}
.item {
    min-width: 50%;
}

<div  id="content">
  <div  id="menu">
    <div class='item' id="item0">0</div>
    <div class='item' id="item1">1</div>
    <div class='item' id="item2">2</div>
  </div>
</div>


Нужно при клике на item0 прокрутить menu по горизонтали до item1.
Примечание. item0, item1, item2 ... имеют ширину 50%.
Тут рабочий пример (если можно конечно): jsfiddle.net/ydwvq1xt/

Уже сломал голову, никак не выходит.
Помогите реализовать это с помощью jquery.
Ответить с цитированием
  #2 (permalink)  
Старый 22.04.2016, 09:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

stomaks,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   #menu {
  display: flex;
  overflow: auto;
}
.item {
    min-width: 50%;

}
  #item2{
    background-color: #32CD32;
  }
  #item1{
    background-color: #0000CD;
  }
  #item0{
    background-color: #FFFF00;
  }
 </style>

</head>

<body>


<div  id="content">
  <div  id="menu">
    <div class='item' id="item0" onclick="menu.scrollLeft = this.offsetWidth">click me</div>
    <div class='item' id="item1">1</div>
    <div class='item' id="item2">2</div>
  </div>
</div>


</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 22.04.2016, 21:41
Интересующийся
Посмотреть профиль Найти все сообщения от stomaks
 
Регистрация: 26.05.2015
Сообщений: 11

Спасибо вам за ответ, но беда вот в чем, если вставить
onclick="menu.scrollLeft = this.offsetWidth"

в item1, то он не прокрутит menu к item2, а прокрутить от начала на ширину элемента item1.
Предполагается что количество item может быть разное, и с разной шириной.

Надеюсь я доступно разъясняю, а то как-то запутано вышло)
Ответить с цитированием
  #4 (permalink)  
Старый 23.04.2016, 17:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

stomaks,
вы бы сформулировали что вам нужно более конкретно, а если блок последний то что по клику?
Ответить с цитированием
  #5 (permalink)  
Старый 23.04.2016, 17:20
Интересующийся
Посмотреть профиль Найти все сообщения от stomaks
 
Регистрация: 26.05.2015
Сообщений: 11

Задача такая,

при клике на item0 прокрутить menu к item0, при нажатии не энтер когда item0 в фокусе прокрутить menu к item1
при клике на item1 прокрутить menu к item1, при нажатии не энтер когда item1 в фокусе прокрутить menu к item2
при клике на item2 прокрутить menu к item2, при нажатии не энтер когда item2 в фокусе прокрутить menu к item3
... и тд. до последнего при клике на itemN (последний) прокрутить menu к itemN, при нажатии не энтер когда itemN в фокусе ничего не делать.
Фокус условный, присвоение класса.

С энтером я разберусь сам и с последним item тоже, мне лиш надо помочь с горизонтальным скроллом внутри menu, по очереди от первого до последнего, учитывая что ширина item не фиксированная, и количество item может быть разным.

Спасибо.

Последний раз редактировалось stomaks, 23.04.2016 в 17:44.
Ответить с цитированием
  #6 (permalink)  
Старый 23.04.2016, 17:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

stomaks,
не осилил.
Ответить с цитированием
  #7 (permalink)  
Старый 23.04.2016, 18:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

горизонтальная прокрутка к следующему блоку по клику
stomaks,
возможно вы хотели так ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   #menu {
  display: flex;
  overflow: auto;
}
.item {
    min-width: 50%;

}
 </style>

</head>

<body>


<div  id="content">
  <div  id="menu">

    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
    <div class="item">5</div>
    <div class="item">6</div>
    <div class="item">7</div>
    <div class="item">8</div>
    <div class="item">9</div>
    <div class="item">10</div>
    </div>
</div>
<script>
window.addEventListener('DOMContentLoaded', function() {
  var menu = document.querySelector('#menu'),
  node = menu.querySelectorAll('.item');
  [].reduce.call(node, function(scrollLeft,item) {
          var scroll = scrollLeft + item.offsetWidth;
          item.addEventListener('click', function() {
          menu.scrollLeft =    menu.scrollLeft == scrollLeft ? scroll  : scrollLeft
          });
          return scroll
      },0);
    });
</script>

</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 23.04.2016, 20:19
Интересующийся
Посмотреть профиль Найти все сообщения от stomaks
 
Регистрация: 26.05.2015
Сообщений: 11

Спасибо огромное, работает почти так как я задумал, остальное сам допилю.
Главное вы мне подкинули идею.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить сайт клиента на установленный блок Alexmad Серверные языки и технологии 10 02.04.2015 20:03
Div внутри Div. Как сделать hover только для самого верхнего? Siend Общие вопросы Javascript 2 19.03.2015 22:16
Как вернуть div и все вложенные в него элементы в первоначальное состояние? lucky89 Общие вопросы Javascript 17 26.02.2015 18:41
Как сделать сквозной блок? art1989 Элементы интерфейса 8 18.09.2014 22:51
Как сделать блок кнопкой Vladislav Общие вопросы Javascript 2 23.02.2013 16:47