一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

ionic實現(xiàn)滑動的三種方式

 八塊腹肌的壞蛋 2016-11-15

  在移動端受屏幕大小所限,展示內(nèi)容很多的時候,就要使部分區(qū)域進行滑動。本文展示項目中所有到的幾種方式,大家可以看自己的需求選擇合適的滑動方式。實現(xiàn)滑動的基本原理,有兩個容器A、B,假如A在外層,B在內(nèi)層;外層的A寬度或高度固定,內(nèi)層容器B寬度或者高度大于A即可實現(xiàn)滾動。

實現(xiàn)方式

1). ion-scroll

利用ionic自帶的滑動指令 

1
2
3
4
5
6
7
8
9
<ion-view view-title="Dashboard">
  <ion-content class="padding" has-bouncing="false">
    <ion-scroll has-bouncing="false" style="width:100px;border:solid 1px red;" direction="x">
      <div style="width:200px;">
        ion-scroll實現(xiàn)滑動,用ionic自帶的滑動組件實現(xiàn)滑動,ion-scroll其他屬性可參考官網(wǎng)文檔
      </div>
    </ion-scroll>
  </ion-content>
</ion-view>

2). css的overflow

1
2
3
4
5
6
7
8
9
10
11
<ion-view view-title="Dashboard">
  <ion-content class="padding" has-bouncing="false" overflow-scroll="true">
    <div style="width:160px;height:300px;border:solid 1px red;overflow: auto;padding:20px;">
      <div style="width:400px;height:500px;border:solid 1px blueviolet">
        使用css的overflow屬性atuo或者scroll實現(xiàn)滾動,使用css的overflow屬性atuo或者scroll實現(xiàn)滾動
        使用css的overflow屬性atuo或者scroll實現(xiàn)滾動,使用css的overflow屬性atuo或者scroll實現(xiàn)滾動
        使用css的overflow屬性atuo或者scroll實現(xiàn)滾動,使用css的overflow屬性atuo或者scroll實現(xiàn)滾動
      </div>
    </div>
  </ion-content>
</ion-view>

 ·overflow:auto 如果內(nèi)容被修剪,則瀏覽器會顯示滾動條以便查看其余的內(nèi)容。
 ·overflow:scroll內(nèi)容會被修剪,但是瀏覽器會顯示滾動條以便查看其余的內(nèi)容。
注:使用這種方式,ion-content需要添加overflow-scroll="true"指令,表示使用系統(tǒng)自己的滾動來代替ionic的scroll,ionic是實現(xiàn)了自己的一套滾動方式的。 

 監(jiān)聽touch事件

1
2
3
4
5
<div style="width:100%;border:solid 1px;height:60px;overflow: hidden;white-space:nowrap;padding:10px 20px;" id="dash_scroll_container">
  <div ng-repeat="d in datas" style="margin-right:20px;border:solid 1px #FFC900;height:100%;width:100px;display:inline-block;text-align:center;line-height:40px;">
    {i6mua8u}
  </div>
</div>

對應(yīng)的js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
angular.module('starter.controllers', [])
.controller('DashCtrl', function($scope) {
  $scope.datas=[1,2,3,4,5,6,7,8,9,10];
  var startX=0,startY=0;
  var $domScroll=$("#dash_scroll_container");
  $domScroll.on("touchstart",function(e){
    startX=e.originalEvent.changedTouches[0].pageX;
    startY=e.originalEvent.changedTouches[0].pageY;
    console.log("start:("+startX+","+startY+")"+"--"+$(this).scrollTop());
  });
  $domScroll.on("touchmove",function(e){
    var x = e.originalEvent.changedTouches[0].pageX-startX;
    var y = e.originalEvent.changedTouches[0].pageY-startY;
    if ( Math.abs(x) > Math.abs(y)) {//左右滑動
     scrollLeft($(this),x); 
    }else if( Math.abs(y) > Math.abs(x)){//上下滑動
      scrollTop($(this),y); 
    }
    function scrollLeft(obj,x){
      var currentScroll = obj.scrollLeft();
      console.log(parseInt(currentScroll)-x);
      obj.scrollLeft(parseInt(currentScroll)-x);//滑動的距離
      e.preventDefault();
      e.stopPropagation();
    }
    function scrollTop(obj,y){
      var currentScroll = obj.scrollTop();
      console.log(parseInt(currentScroll)-y);
      obj.scrollTop(parseInt(currentScroll)-y);//滑動的距離
      e.preventDefault();
      e.stopPropagation();
    }
  });
})

通過監(jiān)聽手指的touchstart、touchmove事件,獲得滑動的距離,調(diào)用外部容器div的滾動條滾動到對應(yīng)距離。
·$(selector).scrollLeft(position):設(shè)置元素的水平滾動位置
·$(selector).scrollTop(position):設(shè)置元素的垂直滾動位置

最后,再使用angularjs的指令,講滾動的監(jiān)聽封裝為一個指令,方便以后滑動時候使用。

在directive.js中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
angular.module('starter.directives', [])
.directive('myScroll',function(){
  function link($scope, element, attrs) {
    var $domScroll=$(element[0]);
    var startX=0,startY=0;
    $domScroll.on("touchstart",function(e){
      startX=e.originalEvent.changedTouches[0].pageX;
      startY=e.originalEvent.changedTouches[0].pageY;
      console.log("start:("+startX+","+startY+")"+"--"+$(this).scrollTop());
    });
    $domScroll.on("touchmove",function(e){
      var x = e.originalEvent.changedTouches[0].pageX-startX;
      var y = e.originalEvent.changedTouches[0].pageY-startY;
      if ( Math.abs(x) > Math.abs(y)) {//左右滑動
       scrollLeft($(this),x); 
      }else if( Math.abs(y) > Math.abs(x)){ //上下滑動
        scrollTop($(this),y); 
      }
      function scrollLeft(obj,x){
        var currentScroll = obj.scrollLeft();
        console.log(parseInt(currentScroll)-x);
        obj.scrollLeft(parseInt(currentScroll)-x);//滑動的距離
        e.preventDefault();
        e.stopPropagation();
      }
      function scrollTop(obj,y){
        var currentScroll = obj.scrollTop();
        console.log(parseInt(currentScroll)-y);
        obj.scrollTop(parseInt(currentScroll)-y);//滑動的距離
        e.preventDefault();
        e.stopPropagation();
      }
    });
  }
  return {
    restrict: 'A',
    link: link
  };
});

這樣封裝后使用起來就方便了,在需要滑動的元素上加上指令 my-scroll。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<div my-scroll style="border:slateblue solid 1px;width:100%;height:300px;overflow: hidden;margin:0;padding:0;" class="row">
  <div class="col-20">
    <div ng-repeat="d in datas" style="margin-bottom:20px;border:solid 1px #007AFF;height:80px;text-align:center;line-height:80px;">
      地區(qū){0k0c6sg}
    </div>
  </div>
  <div class="col-80">
    <div style="width:200%;border:solid 1px #009689;overflow: hidden;white-space: nowrap;">
      <div ng-repeat="d in datas" style="margin-bottom:20px;border:solid 1px #FFC900;height:80px;text-align:center;line-height:80px;">
        {i688ukq}每行
      </div>
     </div>
  </div>
</div>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    69久久精品亚洲一区二区| 香蕉久久夜色精品国产尤物| 欧美人妻一区二区三区| 色婷婷激情五月天丁香| 91偷拍视频久久精品| 大香蕉精品视频一区二区| 成人免费在线视频大香蕉| 亚洲精品有码中文字幕在线观看| 人体偷拍一区二区三区| 91欧美日韩中在线视频| 女生更色还是男生更色| 大胆裸体写真一区二区| 九九热精品视频免费观看| 婷婷一区二区三区四区| 欧美成人久久久免费播放| 中文字幕日韩一区二区不卡| 国产综合欧美日韩在线精品| 在线观看日韩欧美综合黄片| 日本精品理论在线观看| 欧美日韩国产二三四区| 国产日韩熟女中文字幕| 国产一区二区不卡在线视频| 日韩亚洲精品国产第二页| 大屁股肥臀熟女一区二区视频| 国产麻豆成人精品区在线观看| 亚洲欧美日韩中文字幕二欧美| 国产又色又爽又黄又大| 亚洲欧美日韩综合在线成成| 在线观看免费视频你懂的| 国产精品成人一区二区在线| 蜜臀人妻一区二区三区| 中文字幕一区二区三区中文| 殴美女美女大码性淫生活在线播放| 91天堂免费在线观看| 国产美女精品午夜福利视频| 自拍偷拍福利视频在线观看| 九九热精品视频免费在线播放| 午夜精品麻豆视频91| 欧美精品亚洲精品日韩精品| 中文字幕亚洲人妻在线视频| 欧美成人免费一级特黄|