iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么用css transition属性实现一个带动画显隐的微信小程序部件
  • 137
分享到

怎么用css transition属性实现一个带动画显隐的微信小程序部件

2023-06-26 08:06:18 137人浏览 泡泡鱼
摘要

今天小编给大家分享一下怎么用CSS transition属性实现一个带动画显隐的微信小程序部件 的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们

今天小编给大家分享一下怎么用CSS transition属性实现一个带动画显隐的微信小程序部件 的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

怎么用css transition属性实现一个带动画显隐的微信小程序部件

代码

page({    data: {        show:false//用于显示或隐藏控件    },    chanMask:function(){ var isshow = this.data.show ? false : true;//如果显示就隐藏,隐藏就显示 this.setData({            show:isShow        })    }})
.mask-con{transition: 1s; position: fixed;width: 100%;height: 300rpx;left: 0;bottom: -300rpx; text-align: center;line-height: 300rpx;box-shadow: 0 1px 10px #aaa;}.mask-con-show{bottom: 0;}
<!--index.wxml--><view class="container"><button bindtap="chanMask">点我</button><view class="mask-con {{show ? 'mask-con-show' : ''}}"><view class="close" bindtap="chanMask">X</view>慢慢飞起</view></view>

在以上代码中我们首先在data中定义了一个show变量用于mask-con控件的显示状态,在chanMask函数中交替的改变这个变量,然后将chanMask函数绑定给button和close控件的点击事件上,最后我们根据show来决定是否给mask-con(我们的动画控件)添加一个class: mask-con-show那么到这里我们已经实现了一个带过渡的显隐小部件

现在很多的APP或小程序都是以这种方式来close弹窗控件,那个X用户点的不过瘾,看到这里聪明的小伙伴可能会想到再另外添加一个阴影控件在mask-con的下层并绑定上我们的chanMask函数,这样的话阴影控件和我们的mask-con就可能不是在一个整体上了,不够直观,又比如说领导要让这个阴影它有一个显示颜色慢慢加深,隐藏慢慢减淡的效果,为了应对这种情况,我们把代码调整如下:

page({    data: {        show:false//用于显示或隐藏mask控件    },    chanMask:function(){ var isShow = this.data.show ? false : true;//如果显示就隐藏,隐藏就显示 this.setData({            show:isShow        })    }})
.mask-shadow{width: 100%;height: 100%; opacity: 0;transition: 1s;}.mask-shadow-on{opacity: 0.3;}.mask-con{position: absolute;width: 100%;height: 300rpx;left: 0;bottom: -300rpx; transition: 1s;text-align: center;line-height: 300rpx;box-shadow: 0 1px 10px #aaa;}.mask-con-show{bottom: 0;}
<!--index.wxml--><view class="container"><button bindtap="chanMask">点我</button><view class="mask {{show ? 'show' : 'hide'}}"><view class="mask-shadow {{show ? 'mask-shadow-on' : ''}}"></view><view class="mask-con {{show ? 'mask-con-show' : ''}}"><view class="close" bindtap="chanMask">X</view>慢慢飞起</view></view></view>

在这里我们设置了两个样式类名mask-shadow-on和mask-con-show来定义阴影以及主要控件mask-con动画后的效果(具体代码根据自己的需求决定),看起来一切都OK,没有任何问题,那么先运行一波,艾玛,神马情况?阴影和我们的mask-con直接怼了出来毫无过渡效果,那这是何原因影响我们程序的效果呢,经过一番考量博主发现在display为none的情况之下我们的transition属性可能会失效,那到这里有的小伙伴可能会问 “博主,那个不对啊,我们明明已经将mask的display设置成block怎么还有这种问题呢”

是这样的,我们的mask控件它显示需要那么一点时间才能完全显示出来,但是呢我们的变量show设置成true之后,我们的阴影控件和主要控件也会马上添加上了动画后样式类名,这个时间它比mask显示所需的时间要快,所以我们的机器它认为mask还是处于display为none的情况

打个比方说:mask是这一整块的老大,这个老大都还没表演完事,你们这些做小弟就已经出来抢风头了,你让当老大的面子往哪放,不行我得把你们这些抢我风头的都给干掉,看你们还得瑟。这个老大的人狠话不多,你抢了他风头不行,你想不表演他(用户体验)也不高兴,而且他表演完了还不跟你说,那这个老大这么难伺候该怎么办呢?有的小伙伴已经感觉到迷茫了吗,那还在等什么,赶快拿起你手中的电话拨打求助热线。。。。。啊呸,扯远了

其实决解的方法很简单,没错答案就是 setTimeout()函数,来,我们把代码再改一遍:

page({        data: {        show:false,//用于显示或隐藏mask控件        runAM:false//用于动画执行的根据    },    chanMask:function(){ var isShow = this.data.show ? false : true;//如果显示就隐藏,隐藏就显示 var delay  = isShow ? 30 : 1000;//第一个时间是博主测出来控件显示所需的时间,第二个是动画所需的时间 if(isShow){ this.setData({                show:isShow            });        }else{ this.setData({                runAM:isShow            })        }         setTimeout(function(){ if(isShow){ this.setData({                    runAM:isShow                });            }else{ this.setData({                    show:isShow                });            }        }, delay);    }})
<!--index.wxml--><view class="container"><button bindtap="chanMask">点我</button><view class="mask {{show ? 'show' : 'hide'}}" bindtap="chanMask"><view class="mask-shadow {{runAM ? 'mask-shadow-on' : ''}}"></view><view class="mask-con {{runAM ? 'mask-con-show' : ''}}"><view class="close" bindtap="chanMask">X</view>慢慢飞起</view></view></view>

在以上代码中,我们给data新添加了一个变量runAM用于动画何时开始执行的凭证,再在chanMask函数定义了一个用于设置延时的变量delay 代码可能有点绕博主在此粗暴的解释一下

程序的整个过程都是根据isShow这个变量来走的,

当isShow为true时也就是说我们要打开mask控件了,所以我们先把mask控件显示出来,然后在延时30毫秒后去为要执行动画的控件添加上样式类名

当isShow为false时我们先把动画控件的类名去掉(去掉后会执行动画回到原本的形态),然后在延时1000毫秒(动画所需的时间)后让mask隐藏

以上就是“怎么用css transition属性实现一个带动画显隐的微信小程序部件 ”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: 怎么用css transition属性实现一个带动画显隐的微信小程序部件

本文链接: https://www.lsjlt.com/news/308212.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用css transition属性实现一个带动画显隐的微信小程序部件
    今天小编给大家分享一下怎么用css transition属性实现一个带动画显隐的微信小程序部件 的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2023-06-26
  • 微信小程序怎么实现弹出和隐藏遮罩层动画
    这篇文章主要介绍“微信小程序怎么实现弹出和隐藏遮罩层动画”,在日常操作中,相信很多人在微信小程序怎么实现弹出和隐藏遮罩层动画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序怎么实现弹出和隐藏遮罩层动画...
    99+
    2023-06-26
  • 纯CSS怎么实现微信小程序仿QQ顶部提示弹框动画效果
    这篇文章将为大家详细讲解有关纯CSS怎么实现微信小程序仿QQ顶部提示弹框动画效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果思路 用css的animation属性做动画代码wxml:<view...
    99+
    2023-06-08
  • 微信小程序怎么实现一个手写签名组件
    这期内容当中小编将会给大家带来有关微信小程序怎么实现一个手写签名组件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。背景:在做项目过程中,需要在微信小程序中实现手写签名组件。在网上找了微信小程序手写签名实现...
    99+
    2023-06-20
  • 微信小程序中怎么实现一个搜索框组件
    今天就跟大家聊聊有关微信小程序中怎么实现一个搜索框组件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。search.wxml<view ...
    99+
    2024-04-02
  • 怎么在微信小程序中实现一个文字滚动功能
    怎么在微信小程序中实现一个文字滚动功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体内容如下wxml:<view>显示完后再显示:</vi...
    99+
    2023-06-14
  • 微信小程序怎么实现菜单弹出的阻尼动画效果
    本篇内容主要讲解“微信小程序怎么实现菜单弹出的阻尼动画效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序怎么实现菜单弹出的阻尼动画效果”吧!实现代码结构如下:新建组件menu:menu...
    99+
    2023-06-26
  • 怎么在微信小程序中实现一个多行文字滚动效果
    这期内容当中小编将会给大家带来有关怎么在微信小程序中实现一个多行文字滚动效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体内容如下wxml<view class="full&...
    99+
    2023-06-14
  • 怎么在微信小程序中实现一个水平垂直滚动功能
    怎么在微信小程序中实现一个水平垂直滚动功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体内容如下要点swiper内部套scroll-view注意:scroll竖直滚动高...
    99+
    2023-06-14
  • 微信小程序怎么使用progress组件实现显示进度功能
    这篇文章主要为大家展示了“微信小程序怎么使用progress组件实现显示进度功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序怎么使用progress...
    99+
    2024-04-02
  • 微信小程序中怎么实现一个固定表头、列表格组件
    微信小程序中怎么实现一个固定表头、列表格组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实现思路开始想用三个ScrollView去实现滚动联动,固定表头、列的话,表格内容...
    99+
    2023-06-20
  • 怎么在微信小程序中利用canvas实现一个水平、垂直居中效果
    本篇文章为大家展示了怎么在微信小程序中利用canvas实现一个水平、垂直居中效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。wxml<canvas type='2d'...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作