<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      AlloyTouch之無限循環select插件

      2017-03-03 11:34  【當耐特】  閱讀(1196)  評論(2)    收藏  舉報

      寫在前面

      當滾動的內容很多,比如鬧鐘里設置秒,一共有60項。讓使用者從59ms滾回01ms是一件很痛苦的事情,所以:
      在列表項太多的情況下,我們希望能夠有個無限循環的滾動。00ms和01ms是無縫鏈接起來的。如下圖所示:

      在線演示

      http://alloyteam.github.io/AlloyTouch/select/infinite/

      插件使用

      先引用依賴的JS和CSS文件。

      <link rel="stylesheet" href="select.css" />
      <script src="../../transformjs/transform.js"></script>
      <script src="../../alloy_touch.js"></script>
      <script src="alloy_touch.select.infinite.js"></script>
      
      

      然后:

      var i = 0, options = [];
      for (; i < 60; i++) {
          options.push({ value: i, text: i < 10 ? "0" + i+" ms" : i + " ms" });
      }
      
      var iselect = new AlloyTouch.Select({
          options: options,
          selectedIndex: 11,
          change: function (item, index) {
      
          },
          complete: function (item, index) {
              document.body.insertAdjacentHTML("beforeEnd", "<br/>選了第" + index + "項<br/>value:" + item.value + "<br/>text:" + item.text);
          }
      })
      
      iselect.show();
      
      
      • options是所有項的集合。上面模擬了60項代表對應的ms
      • selectedIndex是初始選中項的索引
      • change是改變的回調
      • complete是點擊完成按鈕的回調

      核心原理

      在看原理之前,我們看下dom里面的屬性變化。

      new AlloyTouch({
          touch: container,
          target: { y: -1 * preSelectedIndex * step },
          property: "y",
          vertical: true,
          step: step,
          change: function (value) {
              correction(value);
          },
          touchStart: function (evt, value) { },
          touchMove: function (evt, value) { },
          touchEnd: function (evt, value) { },
          tap: function (evt, value) { },
          pressMove: function (evt, value) { },
          animationEnd: function (value) { }
      })
      
      function correction(value) {
          value %= scrollerHeight;
          if (Math.abs(value) > scrollerHeight-90) {
              if (value > 0) {
                  value -= scrollerHeight;
              } else {
                  value += scrollerHeight;
              }
          }
          scroll.translateY = value - scrollerHeight;
      }
      

      可以看到初始化AlloyTouch實例的時候已經不存在min和max的參數,因為不需要回彈。
      通過correction去產生跳動周期的效果。(注意:雖然值會跳一個周期,但是dom的渲染表現是看不出跳動的)
      其中target是一個包含y屬性的對象字面量,
      scroll是滾動的對象,被mix過transfrom的相關屬性,所以可以直接通過scroll.translateY 設置其垂直方向上的位移。

      總結

      因為不是旋轉360自動會處理周期,我們自己通過運動對象字面量{y:xx},然后通過correction映射到滾動對象的translateY來控制周期性。
      后續還會給大家帶來:

      • AlloyTouch多項級聯select實戰
      • AlloyTouch實現3D效果select實戰

      Github

      https://github.com/AlloyTeam/AlloyTouch

      你要觸摸的一切都在這里。

      主站蜘蛛池模板: 国产福利精品一区二区| 国产亚洲精品一区二区无| 人妻中文字幕在线视频无码| 国产超碰人人做人人爱| 丁香花成人电影| 欧美三级欧美成人高清| 亚洲色av天天天天天天| 国产精品成人亚洲一区二区| 少妇xxxxx性开放| 国产精品不卡一二三区| 天天躁日日躁狠狠躁中文字幕| 久久精品人人槡人妻人人玩AV| 伊人激情一区二区三区av| 国产jizzjizz视频| 亚洲男人电影天堂无码| 镇康县| 九九热精彩视频在线免费| 午夜精品福利亚洲国产| 97久久超碰亚洲视觉盛宴| 国产乱老熟女乱老熟女视频| free性开放小少妇| 国产欧美亚洲精品第一页在线| 无码h黄肉动漫在线观看| 亚洲一区二区三成人精品| 一区二区中文字幕久久| 精品欧洲av无码一区二区| 国产福利深夜在线播放| 日韩深夜福利视频在线观看| 成人福利一区二区视频在线| 少妇人妻综合久久中文字幕| 亚洲午夜久久久影院伊人| 激情文学一区二区国产区| 国产睡熟迷奷系列网站| 国产精品1区2区3区在线观看| 亚洲区成人综合一区二区| 日韩人妻精品中文字幕专区| 无码人妻丰满熟妇区bbbbxxxx| 亚洲丶国产丶欧美一区二区三区 | 樱花影院电视剧免费| 亚洲精中文字幕二区三区| 成人免费无码大片A毛片抽搐色欲|