zoukankan      html  css  js  c++  java
  • jquery横向纵向鼠标滚轮全屏切换

    html

    <!DOCTYPE html>
    <html lang="zh">
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery鼠标滚动垂直全屏切换代码</title>
    <base target="_blank" />
    <link rel="stylesheet" type="text/css" href="css/css.css">
    </head>
    <body>
    <div id="container">
        <div class="section active" id="section0">
            <div class="intro">
                <h1 class="title">Section One</h1>
            </div>
        </div>
        <div class="section" id="section1">
            <div class="intro">
                <h1 class="title">Section Two</h1>
                
            </div>
        </div>
        <div class="section" id="section2">
            <div class="intro">
                <h1 class="title">Section Three</h1>
                
            </div>
        </div>
        <div class="section" id="section3">
            <div class="intro">
                <h1 class="title">Section Three</h1>
                
            </div>
        </div>
        <div class="section" id="section4">
            <div class="intro">
                <h1 class="title">Section Three</h1>
                
            </div>
        </div>
        <div class="section" id="section5">
            <div class="intro">
                <h1 class="title">Section Three</h1>
                
            </div>
        </div>
        <div class="section" id="section6">
            <div class="intro">
                <h1 class="title">Section Three</h1>
                
            </div>
        </div>
        <div class="section" id="section7">
            <div class="intro">
                <h1 class="title">Section Three</h1>
                
            </div>
        </div>
        <div class="section" id="section8">
            <div class="intro">
                <h1 class="title">Section Three</h1>
                
            </div>
        </div>
        <div class="section" id="section9">
            <div class="intro">
                <h1 class="title">Section Three</h1>
                
            </div>
        </div>
    </div>
    
    <script src="http://down.hovertree.com/jquery/jquery-2.2.3.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="js/switchPage.js"></script> 
    <script type="text/javascript">
    $(function(){
    $("#container").switchPage({
    'loop' : true,
    'keyboard' : true,
    'direction' : 'vertical'
    });
    });
    
    </script>
    
    </body>
    </html>

    css

    h1, body, html {
    padding: 0;
    margin: 0;
    }
    
    html, body {
    height: 100%;
    overflow: hidden;
    }
    
    h1 {
    font-size: 2em;
    font-weight: normal;
    }
    
    #container, .section {
    height: 100%;
    position: relative;
    }
    
    #section0, #section1, #section2, #section3 {
    background-color: #000;
    background-size: cover;
    background-position: 50% 50%;
    }
    
    #section0 {
    background-color: #024BCE;
    color: #fff;
    text-shadow: 1px 1px 1px #333;
    }
    
    #section1 {
    color: #fff;
    text-shadow: 1px 1px 1px #333;
    background-color: #31B81D;
    }
    
    #section2 {
    background-color: #01B5F0;
    color: #fff;
    text-shadow: 1px 1px 1px #666;
    }
    
    #section3 {
    color: #008283;
    background-color: #5D0FF1;
    text-shadow: 1px 1px 1px #fff;
    }
    
    #section4 {
    color: #fff;
    text-shadow: 1px 1px 1px #333;
    background-color: #31B81D;
    }
    
    #section5 {
    background-color: #01B5F0;
    color: #fff;
    text-shadow: 1px 1px 1px #666;
    }
    
    #section6 {
    color: #008283;
    background-color: #5D0FF1;
    text-shadow: 1px 1px 1px #fff;
    }
    #section7 {
    color: #fff;
    text-shadow: 1px 1px 1px #333;
    background-color: #31B81D;
    }
    
    #section8 {
    background-color: #01B5F0;
    color: #fff;
    text-shadow: 1px 1px 1px #666;
    }
    
    #section9 {
    color: #008283;
    background-color: #5D0FF1;
    text-shadow: 1px 1px 1px #fff;
    }
    .intro {
    position: absolute;
    top: 50%;
    width: 100%;
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
    text-align: center;
    }
    /*右侧导航*/
    #pages {
    position: fixed;
    right: 10px;
    top: 50%;
    list-style: none;
    }
    
    #pages li {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #fff;
    margin: 0 0 10px 5px;
    }
    
    #pages li.active {
    width: 14px;
    height: 14px;
    border: 2px solid #FFFE00;
    background: none;
    margin-left: 0;
    }
    
    #section0 .title {
    -webkit-transform: translateX(-100%);/*内容旋转*/
    transform: translateX(-100%);
    -webkit-animation: sectitle0 1s ease-in-out 100ms forwards;
    animation: sectitle0 1s ease-in-out 100ms forwards; /*滑入页面*/
    }
    /*为支持上述滑入特效写的*/
    @-webkit-keyframes 
    sectitle0 { 0% {
    -webkit-transform: translateX(-100%);
    transform: translateX(-100%);
    }
    100% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
    }
    }
    @keyframes 
    sectitle0 { 0% {
    -webkit-transform: translateX(-100%);
    transform: translateX(-100%);
    }
    100% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
    }
    }

    js

    (function($) {
      var defaults = {
        'container': '#container', //容器
        'sections': '.section', //子容器
        'easing': 'ease', //特效方式,ease-in,ease-out,linear
        'duration': 1000, //每次动画执行的时间
        'pagination': true, //是否显示分页
        'loop': false, //是否循环
        'keyboard': true, //是否支持键盘
        'direction': 'vertical', //滑动的方向 horizontal,vertical,
        'onpageSwitch': function(pagenum) {}
      };
      var win = $(window);
      var iIndex = 0; //当前section的索引
      var arrElement = [];
      var canScroll = true;
      var container;
      var sections;
      var opts;
      var flag=false;
    
      var SP = $.fn.switchPage = function(options) {
        opts = $.extend({}, defaults, options || {});
        container = $(opts.container);
        sections = container.find(opts.sections);
        sections.each(function() {
          arrElement.push($(this));
        });
        return this.each(function() {
          if (opts.direction == 'horizontal') initLayout();
          if (opts.pagination) initPagination();
        })
    
      }
      //重置鼠标滚轮事件
      $(document).on("mousewheel DOMMouseScroll", MouseWheelHandler);
      function MouseWheelHandler(e) {
        e.preventDefault();
        var value = e.originalEvent.wheelDelta || -e.originalEvent.detail;
        var delta = Math.max(-1, Math.min(1, value));
        if (canScroll) {
          if (delta < 0) {
            SP.moveSectionDown();
          } else {
            SP.moveSectionUp();
          }
        }
        return false;
      }
    
      //向上一张移
      SP.moveSectionUp = function() {
        if (iIndex) {
          iIndex--;
        } else if (opts.loop) {
          iIndex = arrElement.length - 1;
        }
        scrollPage(arrElement[iIndex]);
      }
    
      //向下一张移
      SP.moveSectionDown = function() {
        if (iIndex < (arrElement.length - 1)) {
          iIndex++
        } else if (opts.loop) {
          iIndex = 0;
        }
        scrollPage(arrElement[iIndex]);
      }
      //当设置横向移动时初始化横向页面
      function initLayout() {
        var width = (sections.length * 100) + '%',
          cellwidth = (100 / sections.length).toFixed(2) + '%';
        // container.width(width).addClass('left');
        container.width(width);
        sections.width(cellwidth).addClass('left');
      }
    
      //导航条初始化 hovertree.com
      function initPagination() {
        var length = sections.length;
        var pageHtml = '<ul id="pages"><li class="active" id="dot_0"></li>'
        for (var i = 1; i < length; i++) pageHtml += '<li id="dot_'+i+'"></li>';
        pageHtml += '</ul>';
        $("body").append(pageHtml);
        flag=true;
        if(flag==true){
        $("li").click(function(){
            var liId = $(this).attr("id");
            var arr = liId.split('_');
            iIndex=arr[1];
            scrollPage(arrElement[iIndex]);
        });  
      }
    
      }
      /*跳转到dot对应页面*/
      function clickDot(){
          
      }
      
        //移动页面
      function scrollPage(element) {
        var dest = element.position();
        if (dest == void 0) return;
        initEffects(dest, element);
      }
    
      function isSupportCss(property) {
        var body = $('body')[0];
        for (var i = 0; i < property.length; i++) {
          if (property[i] in body.style) {
            return true;
          }
        }
        return false;
      }
    
    
      //移动页面的核心函数
      function initEffects(dest, element) {
        canScroll = false;
        var translate = "";
        if (opts.direction == 'horizontal') {
          translate = '-' + dest.left + 'px, 0px, 0px';
        } else {
          translate = '0px, -' + dest.top + 'px, 0px';
        }
        container.css({
          'transform': "translate3d(" + translate + ")",
          'transition': "all " + opts.duration + "ms " + opts.easing
        });
        container.on("webkitTransitionEnd msTransitionend mozTransitionend transitionend", function() {
          canScroll = true;
        });
        element.addClass("active").siblings().removeClass('active');
        if (opts.pagination) {
          paginationHandler();
        }
      }
    
      //每次页面移动时,修改导航栏 何问起
      function paginationHandler() {
        var pages = $('#pages li');
        pages.eq(iIndex).addClass('active').siblings().removeClass('active');
      }
    
      var resizeId;
      win.resize(function() {
        clearTimeout(resizeId);
        resizeId = setTimeout(function(){
          rebuild();
        }, 500);
      });
    
      function rebuild() {
        var currentHeight = win.height();
        var currentWidth = win.width();
        var element = arrElement[iIndex];
        if(opts.direction == "horizontal") {
          var offsetLeft = element.offset().left;
          if (Math.abs(offsetLeft) > (currentWidth/2) && iIndex < (arrElement.length - 1)){
            iIndex++
          }
        }else {
          var offsetTop = element.offset().top;
          if (Math.abs(offsetTop) > (currentHeight/2) && iIndex < (arrElement.length - 1)){
            iIndex++
          }
        }
        var currentElement = arrElement[iIndex],
        dest = currentElement.position();
        initEffects(dest, currentElement);
        if(opts.pagination) paginationHandler();
      }
      
    })(jQuery);
  • 相关阅读:
    chart控件多个ChartArea
    winform chart画折线,波形图,多条数据
    C# Chart 折线图 多条数据展示
    task一个任务结束后执行另一个操作
    C#多线程同步 读写锁ReaderWriterLock的用法
    C# 多线程文件读写整理总结
    vue解决跨域问题
    接前端页面
    使用vue+zrender绘制体温单 三测单(2)
    使用vue+zrender绘制体温单 三测单(1)
  • 原文地址:https://www.cnblogs.com/joesmile/p/6474886.html
Copyright © 2011-2022 走看看