JSFiddle - React, Tailwind, and code Playground
by Qwerty_Wasd
HTML
<div id="main">
<div class="slider">
<div class="slide-list">
<div class="slide-wrap">
<div class="slide-item">
<img width="280" height="187" src="https://dummyimage.com/280x187/c4d494/000000.png" alt="" />
<span class="slide-title">Первый слайд</span>
</div>
<div class="slide-item">
<img width="280" height="187" src="https://dummyimage.com/280x187/94d4b3/000000.png" alt="" />
<span class="slide-title">Ну просто очень длинное название второго слайда</span>
</div>
<div class="slide-item">
<img width="280" height="187" src="https://dummyimage.com/280x187/d494b7/000000.png" alt="" />
<span class="slide-title">Третий слайд</span>
</div>
<div class="slide-item">
<img width="280" height="187" src="https://dummyimage.com/280x187/94aed4/000000.png" alt="" />
<span class="slide-title">Четвертый слайд</span>
</div>
<div class="slide-item">
<img width="280" height="187" src="https://dummyimage.com/280x187/cccccc/000000.png" alt="" />
<span class="slide-title">Пятый слайд</span>
</div>
</div>
<div class="clear"></div>
</div>
<div class="navy prev-slide"></div>
<div class="navy next-slide"></div>
<div class="auto play"></div>
</div>
</div>
CSS
/* = Общие стили HTM */
body {
padding: 0 0 50em 0;
margin: 0;
font: 14px/1.8 Helvetica;
color: #444;
background-color: #dbdbdb;
}
a {text-decoration: none;}
header {
display: block;
position: relative;
margin: 0;
background: #f9f9f9;
}
.back { font:normal 3em 'Agency FB'; color: #0074A3; position:absolute; top: 10px; right: 10%;}
.back:hover {text-decoration: underline;}
h1 {margin: 0 0 0 2em;}
h1 a { display: inline-block; font: normal 3em 'Agency FB'; text-decoration: none; }
.how { color: #990000; }
.to { color: #0074A3; }
.make { color: #006600; }
.demo { font: normal 2em 'Agency FB';}
/* main */
#main {
width: 94%;
padding: 1% 3%;
}
#main h1 {
text-align: center;
font: 2em Helvetica;
margin: 20px 0 10px 0;
padding-bottom: 15px;
border-bottom: 2px solid #444444;
}
/* Задаем сброс обтекания */
.clear {
margin-top: -1px;
height: 1px;
clear:both;
zoom: 1;
}
/* Slider */
.slider {
/* Ширина контейнера */
width: 900px;
/* Внешние тступы сверху и снизу */
margin: 50px auto;
/* Внутренние отступы для ссылок navy */
padding: 0 30px;
/* Позиционирование */
position: relative;
/* Скроем то что выходит за границы */
overflow: hidden;
}
/* Двойной клик по ссылкам вперед/назад вызывает выделение всех элементов слайдера,
поэтому предотвращаем это */
.slider::-moz-selection { background: transparent; color: #fff; text-shadow: none; }
.slider::selection { background: transparent; color: #fff; text-shadow: none; }
.slide-list {
position: relative;
margin: 0;
padding: 0;
}
.slide-wrap {
position: relative;
left: 0px;
top: 0;
/* максимально возможная ширина обертки слайдера */
width: 10000000px;
}
.slide-item {
/* Ширина слайда */
width: 280px;
/* Внутренние отступы */
padding: 10px;
/* Обтекание */
float: left;
}
.slide-title {
/* Шрифт */
font: bold 16px...
JavaScript
jQuery(document).ready(function(){
function htmSlider(){
/* Зададим следующие переменные */
/* обертка слайдера */
var slideWrap = jQuery('.slide-wrap');
/* ссылки на предудыщий иследующий слайд */
var nextLink = jQuery('.next-slide');
var prevLink = jQuery('.prev-slide');
var playLink = jQuery('.auto');
var is_animate = false;
/* ширина слайда с отступами */
var slideWidth = jQuery('.slide-item').outerWidth();
/* смещение слайдера */
var newLeftPos = slideWrap.position().left - slideWidth;
/* Клик по ссылке на следующий слайд */
nextLink.click(function(){
if(!slideWrap.is(':animated')) {
slideWrap.animate({left: newLeftPos}, 500, function(){
slideWrap
.find('.slide-item:first')
.appendTo(slideWrap)
.parent()
.css({'left': 0});
});
}
});
/* Клик по ссылке на предыдующий слайд */
prevLink.click(function(){
if(!slideWrap.is(':animated')) {
slideWrap
.css({'left': newLeftPos})
.find('.slide-item:last')
.prependTo(slideWrap)
.parent()
.animate({left: 0}, 500);
}
});
/* Функция автоматической прокрутки слайдера */
function autoplay(){
if(!is_animate){
is_animate = true;
slideWrap.animate({left: newLeftPos}, 5000, function(){
slideWrap
.find('.slide-item:first')
.appendTo(slideWrap)
.parent()
.css({'left': 0});
is_animate = false;
...