Javascript.RU

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

Слайдер с помощью ползунка
Как сделать, что бы при перемещении ползунка в начало, блок с картинками, двигался тоже в начало?

http://plnkr.co/edit/5yhc1pLma3KGWAGdmP99?p=preview

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

DivMan,
css .i { float: left; } проще считать длину всех блоков.
сдвигать надо пропорционально максимальный скролл к длине ползунка.
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <style type="text/css">
  .main{width: 300px;  overflow: hidden;border: 1px solid;}

.slider {
  background: #f6e6b4;
  background: radial-gradient(ellipse at center,  #f6e6b4 0%,#ed9017 100%);
  width: 310px;
  height: 15px;
  margin: 0;
  border-radius: 3px;
  position:relative;
  margin-bottom: 20px;
}


  .thumb{
    position: relative;
    width: 15px;
    height: 30px;
    top: -7.5px;
    background: #258dc8;
    background: linear-gradient(to bottom,  #258dc8 0%,#258dc8 100%);
    border-radius: 4px;
    cursor: pointer;
}

.img{
  width: 800px;
  height: 50px;
  position: relative;
}

.i {
  float: left;
  vertical-align: top;
  width: 50px;
  height: 50px;

}

.blue{
  background: blue;
}

.green{
  background: green;
}

.yellow{
  background: yellow;
}

.red{
  background: red;
}


  </style>
</head>

<body>



  <div id="slider" class="slider">
    <div class="thumb"></div>
  </div>
  <div class="price">0.00</div>
   <div class="main">
  <div class="img">
    <div class="i blue"></div>
    <div class="i green"></div>
    <div class="i yellow"></div>
    <div class="i red"></div>
    <div class="i blue"></div>
    <div class="i green"></div>
    <div class="i yellow"></div>
    <div class="i red"></div>
    <div class="i blue"></div>
    <div class="i green"></div>
    <div class="i yellow"></div>
  </div>
</div>

<script>
var thumb = slider.querySelector(".thumb");
var img = document.querySelector(".img");
var main = document.querySelector(".main");
var max = slider.clientWidth - thumb.offsetWidth;
var i = img.querySelectorAll(".i");
var maxWidth = [].reduce.call(i, function(width, elem) {
    return width += elem.scrollWidth
}, 0);
var maxScroll = maxWidth - main.clientWidth;
var price = document.querySelector(".price");
var maxPrice = 182;
thumb.onmousedown = function(e) {
    var xShift = e.clientX - thumb.offsetLeft;
    document.onmousemove = function(e) {
        var current = e.clientX - xShift;
        if (current < 0) current = 0;
        else if (current > max) current = max;
        thumb.style.left = current + "px";
        img.style.left = -current / max * maxScroll + "px";
        price.innerHTML = (current / max * maxPrice).toFixed(2);
    };
    document.onmouseup = function(e) {
        document.onmousemove = document.onmouseup = ""
    }
};
</script>
</body>

</html>

Последний раз редактировалось рони, 12.11.2016 в 22:28.
Ответить с цитированием
  #3 (permalink)  
Старый 12.11.2016, 21:12
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 12.11.2016, 22:01
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

А как сделать, что бы счётчик тоже уменьшался?
Ответить с цитированием
  #5 (permalink)  
Старый 12.11.2016, 22:01
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

http://plnkr.co/edit/GQvaad4wjoT8mPbJtdBq?p=preview
Ответить с цитированием
  #6 (permalink)  
Старый 12.11.2016, 22:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от DivMan
А как сделать, что бы счётчик тоже уменьшался?
точно также, алгоритм показан в посте №2 строка 107
Ответить с цитированием
  #7 (permalink)  
Старый 12.11.2016, 22:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

DivMan,
смотрите пост №2 снова, в игре всё теже: пропорция размера ползунка к размеру сдвига "индикатора" умноженная на нужную величину
Ответить с цитированием
  #8 (permalink)  
Старый 12.11.2016, 22:40
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Ещё раз спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новостной слайдер на bxslider malsyst Библиотеки/Тулкиты/Фреймворки 3 02.09.2013 10:32
Связать ползунковый слайдер и аккордеон... All_ex74 Элементы интерфейса 1 31.05.2013 13:20
Слайдер с помощью CSS и jQuery - 1000 р. stixia007 jQuery 21 27.03.2013 22:44
Нужно отредактировать слайдер glavkot Работа 0 22.08.2011 14:14
Слайдер - расчет координат прокрутки розовый слоник Общие вопросы Javascript 2 14.04.2011 18:33