最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ionic實(shí)現(xiàn)滑動(dòng)的三種方式

 更新時(shí)間:2016年08月27日 15:34:45   作者:lishihong108  
這篇文章主要為大家詳細(xì)介紹了ionic實(shí)現(xiàn)滑動(dòng)的三種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

實(shí)現(xiàn)方式

1). ion-scroll

利用ionic自帶的滑動(dòng)指令 

<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實(shí)現(xiàn)滑動(dòng),用ionic自帶的滑動(dòng)組件實(shí)現(xiàn)滑動(dòng),ion-scroll其他屬性可參考官網(wǎng)文檔
      </div>
    </ion-scroll>
  </ion-content>
</ion-view>

2). css的overflow

<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實(shí)現(xiàn)滾動(dòng),使用css的overflow屬性atuo或者scroll實(shí)現(xiàn)滾動(dòng)
        使用css的overflow屬性atuo或者scroll實(shí)現(xiàn)滾動(dòng),使用css的overflow屬性atuo或者scroll實(shí)現(xiàn)滾動(dòng)
        使用css的overflow屬性atuo或者scroll實(shí)現(xiàn)滾動(dòng),使用css的overflow屬性atuo或者scroll實(shí)現(xiàn)滾動(dòng)
      </div>
    </div>
  </ion-content>
</ion-view>

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

 監(jiān)聽(tīng)touch事件

<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;">
    {wppm3vysvbp}
  </div>
</div>

對(duì)應(yīng)的js

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)) {//左右滑動(dòng) 
     scrollLeft($(this),x);  
    }else if( Math.abs(y) > Math.abs(x)){//上下滑動(dòng)
      scrollTop($(this),y);  
    }
    function scrollLeft(obj,x){ 
      var currentScroll = obj.scrollLeft();
      console.log(parseInt(currentScroll)-x);
      obj.scrollLeft(parseInt(currentScroll)-x);//滑動(dòng)的距離
      e.preventDefault(); 
      e.stopPropagation();
    }
    function scrollTop(obj,y){ 
      var currentScroll = obj.scrollTop();
      console.log(parseInt(currentScroll)-y);
      obj.scrollTop(parseInt(currentScroll)-y);//滑動(dòng)的距離
      e.preventDefault(); 
      e.stopPropagation();
    }
  });
})

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

最后,再使用angularjs的指令,講滾動(dòng)的監(jiān)聽(tīng)封裝為一個(gè)指令,方便以后滑動(dòng)時(shí)候使用。

在directive.js中添加:

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)) {//左右滑動(dòng) 
       scrollLeft($(this),x);  
      }else if( Math.abs(y) > Math.abs(x)){ //上下滑動(dòng)
        scrollTop($(this),y);  
      }
      function scrollLeft(obj,x){ 
        var currentScroll = obj.scrollLeft();
        console.log(parseInt(currentScroll)-x);
        obj.scrollLeft(parseInt(currentScroll)-x);//滑動(dòng)的距離
        e.preventDefault(); 
        e.stopPropagation();
      }
      function scrollTop(obj,y){ 
        var currentScroll = obj.scrollTop();
        console.log(parseInt(currentScroll)-y);
        obj.scrollTop(parseInt(currentScroll)-y);//滑動(dòng)的距離
        e.preventDefault(); 
        e.stopPropagation();
      }
    });
  } 
  return {
    restrict: 'A',
    link: link 
  };
});

這樣封裝后使用起來(lái)就方便了,在需要滑動(dòng)的元素上加上指令 my-scroll。

<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ū){wppm3vysvbp}
    </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;">
        {wppm3vysvbp}每行
      </div>
     </div>
  </div>
</div>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript版TAB選項(xiàng)卡效果實(shí)例

    JavaScript版TAB選項(xiàng)卡效果實(shí)例

    tab選項(xiàng)卡效果就是當(dāng)我指上或經(jīng)過(guò)時(shí)就會(huì)顯示這個(gè)選項(xiàng)卡下面的內(nèi)容,下面我來(lái)給大家介紹一款純js實(shí)現(xiàn)的TAB選項(xiàng)卡效果,有需要的朋友可以參考一下
    2013-08-08
  • JS完成代碼前最好對(duì)其做5件事

    JS完成代碼前最好對(duì)其做5件事

    我們不得面對(duì)這樣一個(gè)事實(shí):許多程序員不會(huì)規(guī)劃他們的JS代碼。我們經(jīng)??焖賹懲甏a、運(yùn)行、提交。但當(dāng)我們繼續(xù)開(kāi)發(fā)遇到變量和函數(shù)時(shí)不得不再次回頭查看它們代表的含義,麻煩就從這里開(kāi)始了。
    2013-04-04
  • promise處理多個(gè)相互依賴的異步請(qǐng)求(實(shí)例講解)

    promise處理多個(gè)相互依賴的異步請(qǐng)求(實(shí)例講解)

    下面小編就為大家?guī)?lái)一篇promise處理多個(gè)相互依賴的異步請(qǐng)求(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • JavaScript 實(shí)現(xiàn)自己的安卓手機(jī)自動(dòng)化工具腳本(推薦)

    JavaScript 實(shí)現(xiàn)自己的安卓手機(jī)自動(dòng)化工具腳本(推薦)

    這篇文章主要介紹了 JavaScript 實(shí)現(xiàn)自己的安卓手機(jī)自動(dòng)化工具腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 小程序如何定位所在城市及發(fā)起周邊搜索

    小程序如何定位所在城市及發(fā)起周邊搜索

    這篇文章主要介紹了小程序如何定位所在城市及發(fā)起周邊搜索,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 微信小程序?qū)崿F(xiàn)點(diǎn)擊卡片 翻轉(zhuǎn)效果

    微信小程序?qū)崿F(xiàn)點(diǎn)擊卡片 翻轉(zhuǎn)效果

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)點(diǎn)擊卡片 翻轉(zhuǎn)效果本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • JavaScript中的高級(jí)特性分享

    JavaScript中的高級(jí)特性分享

    JavaScript是一種功能強(qiáng)大的編程語(yǔ)言,具有許多高級(jí)特性,本文將介紹JavaScript中的一些高級(jí)特性,包括閉包、原型繼承、高階函數(shù)、異步編程和模塊化,希望對(duì)大家有所幫助
    2023-06-06
  • JS版元素周期表實(shí)現(xiàn)方法

    JS版元素周期表實(shí)現(xiàn)方法

    這篇文章主要介紹了JS版元素周期表實(shí)現(xiàn)方法,可實(shí)現(xiàn)基于javascript動(dòng)態(tài)生成元素周期表的功能,點(diǎn)擊元素項(xiàng)可以在下方顯示對(duì)應(yīng)元素的各種常用屬性,需要的朋友可以參考下
    2015-08-08
  • JS中如何設(shè)置readOnly的值

    JS中如何設(shè)置readOnly的值

    本篇文章主要是對(duì)JS中設(shè)置readOnly值的方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • JavaScript開(kāi)發(fā)人員的10個(gè)關(guān)鍵習(xí)慣小結(jié)

    JavaScript開(kāi)發(fā)人員的10個(gè)關(guān)鍵習(xí)慣小結(jié)

    還在一味沒(méi)有目的的編寫JavaScript代碼嗎?那么你就OUT了!讓我們一起來(lái)看看小編為大家搜羅的JavaScript開(kāi)發(fā)人員應(yīng)該具備的十大關(guān)鍵習(xí)慣吧
    2014-12-12

最新評(píng)論

成都市| 凤阳县| 隆昌县| 阿克陶县| 北票市| 钟祥市| 师宗县| 贺兰县| 绥中县| 大余县| 大同县| 常州市| 比如县| 原平市| 日土县| 万源市| 北票市| 蛟河市| 二连浩特市| 泽普县| 时尚| 临颍县| 昌平区| 舒城县| 寿宁县| 乡城县| 文昌市| 榆社县| 和静县| 玛多县| 长顺县| 丽江市| 大埔区| 麻栗坡县| 钟山县| 区。| 万载县| 商河县| 抚顺市| 大姚县| 蒙阴县|