简体   繁体   English

如何在移动设备上触摸左右这张幻灯片?

[英]How can I make this slide left and right with touch on mobile?

https://codepen.io/douglascat90/pen/KeEaxd https://codepen.io/douglascat90/pen/KeEaxd

I want to add javascript/css/whatever is needed so that I can slide left or right on mobile with touch and it will change the slide left or right accordingly. 我想添加javascript / css /所需的内容,以便我可以通过触摸在手机上向左或向右滑动,并且它将相应地向左或向右滑动。 What's the best way to do this? 最好的方法是什么? I am following along with a codepen made by Damian Drygiel here https://codepen.io/drygiel/pen/rtpnE 我正在跟着Damian Drygiel制作的Codepen一起在这里https://codepen.io/drygiel/pen/rtpnE

<div id="slider1" class="csslider infinity inside">
<input type="radio" name="slides" id="slides_1" checked />
<input type="radio" name="slides" id="slides_2" />
<input type="radio" name="slides" id="slides_3" />
<input type="radio" name="slides" id="slides_4" />
<input type="radio" name="slides" id="slides_5" />
<input type="radio" name="slides" id="slides_6" />
<ul>
    <li>
        <p id="solutionsTitle">Title</p>
         Temporibus autem quibusdam et aut Temporibus autem quibusdam et 
aut Temporibus autem quibu beatae vitae dicta sunt explicabo. Nemo enim 
ipsam voluptatem quia voluptas sit aspernatur sdam et aut Temporibus 
autem quibusdam et aut Temporibus autem quibusdam et aut Temporibus 
autem quibusdam et aut.
    </li>
    <li>
        <p id="solutionsTitle">Title1</p>
           Sed ut perspiciatis unde omnis iste natus error sit 
voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque         
ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae 
dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit     
aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos 
qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui 
dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia 
non numquam
    </li>
    <li>
        <p id="solutionsTitle">Title2</p>
            Sed ut perspiciatis unde omnis iste natus error sit 
voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque 
ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae 
dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit 
aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos 
qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui 
dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia 
non numquam ratione voluptatem sequi nesciunt. Neque porro quisquam est, 
qui dolorem ipsum quia dolor sit amet, 
    </li>
    <li>
        <p id="solutionsTitle">Title 3</p>
Ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem 
ipsum quia dolor sit amet, ratione voluptatem sequi nesciunt. Neque 
porro quisquam est, qui dolorem ipsum quia dolor sit amet, ratione 
voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum 
quia dolor sit amet, ratione voluptatem sequi nesciunt. Neque porro 
quisquam est, qui dolorem ipsum quia dolor sit amet, 
    </li>
    <li>
        <p id="solutionsTitle">Title 4</p>
            At vero eos et accusamus et iusto odio dignissimos ducimus 
qui blanditiis praesentium voluptatum deleniti atque corrupti quos 
dolores et quas molestias excepturi sint occaecati cupiditate non 
provident, similique sunt in culpa qui officia deserunt mollitia animi, 
id est laborum et dolorum fuga. Et harum quidem rerum facilis est et 
expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi 
optio cumque nihil impedit quo minus id quod maxime placeat facere 
possimus, omnis voluptas assumenda est, omnis dolor repellendus. 
Temporibus autem quibusdam et aut
    </li>
    <li>
         <p id="solutionsTitle">Title 5</p>
            At vero eos et accusamus et iusto odio dignissimos ducimus 
qui blanditiis praesentium voluptatum deleniti atque corrupti quos 
dolores et quas molestias excepturi sint occaecati cupiditate non 
provident, similique sunt in culpa qui officia deserunt mollitia animi, 
id est laborum et dolorum fuga. Et harum quidem rerum facilis est et 
expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi 
optio cumque nihil impedit quo minus id quod maxime placeat facere 
possimus, omnis voluptas assumenda est, omnis dolor repellendus. 
Temporibus autem quibusdam et aut  Temporibus autem quibusdam et aut  
Temporibus autem quibusdam et aut
    </li>

</ul>
<div class="arrows">
    <label for="slides_1"></label>
    <label for="slides_2"></label>
    <label for="slides_3"></label>
    <label for="slides_4"></label>
    <label for="slides_5"></label>
    <label for="slides_6"></label>
</div>
<div class="navigation">
    <div>
        <label for="slides_1"></label>
        <label for="slides_2"></label>
        <label for="slides_3"></label>
        <label for="slides_4"></label>
        <label for="slides_5"></label>
        <label for="slides_6"></label>
    </div>
</div>

You will need to use JavaScript, adding the touch event listeners, appropriately: 您将需要使用JavaScript,并适当地添加touch事件监听器:

https://developer.mozilla.org/en-US/docs/Web/API/Touch_events https://developer.mozilla.org/en-US/docs/Web/API/Touch_events

  1. Add a touchmove event listener to detect where in relation to the screen the users finger/toe/nose is. 添加一个touchmove事件侦听器,以检测用户手指/脚趾/鼻子在屏幕上的相对位置。 Once you have a round number, use the style endpoint , and update margin-left to equal your distance in pixels. 一旦有了一个整数,就可以使用样式端点 ,然后将margin-left距更新为等于像素的距离。

  2. Add a second event listener, touchend . 添加第二个事件侦听器touchend With this, detect if the user is over a certain margin of the slider (Eg the user has pushed the content by 30%, update the appropriate input to be checked (current -/+ 1). 这样,检测用户是否在滑块的某个空白处(例如,用户已将内容推入30%,更新要检查的适当input (当前-/ + 1)。

A quick start based on the pen you've provided: 根据您提供的笔快速入门:

const slider = document.getElementById('slider1');
const slides = slider.querySelectorAll('input');

slider.addEventListener('touchmove', (e) => {
  // Add step 1 in here
});

slider.addEventListener('touchend', (e) => {
  // Add step 2 in here
});

I've found a function somewhere, you might change some to get the right results. 我在某处找到了一个函数,您可能需要更改一些函数才能获得正确的结果。 But I think you can't do it without javascript. 但是我认为如果没有JavaScript,您将无法做到。

carousel.on('touchstart touchmove touchend', function (e) {
                            touchHandler(e);
});
function touchHandler (event) {
                    var touch
                        , xSwipe
                        , ySwipe;

                    if (typeof event !== 'undefined'){  
                        // for vanilla javascript use event.touches
                        if (typeof event.originalEvent.touches !== 'undefined') {
                            touch = event.originalEvent.touches[0];

                            switch (event.originalEvent.type) {
                                case 'touchstart':
                                case 'mousedown':
                                    _touches[event.originalEvent.type].x = touch.pageX;
                                    _touches[event.originalEvent.type].y = touch.pageY;
                                    break;
                                case 'touchmove':
                                case 'mousemove':
                                    _touches[event.originalEvent.type].x = touch.pageX;
                                    _touches[event.originalEvent.type].y = touch.pageY;
                                    break;
                                case 'touchend':
                                case 'mouseup':
                                    if (!carousel.data('busyAnimating')) {
                                        _touches[event.originalEvent.type] = true;

                                        if (_touches.touchstart.x > -1 && _touches.touchmove.x > -1) {
                                            xSwipe = Math.abs(_touches.touchstart.x - _touches.touchmove.x);
                                            ySwipe = Math.abs(_touches.touchstart.y - _touches.touchmove.y);

                                            if (xSwipe > ySwipe && xSwipe > (getViewport().width * .33)) {
                                                _touches.direction = _touches.touchstart.x < _touches.touchmove.x ? 'left' : 'right';

                                                if (_touches.direction === 'left') {
                                                    moveToSlide('prev');
                                                } else if (_touches.direction === 'right') {
                                                    moveToSlide('next')
                                                }
                                            }
                                        }
                                    }
                                    break;
                            }
                        }
                    }
                }

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

相关问题 如何使div从右向左滑动 - how to make div slide from right to left 如何使这张幻灯片从左到右 - How to make this slide left to right instead 如何使要滑动的图像从左侧0,0位置向右端移动到右侧? - How do i make the image to slide move to the right from left 0,0 position to the end right side? 如何在jQuery Mobile页面中从左向右滑动div - How to slide a div from left to right in a Jquery Mobile page 如何使这些添加的div从右侧滑入? - How can I make these added divs slide in from the right? 如何使滑动效果仅向左滑动33%,而不向左滑动100%? - How can I make the slide effect only slide 33% instead of 100% to the left? 如何制作左右面板,以及如何在它们之间滑动分隔板? - How to make a left and right panel, and be able to slide a divider between them? 如何在bootstrap中从左到右进行滑动切换? - How to make my slide toggle from left to right in bootstrap? 如何使幻灯片仅在第一次单击时向左移动,并拒绝幻灯片在第一次单击时向左移动? - How can I make the slide move left only on the first click and deny it from moving left on the first click? 单击“ jquery”的“右”按钮时,如何使该div动画以向左滑动? - How can I animate this div to slide left when the 'right' button is clicked jquery?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM