07.07.2017, 00:37
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Сообщение от рони
|
j0hnik,
вынести кнопки управления в другое место - не проблема, скрипт от этого не изменится.
|
надеюсь твой пример ему поможет, и ты не напрасно тратил время.
|
|
07.07.2017, 00:41
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
j0hnik,
вопрос в другом: можно ли как-то иначе сделать анимацию на классах? может есть способ без window.setTimeout?
|
|
07.07.2017, 00:46
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
а transition не канает?
не про то подумал
Последний раз редактировалось j0hnik, 07.07.2017 в 00:50.
|
|
07.07.2017, 00:50
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от j0hnik
|
а transition не канает?
|
не понимаю о чём ты
|
|
07.07.2017, 01:15
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Рони , я свою работу доделаю сейчас, попробую на классах сделать.
|
|
07.07.2017, 01:29
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
слайдер на js
Сообщение от j0hnik
|
попробую на классах сделать.
|
ок, будем посмотреть!
вспомнил хак, убрал таймер, проверь в опере пропадёт анимация(быстрая смена, вместо плавной) или нет, кликать много раз.
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
* { box-sizing: border-box;margin: 0;padding: 0; }
.slider {
width: 300px;
height: 170px;
overflow: hidden;
position: relative;
}
.slider__arrow {
width: 20px;
height: 20px;
position: absolute;
top: 50%;
background-color: #3294FD;
text-align: center;
line-height: 20px;
color: #fff;
z-index: 9;
cursor: pointer;
}
.slider__left { left: 0; }
.slider__right { right: 0; }
.slider__container {
width: 900px;
height: 170px;
position: absolute;
top: 0;
left: 0;
}
.slider__item {
width: 100px;
height: 170px;
line-height: 170px;
background: pink;
display: block;
float: left;
text-align: center;
}
.slider__item:hover {
background-color: #F7F7F7;
}
.slider__arrow.hide{
display: none;
}
.slider {
margin: 20px auto;
}
.slider__container.animate{
transition: left 1.2s cubic-bezier(.455, .03, .515, .955);
}
.slider__container.left{
left: -100px;
}
</style>
<script>
window.addEventListener("DOMContentLoaded", function() {
var left = document.querySelector(".slider__left"),
right = document.querySelector(".slider__right"),
container = document.querySelector(".slider__container");
right.addEventListener("click", function() {
var last = container.querySelector(".slider__item:last-child");
var first = container.querySelector(".slider__item:first-child");
container.classList.remove("animate");
if (!container.classList.contains("left")) {
container.classList.add("left");
container.insertBefore(last, first);
}
document.documentElement.clientWidth;
container.classList.add("animate");
container.classList.remove("left")
});
left.addEventListener("click", function() {
var first = container.querySelector(".slider__item:first-child");
container.classList.remove("animate");
if (container.classList.contains("left")) {
container.classList.remove("left");
container.appendChild(first)
}
document.documentElement.clientWidth;
container.classList.add("animate");
container.classList.add("left")
})
});
</script>
</head>
<body>
<div class="slider">
<div class="slider__arrow slider__left"><</div>
<div class="slider__arrow slider__right">></div>
<div class="slider__container">
<div class="slider__item">1</div>
<div class="slider__item">2</div>
<div class="slider__item">3</div>
<div class="slider__item">4</div>
<div class="slider__item">5</div>
<div class="slider__item">6</div>
<div class="slider__item">7</div>
<div class="slider__item">8</div>
<div class="slider__item">9</div>
</div>
</div>
</body>
</html>
Последний раз редактировалось рони, 07.07.2017 в 01:44.
|
|
07.07.2017, 01:38
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
все ок!, у тебя тоже опера должна быть, разработчик!
у меня даже мобильный топ, самые проблемные браузеры. ie. и safari, там порой такие чудеса творятся!
|
|
07.07.2017, 01:47
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
j0hnik,
|
|
07.07.2017, 05:26
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
<html>
<head>
<style>
.carousel{
clear: both;
position: relative;
margin: auto;
border: 1px solid grey;
width: 318px;
height: 106px;
overflow: hidden;
}
.row{
clear: both;
left: -33.3%;
position: relative;
width: 2000px;
overflow: hidden;
}
.item{
position: relative;
float: left;
width: 5%;
height: 100px;
outline: 1px solid grey;
margin: 3px;
transition: transform .3s;
}
.knop{
width: 145px;
height: 30px;
margin: auto;
}
.pusk{
margin: 10px;
border: 1px solid grey;
width: 50px;
height: 20px;
text-align: center;
float: left;
}
</style>
</head>
<body>
<div class="knop">
<div class="pusk left">Left</div>
<div class="pusk right">Right</div>
</div>
<div class="carousel">
<div class="row">
<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>
var i = 0;
var row = document.querySelector('.row');
var item = document.querySelectorAll('.item');
var w = item[0].clientWidth + parseFloat(getComputedStyle(item[0]).marginLeft)*2;
document.querySelector('.right').onclick = function(){
i--;
var first = document.querySelector('.item:first-child');
var last = document.querySelector('.item:last-child');
row.appendChild(first);
[].forEach.call(item, function(el){
el.style.cssText = 'right:'+w*i+'px; transform: translateX('+w*i+'px);';
});
};
document.querySelector('.left').onclick = function(){
i++;
var first = document.querySelector('.item:first-child');
var last = document.querySelector('.item:last-child');
row.insertBefore(last, first);
[].forEach.call(item, function(el){
el.style.cssText = 'right:'+w*i+'px; transform: translateX('+w*i+'px);';
});
};
</script>
</body>
</html>
колдовал колдовал через классы, плавно нифига не получается(если быстро кликать то-же самое что у тебя), в итоге забил и сделал как-то так.
Последний раз редактировалось j0hnik, 07.07.2017 в 05:28.
|
|
07.07.2017, 11:16
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
j0hnik,
|
|
|
|