微信小程序scrollview软键盘加载会出现滚动条放下会调

微信小程序scrollview软键盘加载会出现滚动条放下会调,第1张

1、将scroll-view的scroll-y属性设置为false,这样可以禁用scroll-view的纵向滑动功能,避免滑动条出现。

2、在input组件绑定focus和blur事件,当input组件被聚焦时,将scroll-view组件滚动到输入框所在的位置,当input组件失去聚焦时,将scroll-top值设置为0,这样可以让页面回到最顶部。

 <button bindtap="powerDrawer" type="primary" size="mini" style="width: 55%;" data-statu="open">中奖记录</button>  

<!-- 中间名单d窗 -->

<view class="drawer_div">

  <view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if="{{showModalStatus}}"></view>

    <view animation="{{animationPrize}}" class="drawer_box" wx:if="{{showModalStatus}}">

      <view class="drawer_title">

        中奖记录

        <image src="/img/x@2xpng" bindtap="powerDrawer" data-statu="close"></image>

      </view>

      <view class="drawer_content">

        <view class="top grid">

          <text>

            名称:啦啦啦啦啦啦啦啦

          </text>

          <text>

            时间:2020-02-20

          </text>

        </view>

        <view class="top grid">

          <text>

            名称:啦啦啦啦啦啦啦啦

          </text>

          <text>

            时间:2020-02-20

          </text>

        </view>

    </view>

  </view>

</view>

drawer_screen {

  width: 100%;

  height: 100%;

  position: fixed;

  top: 0;

  left: 0;

  z-index: 1000;

  background: #000;

  opacity: 05;

  overflow: hidden;

}

/content/

drawer_box {

  width: 650rpx;

  overflow: hidden;

  position: fixed;

  top: 50%;

  left: 0;

  z-index: 1001;

  background: #FAFAFA;

  margin: -150px 50rpx 0 50rpx;

  border-radius: 3px;

}

drawer_title{

  padding:30rpx 20rpx;

  font-size: 36rpx;

  text-align: center;

  position: relative;

}

drawer_title image{

  display: inline-block;

  width: 30rpx;

  height: 30rpx;

  position: absolute;

  right: 9px;

  top: 10px;

}

drawer_content {

  height: 210px;

  overflow-y: scroll; /超出父盒子高度可滚动/

  padding: 0 20rpx;

}

top{

  display: flex;

  justify-content: space-between;

  border-bottom: 1px dashed #ccc;

}

top text{

  display: inline-block;

  height: 60rpx;

  line-height: 20rpx;

}

data: {

animationPrize: {},

}

powerDrawer: function (e) {

    // consolelog(e);

    let currentStatu = ecurrentTargetdatasetstatu;

    thisutil(currentStatu);

  },

  util: function (currentStatu) {

    / 动画部分 /

    // 第1步:创建动画实例

    var animation = wxcreateAnimation({

      duration: 200,  //动画时长

      timingFunction: "linear", //线性

      delay: 0  //0则不延迟

    });

    // 第2步:这个动画实例赋给当前的动画实例

    thisanimation = animation;

    // 第3步:执行第一组动画

    animationopacity(0)rotateX(-100)step();

    // 第4步:导出动画对象赋给数据对象储存

    thissetData({

      animationPrize: animationexport()

    })

    // 第5步:设置定时器到指定时候后,执行第二组动画

    setTimeout(function () {

      // 执行第二组动画

      animationopacity(1)rotateX(0)step();

      // 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象

      thissetData({

        animationPrize: animation

      })

      //关闭

      if (currentStatu == "close") {

        thissetData({

          showModalStatus: false

        });

      }

    }bind(this), 200)

    // 显示

    if (currentStatu == "open") {

      thissetData({

        showModalStatus: true

      });

    }

  },

<view>父组件msg的值:{{msg}}</view>

<Header msg="{{msg}}" bindchildChange="change" ></Header>

<block wx:for="{{list}}" wx:key="index">

<ListItem rItem="{{item}}" bindchildGO="childGO"></ListItem>

</block>

<Header  msg="{{msg}}"></Header>

/ pages/list/listwxss /

item{

    padding: 5px;

}

img1{

    width: 120px;

    height: 120px;

    border-radius: 5px;

}

row{

    flex: 1;

    height: 120px;

}

title{

    padding: 10px;

}

dec{

    padding:0 10px;

}

// pages/list/listjs

Page({

    /

      页面的初始数据

     /

    data: {

        msg:"你是我的小宝贝",

     list:[{

         url:">

wxml

<view class="swiper-tab">

<view class="swiper-tab-list {{currentTab==0 'on' : ''}}" data-current="0" bindtap="swichNav">红色</view>

<view class="swiper-tab-list {{currentTab==1 'on' : ''}}" data-current="1" bindtap="swichNav">绿色</view>

<view class="swiper-tab-list {{currentTab==2 'on' : ''}}" data-current="2" bindtap="swichNav">**</view>

微信小程序(下面简称小程序)近些月来刷爆了我们这些程序猿们的圈子,可以说无数的程序猿磨刀霍霍,准备在这快蛋糕上杀出一片天地。那么作为前端开发人员,小程序开发和我们平常的开发有什么不同的地方呢?让我们一起来走进门里看看。 我们从下面几个方向来了解一下小程序的开发: 1/debug/wxadoc/dev/framework/structure/debug/wxadoc/dev/devtools/download/debug/wxadoc/dev/component/t=20161107) 组件的用法和标签一样,比如view组件< view>< / view>、text组件< text>< /view>。从写法上看起来和标签写法没什么区别,但是这些组件和标签最大的区别就是,组件本身设置了样式,比如icon组件: <view class="group"> <block wx:for="{{iconSize}}"> <icon type="success" size="{{item}}"></icon> </block> </view> 我们只需要使用icon组件,不需要去自己设置样式就可以得到对应的icon样式。 在日常小程序开发中,比较常用的组件有view和text,其中用的最多的就是view,view本身并没有默认太多的样式,只有一个display:block样式,所以在我看来view就类似于div,我们也就把它当作div来使用就行了,然后你就会发现布局的时候到处都是view~,就像下图: 满眼全是view这种写法不需要像html一样考虑语义、seo神马的,非常的简单粗暴~。 额外提一下text组件,text拥有view所没有的一个特性就是text组件内的文本可以被复制、可以被复制、可以被复制(重要的事情说三遍~)。如果你希望某段文本可以被复制,那么你只能使用text组件。同时需要注意的一点,text组件内部不能嵌套view组件!嵌套无效! 2/debug/wxadoc/dev/framework/view/wxsshtmlt=20161107 二、JS差异 虽然小程序的交互采用的是js的语法,但是最大的变化就在于小程序无法使用选择器获取到页面的某个'dom'(应该不叫dom),这也是我们前端人员需要思路转变的地方,以往我们习惯于获取某个dom,然后这个dom上绑定各种事件,同时对页面进行一些改变 *** 作,但是小程序并没有提供这种我们习惯的方法。 不能获取dom,也不能直接 *** 作dom,那我们该怎么写呢? 1 bind 和 catch bind和catch的作用从字面意思就可以大致猜出是用来绑定某些东西的,没错,这是小程序提供绑定事件的两个方法,而他们的区别在于bind不阻止冒泡,而catch阻止冒泡。小程序不提供获取dom的 *** 作,而是让我们直接将事件绑定写入到组件内,如下代码: <view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view> 看到这大家可能发现了bind后面跟着一个tap,这个tap是什么东东? 2 tap tap其实就是一个事件,你可以理解为click,不过在手机端叫做tap,其它的事件还有:touchstart、touchmove、touchcancel、touchend、longtap。 bindtap=”tapName”组合起来就是绑定个tap事件,tapName则是对应的方法名,在这里需要注意一点,调用方法时不能够使用tapName(“txt”)这种形式来传参,小程序不支持。那么如果我们想要给方法传递一些参数该怎么做呢?接着往下看。 3event 我们先看一段代码: Page({ tapName: function(event) { consolelog(event) } }) 打印出来的结果: { "type":"tap", "timeStamp":895, "target": { "id": "tapTest", "dataset": { "hi":"WeChat" } }, "currentTarget": { "id": "tapTest", "dataset": { "hi":"WeChat" } }, "detail": { "x":53, "y":14 }, "touches":[{ "identifier":0, "pageX":53, "pageY":14, "clientX":53, "clientY":14 }], "changedTouches":[{ "identifier":0, "pageX":53, "pageY":14, "clientX":53, "clientY":14 }] } 看到这么一堆东西大家可能有点晕,没事,我们来捋一捋。这个event想来大家应该明白是什么,event包含了目标对象的相关信息。那意味着,我们只要去修改目标对象的相关信息,就可以给tapName方法传输参数了。 那么如何修改目标对象的相关信息呢?在这之前我们必须要先了解下currentTarget和target两个属性,前者是绑定事件的组件,后者是触发事件的组件源。理解清楚这两个属性很重要!如果是上面例子这种情况,只有一个view组件,那么这两个属性的值没什么区别,但是如果换成下面的这个例子,就不一样了: <view id="tap1" data-hi="绑定组件" bindtap="tapName"> <view id="tap2" data-hi="触发组件源"></view> </view> 我们再输出看看(为了方便对比,只保留下currentTarget和target两个属性): { "target": { "id": "tap2", "dataset": { "hi":"触发组件源" } }, "currentTarget": { "id": "tap1", "dataset": { "hi":"绑定组件" } } } 通过这个例子就可以很清楚的发现,currentTarget对应的就是外层绑定了tapName方法的view组件,而target对应的则是内部的view组件。 通过两个例子,相信大家也注意到了两个属性,data-hi和dataset,这两个属性有什么关系呢?大家应该猜到了,dataset的值其实就是我们设置的data-xxx的值,而xxx则是dataset里面的key。大家对于data-xxx的写法应该不陌生,就是html中常见的自定义属性的写法,而在小程序中,则被用来传参。 4 改变样式 前面就提到了小程序并不提供获取和 *** 作dom的能力,这就又带来了一个问题,我们如何去动态的改变样式呢?我们先看下例子: <view class="container" style="overflow: {{screenType'hidden':'scroll-y'}}" bindtap="bindType"> Page({ data: { screenType: '' }, bindType: function(){ thissetData({ screenType: '1' }) } })</view> 大家是不是有点明白了呢,我们没有办法直接获取dom然后去改变他的样式,所以我们只能通过data里的属性来控制样式的变化,如上面的代码,overflow的值取决于screenType的值是否存在,如果存在,则overflow: hidden,反之overflow: scroll-y;那么我们只需要改变screenType的值。要改变screenType的值也简单了,小程序提供了thissetData方法,可以设置data内的值。 四、其它 最后提一下我们熟悉的ajax请求,在小程序里,它不叫ajax,而叫做wxrequest。用法和ajax没什么区别,唯一需要特别注意的是,请求必须是>

以上就是关于微信小程序scrollview软键盘加载会出现滚动条放下会调全部的内容,包括:微信小程序scrollview软键盘加载会出现滚动条放下会调、微信小程序 自定义d窗、微信小程序组件及获取用户权限等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9559653.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存