简体   繁体   English

创建一个触摸滑块

[英]creating a touch slider

I'm trying to get my slider to work on a touch screen. 我正在尝试让我的滑块在触摸屏上工作。 The user must be able to swipe the images. 用户必须能够滑动图像。 I need it to work on tablets and phones. 我需要它才能在平板电脑和手机上使用。 I tried to use $(".portfolio-overlay").swipe but that didn't work and I don't know if I did something wrong. 我尝试使用$(“。portfolio-overlay”)。swipe,但这没有用,我也不知道我做错了什么。

html html

<div class="slider-wrapper">
<div class="slider">
    <div class="portfolio-overlay">
        <ul class="images">
            <li>
                <img width="704px" class="portfolio-active portfolio-single" src="http://s25.postimg.org/keaisiflb/mini_brown_fairy.jpg">
            </li>
            <li>
                <img width="704px" class="portfolio-inactive portfolio-single" src="http://s25.postimg.org/xwhf4srqn/mini_blue_fairy.jpg">
            </li>
            <li>
                <img width="704px" class="portfolio-inactive portfolio-single" src="http://s25.postimg.org/smcgdi7hr/mini_purple_fairy.jpg">
            </li>
        </ul>
    </div>
</div>
<ul class="triggers">
    <li>
        <img src="images/border-box.png">
    </li>
    <li>
        <img src="images/border-box.png">
    </li>
    <li>
        <img src="images/border-box.png">
    </li>
    <li>
        <img src="images/border-box.png">
    </li>
    <li>
        <img src="images/border-box.png">
    </li>
</ul>

css 的CSS

.slider {
float: left;
height: 465px;
margin-left: auto;
margin-right: auto;
margin-top: 0;
overflow: hidden;
position: absolute;
width: 704px;
}
.images {
position:relative;
top:0px;
left:0px;
height:2660px;
}
.images li {
float:left;
position:relative;
top:0px;
left:0px;
}
.triggers {
left: 31.2%;
position: absolute;
top: 76.3%;
}
.triggers li {
float: left;
list-style: none outside none;
}
.triggers .selected {
background: url("../images/white-box.png") no-repeat scroll 0 3px rgba(0, 0, 0, 0);
}
.swipe-for-more {
left: 24.3%;
position: absolute;
top: 76.3%;
}
.control {
position:absolute;
top: 380px;
color:#fff;
cursor:pointer;
}

jquery jQuery的

    var triggers = $('.triggers li');
var images = $('.images li');
var lastElem = triggers.length - 1;
var slider = $('.slider .images');
var imgWidth = images.width();
var target;

triggers.first().addClass('selected');
slider.css('width', imgWidth * (lastElem + 1) + 'px');

function sliderResponse(target) {
    slider.stop(true, false).animate({
        'left': '-' + imgWidth * target + 'px'
    }, 300);
    triggers.removeClass('selected').eq(target).addClass('selected');
}

triggers.click(function () {
    if (!$(this).hasClass('selected')) {
        target = $(this).index();
        sliderResponse(target);
        resetTiming();
    }
});
$('.next').click(function () {
    target = $('.triggers .selected').index();
    target === lastElem ? target = 0 : target = target + 1;
    sliderResponse(target);
    resetTiming();
});
$('.prev').click(function () {
    target = $('.triggers .selected').index();
    lastElem = triggers.length - 1;
    target === 0 ? target = lastElem : target = target - 1;
    sliderResponse(target);
    resetTiming();
});

function sliderTiming() {
    target = $('.triggers .selected').index();
    target === lastElem ? target = 0 : target = target + 1;
    sliderResponse(target);
}
var timingRun = setInterval(function () {
    sliderTiming();
}, 5000);

function resetTiming() {
    clearInterval(timingRun);
    timingRun = setInterval(function () {
        sliderTiming();
    }, 5000);
}

$(".portfolio-overlay").swipe({

    swipe: function (event, direction, distance, duration, fingerCount) {
        if ($(".portfolio-single").length < 1) return false;
        clearTimeout(timeout);
        directionVAR = direction;
        if (direction == "left") {
            var bannerMove = $(".portfolio-active").index() + 1
            if ($(".portfolio-active").index() == ($(".portfolio-single").length - 1)) {

                bannerMove = 0;
            }
            rotateBanners(bannerMove);
        } else if (direction == "right") {
            rotateBanners(($(".portfolio-active").index() - 1));
        }
    },
    threshold: 0

});

Here is my jsfiddle: JSFiddle 这是我的jsfiddle: JSFiddle

Maybe or maybe not what you need, but I use iScroll for touch swipes. 也许不需要,但是我使用iScroll进行触摸滑动。 It can be setup for vertical or horizontal scrolling, snap to points, etc. It's very flexible and very customizable. 可以将其设置为垂直或水平滚动,对齐到点等。它非常灵活且可自定义。 Easy to setup, too. 易于设置。

http://cubiq.org/iscroll-4 http://cubiq.org/iscroll-4

or 要么

http://iscrolljs.com http://iscrolljs.com

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM