JavaScript应用例子1----手机滑动屏幕切换图片

   该例子是实现模拟手机左右滑动切换图片。

   实验环境:html文件,1.jpg,...,6.jpg在同一路径下即可。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
  <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
</head>
<body>
<a href="https://www.baidu.com"  class="b" id="13d">
<img src='1.jpg'  style='height:480px;width:768px'/>
</a>
</body>


<script>

 //@Description: 监听触摸的方向

var EventUtil = {
    addHandler: function (element, type, handler) {
        if (element.addEventListener)
            element.addEventListener(type, handler, false);
        else if (element.attachEvent) element.attachEvent("on" + type, handler);
        else element["on" + type] = handler;
    },
    removeHandler: function (element, type, handler) {
        if (element.removeEventListener)
            element.removeEventListener(type, handler, false);
        else if (element.detachEvent) element.detachEvent("on" + type, handler);
        else element["on" + type] = handler;
    },
    /**
     * @param target 要绑定监听的目标元素
     * @param isPreventDefault 是否屏蔽掉触摸滑动的默认行为(例如页面的上下滚动,缩放等)
     * @param upCallback 向上滑动的监听回调(若不关心,可以不传,或传false)
     * @param rightCallback 向右滑动的监听回调(若不关心,可以不传,或传false)
     * @param downCallback 向下滑动的监听回调(若不关心,可以不传,或传false)
     * @param leftCallback 向左滑动的监听回调(若不关心,可以不传,或传false)*/
    listenTouchDirection: function (target, isPreventDefault, upCallback, rightCallback, downCallback, leftCallback) {
        this.addHandler(target, "touchstart", handleTouchEvent);
        this.addHandler(target, "touchend", handleTouchEvent);
        this.addHandler(target, "touchmove", handleTouchEvent);
        var startX;
        var startY;
 
        function handleTouchEvent(event) {
            switch (event.type) {
                case "touchstart":
                    startX = event.touches[0].pageX;
                    startY = event.touches[0].pageY;
                    break;
                case "touchend":
                    var spanX = event.changedTouches[0].pageX - startX;
                    var spanY = event.changedTouches[0].pageY - startY;
                    var img_list=['1.jpg','2.jpg','3.jpg','4.jpg','5.jpg','6.jpg'];
                    function rightCallback(){
                        var myobj=$("#13d img");     //填写位置
                        // var index=img_list.indexOf(myobj[0].src);     //绝对路径
                        var index=img_list.indexOf(myobj[0].getAttribute('src')); 
                        index--;
                        // console.log("you",index);
                        if (index<0){index=0};
                        myobj.attr("src",img_list[index])
                    };
                    function leftCallback(){
                        var myobj=$("#13d img");      //填写位置
                        var index=img_list.indexOf(myobj[0].getAttribute('src'));
                        // console.log("zuo",index);
                        index++;
                        if (index==img_list.length){index=img_list.length-1};
                        myobj.attr("src",img_list[index])
                    };
                    if (Math.abs(spanX) > Math.abs(spanY)) { //认定为水平方向滑动
                        if (spanX > 30) { //向右
                            if (rightCallback) {
                                rightCallback()
                                // console.log("right");
                            }
 
                        } else if (spanX < -30) { //向左
                            if (leftCallback) {
                                leftCallback()
                                // console.log("left");
                            }
                        }
                    } else { //认定为垂直方向滑动
                        if (spanY > 30) { //向下
                            if (downCallback) {
                                downCallback();
                                // console.log("down");
                            }
                        } else if (spanY < -30) {//向上
                            if (upCallback) {
                                upCallback();
                                // console.log("up");
                            }
                        }
                    }
                    break;
                case "touchmove": //阻止默认行为
                    if (isPreventDefault) event.preventDefault();
                    break;
            }
        }
    }
};


//使用的时候很简单,只需要向下面这样调用即可
// 其中下面监听的是整个DOM
// up, right, down, left为四个回调函数,分别处理上下左右的滑动事件
EventUtil.listenTouchDirection($("#13d")[0], true, false,"rightCallback", false,"leftCallback");
</script>
</html>

 

您可以使用HTML和CSS创建一个包含多张图片的容器,并使用JavaScript添加左右滑动功能。 以下是一个示例代码: HTML: ```html <div class="slider-container"> <div class="slider-wrapper"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <img src="image3.jpg" alt="Image 3"> </div> </div> ``` CSS: ```css .slider-container { overflow-x: scroll; white-space: nowrap; } .slider-wrapper { display: inline-block; } ``` JavaScript: ```javascript var sliderWrapper = document.querySelector('.slider-wrapper'); var images = sliderWrapper.querySelectorAll('img'); var imageWidth = images[0].clientWidth; var totalWidth = imageWidth * images.length; sliderWrapper.style.width = totalWidth + 'px'; var sliderContainer = document.querySelector('.slider-container'); var scrollPosition = 0; var scrollInterval; function startScroll() { scrollInterval = setInterval(function() { scrollPosition += 5; if (scrollPosition > totalWidth - sliderContainer.clientWidth) { scrollPosition = 0; } sliderContainer.scrollLeft = scrollPosition; }, 10); } function stopScroll() { clearInterval(scrollInterval); } sliderContainer.addEventListener('mouseover', stopScroll); sliderContainer.addEventListener('mouseout', startScroll); startScroll(); ``` 在这个例子中,我们使用CSS将滑块容器设置为水平滚动,并将滑块包装器设置为内联块显示。然后,我们使用JavaScript计算每个图像的宽度并设置包装器的总宽度,以便所有图像都适合其中。 我们还定义了两个函数,一个用于启动滚动,一个用于停止滚动。我们将这些函数附加到滑块容器的mouseover和mouseout事件上,以便在鼠标悬停时停止滚动,并在鼠标离开时重新启动滚动。 最后,我们使用setInterval函数和scrollLeft属性在每个10毫秒内滚动容器。我们还检查滚动位置是否已到达容器的末尾,并在到达时将其重置为0,以便图像可以无限循环。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

theskylife

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值