预约挂号系统之首页广告轮播图

轮播图设计

<div id="main_top_left">
    <div id="list" style="left: -650px;">
        <img src="../img/slideshow_5.jpg" alt="5"/>
        <img src="../img/slideshow_1.jpg" alt="1"/>
        <img src="../img/slideshow_2.jpg" alt="2"/>
        <img src="../img/slideshow_3.jpg" alt="3"/>
        <img src="../img/slideshow_4.jpg" alt="4"/>
        <img src="../img/slideshow_5.jpg" alt="5"/>
        <img src="../img/slideshow_1.jpg" alt="1"/>
    </div>
    <div id="pointsDiv">
        <span index="1" class="on"></span>
        <span index="2"></span>
        <span index="3"></span>
        <span index="4"></span>
        <span index="5"></span>
    </div>
    <a href="javascript:;" id="prev" class="arrow">&lt;</a>
    <a href="javascript:;" id="next" class="arrow">&gt;</a>
</div>

  在轮播图中假设有N张广告图,则父div包含N+2张图,其中在最前面增加最后一张图,在最后面增加第一张图,为的是然轮播图的前后切换感觉像个循环,体验较好,

通过调整父div的left值来确定图片的位置,通过定时器来产生滑动的效果,jQuery代码如下

$(function(){
    var $container = $(‘#main_top_left‘);
    var $list = $(‘#list‘);
    var $points = $(‘#pointsDiv>span‘)
    var $prev = $(‘#prev‘);
    var $next = $(‘#next‘);
    var PAGE_WIDTH = 650;//图片宽度
    var TIME=400;// 翻页总时间
    var ITEM_TIME=20;// 单元移动间隔时间
    var imgCount = $points.length //图片的数量
    var index = 0 //当前圆点的下标
    var moving = false //是否正在翻页中

    // 翻到下一页
    $next.click(function(event) {
        nextPage(true);
    });
    // 翻到上一页
    $prev.click(function(event) {
        nextPage(false);
    });

    //每隔三秒翻页
    var intervalId = setInterval(function() {
        nextPage(true);
    },3000);

    //鼠标放在图片上时停止定时器,离开时重新开始
    $container.hover(function() {
        clearInterval(intervalId);
    }, function() {
        intervalId = setInterval(function () {
          nextPage(true);
        }, 3000);
    });

    //点击圆点来切页
    $points.click(function(event) {
        var targetIndex = $(this).index();
        if(targetIndex != index){
            nextPage(targetIndex);
        }
    });

    /*翻页方法
      设定一个翻页总时间
      设定一个间隔时间
      TIME/ITEM_TIME=400/20 = 20 相当于0.4秒翻了20次,肉眼看起来像翻页,其实是图片不同时间在切换位置(时间都花在了等待上) 

      true : 向右翻一页
      false: 向左翻一页
      数值: 翻到指定页面
    */
    function nextPage(next) {
        //当前正在翻页时不执行
        if(moving) {
            return;
        }
        moving = true;//正在翻页
        //总的偏移量
        var offset = 0;
        if(typeof next === ‘boolean‘) {
            offset = next ? -PAGE_WIDTH : PAGE_WIDTH;
        } else {
            offset = -PAGE_WIDTH * (next - index);
        }

        //单元偏移量
        var itemOffset = offset/(TIME/ITEM_TIME);
        //获取当前的left值
        var currLeft = $list.position().left;
        //计算目标处left值,用于停止定时器
        var targetLeft = currLeft + offset;

        var intervalId = setInterval(function() {
            //每次移动后的位置
            currLeft += itemOffset;
            if(currLeft === targetLeft) {
                //清除定时器
                clearInterval(intervalId);
                //翻页完成
                moving = false;

                //图片是  5 (1 2 3 4 5) 1
                //如果翻到第一张,跳到倒数第二张(实际显示的最后一张图片)
                if(currLeft === 0) {
                    currLeft = -PAGE_WIDTH * imgCount;
                } else if(currLeft === (-PAGE_WIDTH * (imgCount+1))) {
                    //如果翻到最后一张,跳到第二张(实际显示的第一张图片)
                    currLeft = -PAGE_WIDTH;
                }
            }
            $list.css({
                left: currLeft
            });
        }, ITEM_TIME);
        updatePoints(next)
    }

    /*更新圆点位置*/
    function updatePoints(next) {
        var targetIndex = 0;
        if(typeof next === ‘boolean‘) {
            if(next) {
                targetIndex = index + 1;
                if(targetIndex === imgCount) {
                    targetIndex = 0;
                }
            }else {
                targetIndex = index - 1;
                if(targetIndex === -1) {
                    targetIndex = imgCount-1;
                }
            }
        }else {
            targetIndex = next;
        }
        $points[index].className=‘‘;
        $points[targetIndex].className=‘on‘;
        index = targetIndex;
    }

})

效果如下

完成日期 2018/11/27

原文地址:https://www.cnblogs.com/zhanghongcan/p/10046321.html

时间: 2024-10-24 15:27:21

预约挂号系统之首页广告轮播图的相关文章

猫猫学iOS 之广告轮播图,collectionView制作

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 效果图 不多说,好不好先看效果,之前做过一个scrollView的轮播图,但是很局限,很多多余代码,今天猫猫重新做了一个用collectionView的流水布局做的一个,可以拿去做广告轮播,也可以做系统新特性哦,来,看下效果吧. 源码共享:https://github.com/znycat/NYCarouselView 很久很久以前就想做了.总而言之,猫猫代码有

猫猫学iOS 之广告轮播图,collectionView制作(源码)

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 源码共享:https://github.com/znycat/NYCarouselView 效果图 源代码 NYCarouselView.h // // NYCarouselView.h // 广告轮播CollectionView // // Created by IOS on 15/12/26. // Copyright ? 2015年 com.itcat.c

JavaScripts广告轮播图以及定时弹出和定时隐藏广告

轮播图: 函数绑定在body标签内 采用3张图,1.jpg   2.jpg  3.jpg  利用定时任务执行设置图片属性 src  利用for循环可以完成3秒一次 一替换. 定时弹出广告: 由于body标签已经绑定了函数 所以直接用 window 加载事件 函数 广告图片的默认display属性是none 3秒后将广告图片的 display属性 设置成block  就可以形成3秒后显示广告图片 弹出后 需要清理定时 然后在写一个3秒定时 隐藏的函数 ,最后也要清理定时. <script> fu

android中广告轮播图总结

功能点:无限轮播.指示点跟随.点击响应.实现思路: 1.指示点跟随,指示点通过代码动态添加,数量由图片数量决定. 在viewpager的页面改变监听中,设置点的状态选择器enable,当前页时,setEnable(true),非当前页设置为false.由于图片是从网络获取,数量不定,所以此处不能使用switch写死,需要设置变量记录当前和前一个.代码如下: llAddPoint为添加指示点的线性布局 prePosition为前一个位置,初始化时设为0,newPosition为当前位置 int n

jquery 广告轮播图

轮播图 /*轮播图基本功能: * 1图片切换 * 1.1图片在中间显示 * 1.2图片淡入淡出 * 2左右各有一个按钮 * 2.1点击左按钮,图片切换上一张 * 2.2点击右按钮,图片切换下一张 * 2.3鼠标滑过按钮,按钮颜色加深 * 3底部的导航点 * 3.1图片为第几张时,点在那第几张 * 3.2鼠标滑到第几个点,图片切换到第几张 * 4图片自动轮播 * 4.1默认自动下一张 * 4.2鼠标在图片范围时,停止切换 * 4.3鼠标离开图片范围,恢复自动切换 * 5鼠标放在图片范围时,变为小手

pc端广告轮播图

<!DOCTYPE html><html><head> <meta charset="UTF-8" /> <title>轮播</title> <style> body{ margin:0; } .banner { width: 100%; position: relative; overflow:hidden; } .banner ul { width: 100%; height:500px; } .b

android-auto-scroll-view-pager (无限广告轮播图)

github 地址: https://github.com/Trinea/android-auto-scroll-view-pager Gradle: compile ('cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2') { exclude module: 'support-v4' } -keep class cn.trinea.android.** { *; } -keepclas

Android广告轮播图实现

先看效果 第一步,布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_

Android广告轮播图效果实现

效果如下: 首先看下一下布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"