JSFiddle - React, Tailwind, and code Playground
HTML
<!-- Obsah s posuvníkem -->
<div id="obsah">
<img src="http://www.drahak.eu/images/banner/islandsoft.png" alt="Islandsoft banner" />
</div>
CSS
* {
margin: 0;
padding: 0;
}
body {
background: #f0f0f0;
}
#obsah {
margin: 20px auto;
}
.posuvnik {
width: 350px;
background: #fff;
border: 1px solid #dcdcdc;
overflow: auto; /** Některé prohlížeče nepodporují overflow-x a overflow-y */
overflow-x: auto;
overflow-y: hidden;
}
JavaScript
(function() {
// jQuery plug-in
$.fn.posuvnik = function( rychlost ) {
// Funkce
var mouseMove = function(e) {
// Opraví event, aby byl použitelný ve všech prohlížečích stejně
e = $.event.fix(e);
// Zjistí, kde je kurzor
var vlevo = e.pageX-$(this).offset().left < ($(this).width()/2) ? true : false;
// Zjistíme maximální možnou pozici posunu do prava
var maximalniPosun = $(this).get(0).scrollWidth - $(this).get(0).clientWidth;
// Zjistí, na kterou stranu se má posunout
if(vlevo && !$(this).data('jeVlevo') ) {
// Řekneme skriptu, že jsme vlevo
$(this).data('jeVlevo', true);
// Posune se vlevo
$(this).stop().animate({ scrollLeft: 0 }, rychlost);
} else if ( !vlevo && $(this).data('jeVlevo') ) {
// Řekneme skriptu, že jsme vpravo
$(this).data('jeVlevo', false);
// Posunese vpravo
$(this).stop().animate({ scrollLeft: maximalniPosun }, rychlost);
}
}, mouseLeave = function(e) {
// Zastaví posouvání
$(this).stop();
// Zjistíme, kam budeme posouvat při případném návratu kurzoru
$(this).data('jeVlevo', ($(this).data('jeVlevo') ? false : true));
}, mouseEnter = function(e) {
// Zavoláme funkci mousemove, kterou jsme definovali nahoře
$(this).trigger("mousemove");
};
// Pro každý prvek předaný pluginu
return this.each(function() {
$(this)
.addClass('posuvnik')
.data('jeVlevo', true)
.bind({
mousemove: mouseMove,
mouseleave: mouseLeave,
mouseenter: mouseEnter
});
});
};
})( jQuery );
$(function() {
...