zoukankan      html  css  js  c++  java
  • 微信小程序wx.pageScrollTo的替代方案

    wx.pageScrollTo这个微信小程序的api功能如下:

    简而言之就是实现页面滚动的。但是在实际应用当中显得有些鸡肋,为啥呢?使用中有明显页面有明显的抖动,这无疑是极不好的用户体验。我用的华为6x手机。

    那么怎么解决这个问题?答案是选择利用scroll-view代替。上代码

     1 <scroll-view scroll-y style="height: 100%;position:absolute;" enable-back-to-top="true" bindscroll="memoryScrollTop" scroll-with-animation="true" scroll-top="{{scrollTop}}">
     2   <view class='wrap' style='position:absolute;'>
     3     <view id='general'>
     4       <image src='../../images/timg.jpg'></image>
     5       <view class='writing' wx:for="{{strategyGeneralObjArr}}" wx:key="{{index}}">
     6         <view class='audio-box' wx:if="{{item.myAudio.length}}">
     7           <view class='audio-box-logo' bindtap='playOrStopAudio'>
     8             <view class='play-icon-box {{audioPlayStatus?"play-icon":"playing-icon"}}'>
     9 
    10             </view>
    11             <audio id='myAudio' bindended="selfEndedPlay" bindtimeupdate="updatePlayTime" src='{{item.myAudio[0]}}' style='display:none;'></audio>
    12           </view>
    13           <view class='audio-box-progress'>
    14             <view class='line-default'>
    15             </view>
    16             <view class='line-play-box'>
    17               <view class='line-play' style='{{playPercenter}}'>
    18               </view>
    19               <view class='play-circle'></view>
    20             </view>
    21 
    22             <view class='play-ing'>
    23 
    24               <text>{{updateTime}}</text>
    25               <text>{{audioduration}}</text>
    26             </view>
    27           </view>
    28         </view>
    29         <view class='audio-title'>
    30           {{item.title}}
    31         </view>
    32         <view class='audio-intro'>
    33           {{item.desc}}
    34         </view>
    35         <view class='audio-tags skind'>
    36           <block wx:for="{{item.label}}" wx:for-item="sonItem" wx:key="{{index}}">
    37             <text>{{sonItem.name}}</text>
    38           </block>
    39         </view>
    40         <view class='audio-address'>
    41           <view class='audio-address-name'>
    42             {{item.locationInfo.address}}
    43           </view>
    44           <view class='audio-address-distance'>
    45             {{item.distance}}km
    46           </view>
    47         </view>
    48       </view>
    49 
    50     </view>
    51     <view id='intros'>
    52       <block wx:for="{{strategyContentObjArr}}" wx:key="{{index}}">
    53         <block wx:if="{{item.type==6}}">
    54           <view class='trip-line  unitItem {{"step"+index}}'>
    55             <view class='titleLine mainTitle'>
    56               <text class='left-line'></text>
    57               <text class='titleLine-title'>{{item.data}}</text>
    58               <text class='right-line'></text>
    59             </view>
    60           </view>
    61         </block>
    62         <block wx:if="{{item.type==7}}">
    63           <view class='sonTitle'>
    64             <text class='left-spot'></text>
    65             <text class='sonTitle-title'>{{item.data}}</text>
    66             <text class='right-spot'></text>
    67           </view>
    68         </block>
    69         <block wx:if="{{item.type==1}}">
    70           <view class='trip-line-instruct intro-writing'>
    71             {{item.data}}
    72           </view>
    73         </block>
    74         <block wx:if="{{item.type==2}}">
    75           <view class='image'>
    76             <image src='{{item.data}}' class='strategy-img'></image>
    77           </view>
    78         </block>
    79         <block wx:if="{{item.type==4}}">
    80           <view class='trip-mode-video video'>
    81             <video wx:if='{{playOpenCode}}' id='myVideo' bindended="playSelfOver" bindpause="stopVideo" bindtimeupdate="memoryTime" src="{{item.data}}">
    82 
    83             </video>
    84             <view class='trip-mode-video-cover' wx:if='{{!playOpenCode}}'>
    85               <image src='../../images/timg.jpg' class='cover'></image>
    86               <image bindtap='playVideo' src='../../images/play.png' class='tip'></image>
    87             </view>
    88           </view>
    89         </block>
    90       </block>
    91     </view>
    92     <view class='blank'></view>
    93   </view>
    94 </scroll-view>

    注意上述代码,因为含有很多变量,所以复制之后不保证管用。

    注意上述scroll-view还有一层view这一层view是内容的二级父元素,而scroll-view是最顶级父元素,并且两者都需要使用绝对定位,还有scroll-view必须有一个固定高度。

    这样就可以通过动态改变scroll-top="{{scrollTop}}" 来改变指定的高度了。

    关于上述这种设置,以前接触并使用过h5移动端的滚动插件,比如BetterScroll 还有iscroll,在设置上面和上述一致。想到这点在看微信小程序或者里面也有类似的底层吧。

  • 相关阅读:
    大型系统的支撑
    应用系统开发思想的变迁
    面向对象基本特征的来历
    GC使用注意
    系统分层演变
    Oracle位图索引
    剪刀剪纸
    权限设计随笔(有空细化)
    Hibernate基础学习(六)—Hibernate二级缓存
    Hibernate基础学习(五)—对象-关系映射(下)
  • 原文地址:https://www.cnblogs.com/zhensg123/p/9089544.html
Copyright © 2011-2022 走看看