微信小程序实现左右联动的菜单列表

微信小程序实现左右联动的菜单列表,第1张

实现效果如下:

实现左右联动的菜单列表,主要依靠scroll-view的是三个属性:

scroll-top:设置竖向滚动条位置(可视区域最顶部到scroll-view顶部的距离);

scroll-into-view:值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素;

bindscroll:滚动时触发,eventdetail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

结构图示:

wxml:

js:

数据结构:

如果你还想实现从其他页面,点击按钮跳转到当前页面,并且列表滚动到指定项,此项在可视区域的第一个展示:

wxss:

程序开发推荐使用uni-app,它是一个使用Vuejs开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台。

uni,读youni,是统一的意思。

很多人以为小程序是微信先推出的,其实,DCloud才是这个行业的开创者。

DCloud于2012年开始研发小程序技术,优化webview的功能和性能,并加入W3C和HTML5中国产业联盟,推出了HBuilder开发工具,为后续产业化做准备。

2015年,DCloud正式商用了自己的小程序,产品名为“流应用”,它不是模式的轻应用,而是能接近原生功能、性能的动态App,并且即点即用。

为将该技术发扬光大,DCloud将技术标准捐献给工信部旗下的HTML5中国产业联盟,并推进各家流量巨头接入该标准,开展小程序业务。

360手机助手率先接入,在其34版本实现应用的秒开运行。

随后DCloud推动大众点评、携程、京东、有道词典、唯品会等众多开发者为流应用平台提供应用。

在2015年9月,DCloud推进微信团队开展小程序业务,演示了流应用的秒开应用、扫码获取应用、分享链接获取应用等众多场景案例,以及分享了webview体验优化的经验。

微信团队经过分析,于2016年初决定上线小程序业务,但其没有接入联盟标准,而是订制了自己的标准。

DCloud持续在业内普及小程序理念,推进各大流量巨头,包括手机厂商,陆续上线类似小程序/快应用等业务。

部分公司接入了联盟标准,但更多公司因利益纷争严重,标准难以统一。

技术是纯粹的,不应该因为商业利益而分裂。开发者面对如此多的私有标准不是一件正确的事情。

虽然是始作俑者,但造成混乱的局面非DCloud所愿。于是我们决定开发一个免费开源的框架。

既然各巨头无法在标准上达成一致,那么就通过这个框架为开发者抹平各平台差异。

这,就是uni-app的由来。

因为多年积累,所以DCloud拥有300多万开发者,并不意外因为DCloud一直都有小程序的iOS、Android引擎,所以uni-app的App端和小程序端保持高度一致,并不意外因为DCloud在引擎上的持续投入,所以uni-app的App端功能、性能比大多数小程序引擎都优秀,并不意外因为DCloud对各家小程序太了解了,所以做好抹平各端差异的跨端框架,并不意外

现在,uni-app已经是业内最风靡的应用框架,支撑着6亿手机用户的庞大生态。

世界兜兜转转,当你踏出第一步时,随后很多事不会按你的预期发展。但只要你不忘初心,你想要的那个目标,最终会换个方式实现。

DCloud的初心是什么?

为开发者提供免费、高效的开发工具,让天下没有难做的应用改进应用形态,让用户更方便的获取数字服务

DCloud也再次承诺不会对uni-app、HBuilderX等工具收费,感谢数百万开发者的一路陪伴,也请一直监督我们不忘初心!

1、利用样式实现小程序动画(用法和css用法相识)

wxml 文件

<image class="aniamtion" src="//images/page4jfif" style="width:200rpx;height:200rpx;  position:  relative;"></image>

wxss文件

aniamtion {

animation: mymove 5s infinite;

/ //infinite属性是表示无限循环的意思,没有这个属性的话动画只执行一次。 /

}

@keyframes mymove {

from {

  / left: 0px; /

/ transform: rotate(7deg) skew(50deg) translate(30rpx,30rpx); /

transform: rotate3d(100,200,300,0deg);

}

to {

 / left: 200px; /

/ transform: rotate(7deg) skew(5deg) translate(100rpx,100rpx); /

transform: rotate3d(200,300,400,360deg);

}

}

2、 用小程序的API来实现动画

用wxcreateAnimation(object) 来创建一个动画 -->返回一个animation对象

创建一个动画实例 animation。

onReady: function () {

thisanimation = wxcreateAnimation({

duration:1000,

timingFunction:'linear',

delay:100,

transformOrigin:"left top 0"

})

},

调用实例的方法来描述动画。

Animationstep() 表示一组动画的完成,可以在一组动画中调用任意多个动画方法,一组动画中的所有动画会同时开始,一组动画完成后才会进行下一组动画

rotate(){

thisanimationrotate(150)step() //对动画进行简单的描述

thissetData({

         animation:thisanimationexport()

})

},

最后通过动画实例的 export 方法导出动画数据传递给组件的 animation 属性。

thisanimationexport() 导出动画队列。export 方法每次调用后会清掉之前的动画 *** 作

rotate(){

thisanimationrotate(150)step() //对动画进行简单的描述

thissetData({ // 在setData({}) 导出动画数据数据给组件

         animation:thisanimationexport()

})

},

完整的wxml

<view class="container">

<view animation="{{animation}}" class="view">

将做动画的块

</view>

</view>

<button type="default" size="mini" bindtap="rotate">

旋转

</button>

完整的wxjs

Page({

data: {

animation:''

},

onReady: function () {

thisanimation = wxcreateAnimation({

duration:1000,

timingFunction:'linear',

delay:100,

transformOrigin:"left top 0"

})

},

rotate(){

thisanimationrotate(150)step()translate(100)step()

thissetData({

animation:thisanimationexport()

})

}

})

3、用选择器来绑定组件来来实现组件的动画(小程序290 的库可用,版本不够会报thisanimate不是一个方法)

<text>pages/index7/index7wxml</text>

<view id="container" style="height: 100px; width: 100px; background-color: blue;">

container

</view>

<view class="block" style="height: 100px; width: 100px;background-color: #ccc;">

block

</view>

用选择器选择相应的组件进行相应的动画

进行关键帧的处理

onLoad: function () {

  thisanimate('#container', [

    { opacity: 10, rotate: 0, backgroundColor: '#FF0000' },

    { opacity: 05, rotate: 45, backgroundColor: '#00FF00' },

    { opacity: 10, rotate: 90, backgroundColor: '#FF0000' },

  ], 5000)

  thisanimate('block', [

    { scale: [1, 1], rotate: 0, ease: 'ease-out' },

    { scale: [15, 15], rotate: 45, ease: 'ease-in'},

    { scale: [2, 2], rotate: 90 },

  ], 5000)

},

}

4、用第三方的库 animationcss

需要做的有

从>

把 css 文件 改名成 wxss文件(可进行相应的需改,毕竟小程序的大小限制摆在那里)

把它引入到你的appwxss文件中

@import “动画文件的相对目录”

在用的时候把他和你的样式绑定

<view class="swing" style="height: 100px; width: 100px;background-color: #ccc;">

block

</view>

// 给类名为swing 的文件绑定swing 的动画

swing{

animation: swing 5s infinite;

}

微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend。

这三个事件最重要的属性是pageX和pageY,表示X,Y坐标。

touchstart在触摸开始时触发事件;

touchend在触摸结束时触发事件;

touchmove触摸的过程中不断激发这个事件;

这三个事件都有一个timeStamp的属性,查看timeStamp属性,可以看到顺序是touchstart => touchmove=> touchmove => ··· =>touchmove =>touchend。

微信小程序开发中toast也是重要的消息提示方式

提示框:

wxshowToast(OBJECT)

显示消息提示框

OBJECT参数说明:

示例代码:

12345

wxshowToast({ title:'成功', icon:'success', duration: 2000})

wxhideToast()

隐藏消息提示框

123456789

wxshowToast({ title:'加载中', icon:'loading', duration: 10000}) setTimeout(function(){ wxhideToast()},2000)

wxshowModal(OBJECT)

显示模态d窗

OBJECT参数说明:

示例代码:

123456789

wxshowModal({ title:'提示', content:'这是一个模态d窗', success:function(res) { if(resconfirm) { consolelog('用户点击确定') } }})

wxshowActionSheet(OBJECT)

显示 *** 作菜单

OBJECT参数说明:

success返回参数说明:

示例代码:

12345678

wxshowActionSheet({ itemList: ['A','B', 'C'], success:function(res) { if(!rescancel) { consolelog(restapIndex) } }})

设置导航条

<view>提示:{{tip}}</view>

<button type="default" bindtap="showModal">点击我d出modal对话框</button>

<view>

<modal title="modal对话框" hidden="{{modalHidden}}" confirm-text="确定" cancel-text="取消"

bindconfirm="modalBindaconfirm" bindcancel="modalBindcancel">您好,我是modal对话框</modal>

</view>

Page({

data:{

// text:"这是一个页面"

tip:'',

buttonDisabled:false,

modalHidden:true,

show:false

},

showModal:function(){

thissetData({

modalHidden:!thisdatamodalHidden

})

},

modalBindaconfirm:function(){

thissetData({

modalHidden:!thisdatamodalHidden,

show:!thisdatashow,

tip:'您点击了确认按钮!',

buttonDisabled:!thisdatabuttonDisabled

})

},

modalBindcancel:function(){

thissetData({

modalHidden:!thisdatamodalHidden,

tip:'您点击了取消按钮!'

})

}

})

wxsetNavigationBarTitle(OBJECT)

动态设置当前页面的标题。

OBJECT参数说明:

示例代码:

123

wxsetNavigationBarTitle({ title:'当前页面'})

wxshowNavigationBarLoading()

在当前页面显示导航条加载动画。

wxhideNavigationBarLoading()

隐藏导航条加载动画。

页面跳转:

wxnavigateTo(OBJECT)

保留当前页面,跳转到应用内的某个页面,使用wxnavigateBack可以返回到原页面。

OBJECT参数说明:

示例代码:

123

wxnavigateTo({ url:'testid=1'})

123456

//testjsPage({ onLoad:function(option){ consolelog(optionquery) }})

注意:为了不让用户在使用小程序时造成困扰,我们规定页面路径只能是五层,请尽量避免多层级的交互方式。

wxredirectTo(OBJECT)

关闭当前页面,跳转到应用内的某个页面。

OBJECT参数说明:

示例代码:

123

wxredirectTo({ url:'testid=1'})

wxnavigateBack(OBJECT)

关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages()) 获取当前的页面栈,决定需要返回几层。

OBJECT参数说明:

动画:

wxcreateAnimation(OBJECT)

创建一个动画实例animation。调用实例的方法来描述动画。最后通过动画实例的export方法导出动画数据传递给组件的animation属性。

注意: export 方法每次调用后会清掉之前的动画 *** 作

OBJECT参数说明:

123456

var animation = wxcreateAnimation({ transformOrigin:"50% 50%", duration: 1000, timingFunction:"ease", delay: 0})

animation

动画实例可以调用以下方法来描述动画,调用结束后会返回自身,支持链式调用的写法。

样式:

旋转:

缩放:

偏移:

倾斜:

矩阵变形:

动画队列

调用动画 *** 作方法后要调用 step() 来表示一组动画完成,可以在一组动画中调用任意多个动画方法,一组动画中的所有动画会同时开始,一组动画完成后才会进行下一组动画。step 可以传入一个跟 wxcreateAnimation() 一样的配置参数用于指定当前组动画的配置。

示例:

1

<viewanimation="{{animationData}}"style="background:red;height:100rpx;width:100rpx"></view>

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849

Page({ data: { animationData: {} }, onShow:function(){ varanimation = wxcreateAnimation({ duration: 1000, timingFunction:'ease', }) thisanimation = animation animationscale(2,2)rotate(45)step() thissetData({ animationData:animationexport() }) setTimeout(function() { animationtranslate(30)step() thissetData({ animationData:animationexport() }) }bind(this), 1000) }, rotateAndScale:function () { // 旋转同时放大 thisanimationrotate(45)scale(2, 2)step() thissetData({ animationData:thisanimationexport() }) }, rotateThenScale:function () { // 先旋转后放大 thisanimationrotate(45)step() thisanimationscale(2, 2)step() thissetData({ animationData:thisanimationexport() }) }, rotateAndScaleThenTranslate:function () { // 先旋转同时放大,然后平移 thisanimationrotate(45)scale(2, 2)step() thisanimationtranslate(100, 100)step({ duration: 1000 }) thissetData({ animationData:thisanimationexport() }) }})

wxhideKeyboard()

收起键盘。

1、支持的前端开发语言有:

前端主要是用WXML、WXSS以及JavaScript来开发。本质上就是JS+CSS+HTML5,不过不能直接用HTML标签,微信提供一个组件库,没有DOM和其他浏览器上的API;网络、Canvas等也重新包装过。小程序开发底价

2、支持的后端开发语言有:

其实理论上后端用什么语言都可以,只要能够从服务器上获取到数据,例如:PHP、Java或者Python来开发。一般对于企业而言,都是采用php程序开发微信小程序;技术要求高一点的可以采用java程序开发。

想要了解更多有关小程序开发的相关信息,推荐咨询猪八戒网。猪八戒网成立于2006年,是中国领先的企业服务平台,服务交易独角兽企业。猪八戒网现有注册用户2800万、在全国布局线下数字化创业园区超过100个。十余年来,累计有10万余个人通过平台孵化成长为公司,超过100万人通过平台实现灵活就业,千万企业通过平台解决专业服务需求;专业性值得选择。

多级联动菜单在许多的筛选场景应用十分广泛。

先看看效果图:

menuwxml

menuwxss

menujsp

menuwxss

menujs

menuwxml

menuwxss

menujs

这里主要针对一个菜单栏进行详细讲解,其余两个原理相同。

游戏

menuwxml

这里推荐大家使用 <scroll-view></scroll-view> 组件,这样超过限定的高度的话,就可以在内部产生滚动条,整体布局不会乱。使用 <scroll></scroll> 组件的时候,记得要开启滚动的方向(scroll-y表示纵向,scroll-x表示横向),这些属性默认是关闭的。

menuwxss

注意:使用竖向滚动时,需要给<scroll-view/>一个固定高度,通过 WXSS 设置 height。

menujs

menujs部分主要的难点就是wxml和js之间的数据交互,这里很容易弄晕,尤其是对自己定义的变量弄清楚是什么意思。在这里我画了一个示意图来讲解这个难点。

最后给大家提供该项目的github项目,直接抓下来就可以打开使用,只需对显示的数据进行修改即可。

以上就是关于微信小程序实现左右联动的菜单列表全部的内容,包括:微信小程序实现左右联动的菜单列表、小程序开发用什么语言好,怎么样、小程序如何使用css3动画等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存