![微信小程序开发从零开始学](https://wfqqreader-1252317822.image.myqcloud.com/cover/976/44509976/b_44509976.jpg)
3.1 视图容器组件
视图容器组件的主要作用就是“容器”,与按钮、文字、进度条等组件不同,它主要由普通视图、滑动视图、拖动视图等构成,就像我们在画图时的一个个背景画布。
3.1.1 视图容器view
view是最基本的视图容器,与前端的div标签比较类似,自身没有任何大小颜色属性,通常作为一个基本容器存在。view的自带属性如表3.1所示。
表3.1 view组件的自带属性
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-T35_39634.jpg?sign=1739492926-3hM383a3VjJu04yGCW5A8xp3FFYQXuE7-0-d112b0e14d22a121d66a63532caad6f6)
【示例3-1】
(1)新建一个项目components,用于本节的代码展示。
(2)清空index.wxml和index.js的代码,并输入以下代码:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P35_39635.jpg?sign=1739492926-PtPHYfulWkbJqHstvX0tktGQyEbjRsK1-0-e32aee0a556acc796816214906de0575)
(3)运行代码,首页效果如图3.1所示。在接下来的小节里,我们将通过点击不同的按钮进入到对应的组件展示中。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P36_6924.jpg?sign=1739492926-BuhgHVsyqhhWSlb3G5F7lqmiZ6oajnbl-0-1f2c3edd987fae7ceea8d8bd63993254)
图3.1 首页各功能演示选择列表
(4)接下来新建一个页面view,用来展示本小节的内容,代码如下:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P37_39637.jpg?sign=1739492926-Bhbsp6VJb0JMwM7kBTpyCUCaC1JHIcfL-0-63944cf79bac2d81cd7dc86ab4f29492)
运行效果如图3.2所示。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P38_7291.jpg?sign=1739492926-ps4RpPeQUc65Uy7BJ7tFf0e3S3jMPFf9-0-4363674b8c6999f7ab442f29b097257f)
图3.2 view组件点击前后的样式变化
【代码解析】我们给parent-view设置了hover-class,在点击的时候颜色会发生变化。另外,延长了hover-start-time和hover-stay-time的时间,读者可以自行测试代码。最后sub-view中的hover-stop-propagation设置为false,所以点击中间白色部分是不会让parent-view变色的,如果想传递点击态,只需要改为true即可。
3.1.2 滚动视图scroll-view
介绍完了基本的视图容器,我们继续来看滚动视图容器——scroll-view。scroll-view的自带属性如表3.2所示。
表3.2 scroll-view组件的自带属性
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-T38_39638.jpg?sign=1739492926-YMItXTr9jbFkqcbliIXW3g7dT5dToEnv-0-76e3fdcfdc7981e1af8e2814c6a24c92)
【示例3-2】
由于scroll-view组件支持的属性特别多且大多不常用,因此我们只进行基本功能的展示,代码如下:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P39_39640.jpg?sign=1739492926-soeG0KWOBIyrZk5ZMfHv4rXtZc7yPEI6-0-a320e91cf2595aff0a6124ffabbe4205)
运行效果如图3.3所示。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P40_7680.jpg?sign=1739492926-H0AAeoZ2Lt35TxQurPD2TDiNtUL6Ae6m-0-5b56e08e807889a4382209590c0e7db4)
图3.3 scroll-view组件滚动效果
【代码解析】scroll-view的应用十分简单,我们写好标签后,使用scroll-x、scroll-y标记出是横向或纵向滚动,样式方面需要设置宽、高等属性,即可满足大多数需求。
3.1.3 可移动视图movable-view
在手机的使用中,拖动也是一种常见的操作。接下来我们展示一下如何使用可移动视图容器——movable-view。movable-view的自带属性如表3.3所示。
表3.3 movable-view组件的自带属性
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-T41_39645.jpg?sign=1739492926-OsIHXNEkEuchckE5ZlQ7sBCbvCDfLnKB-0-b2018b06a90d8539e813210edfcf693b)
【示例3-3】
使用movable-view组件进行拖动方块的展示,代码如下:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P41_39646.jpg?sign=1739492926-RLc61EGi7OEHbmEfM67yHmBetCbpcKi8-0-273c5086b5612e18472398dac2f68174)
运行效果如图3.4所示。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P42_8012.jpg?sign=1739492926-4u104MlGTQEmAOUE7PqlaTJYysttNTU9-0-4dd22ea77d70645d4056ec04c6fb63a1)
图3.4 movable-view组件拖动效果
【代码解析】这个组件的代码比较少,我们只需要设置movable-area为背景板,并在里面创建一个movable-view即可进行拖动操作,拖动方向direction通常设置为all。movable-view必须在movable-area组件中,并且必须是直接子节点,否则不能移动。
3.1.4 覆盖视图cover-view
cover-view是可以覆盖于原生组件之上的文本视图容器,可覆盖的原生组件包括map、video、canvas、camera、live-player、live-pusher,并且可以与cover-view和cover-image进行嵌套。cover-view的自带属性如表3.4所示。
表3.4 cover-view组件的自带属性
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-T42_39649.jpg?sign=1739492926-NkEpBtswRoO9hsPTJ9HwYAAI0xRaqKwQ-0-bb1f00b54133959010a3a210bf8f2899)
cover-view的属性也只有一个,不算是一个常用的组件。覆盖功能使用CSS的position也可以达到同样的效果,不过直接使用该功能也可以提高一些开发效率。
【示例3-4】
创建一个地图组件,并使用cover-view进行覆盖,代码如下:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P42_39651.jpg?sign=1739492926-mXTAJjmmnr66ivL1pJBqepMH03DsQvyN-0-09084609fba8ec0ed8b3adab338c5249)
运行效果如图3.5所示。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P43_8191.jpg?sign=1739492926-hqMuL3oJfpjqMr8hEA3j7VFjpleAl1Oy-0-4e02c3c092a66c19b45ba82b107c1585)
图3.5 cover-view组件的覆盖效果
【代码解析】在map组件内设置cover-view,就相当于在一个画布里面,坐标会回到左上角,接下来正常编写自己要展示的内容并设置样式即可。
3.1.5 滑块视图swiper
swiper是滑块视图容器,一般可以用作轮播图等效果。目前市面中的App通常都会在首页顶部做一个轮播图,所以该组件还是很常用的。swiper的自带属性如表3.5所示。
表3.5 swiper组件的自带属性
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-T43_39653.jpg?sign=1739492926-3DpOdh4HoirYqicgy6cIt4LwgJjItCUj-0-641c33faa4ef8fb3bd1729499644f5bb)
easing-function的默认值为default,还支持linear(线性动画)、easeInCubic(缓入动画)、easeOutCubic(缓出动画)、easeInOutCubic(缓入缓出动画),读者可以根据喜好自行选择。
【示例3-5】
swiper的属性比较复杂,我们挑选几个常用的来演示,代码如下:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P44_39655.jpg?sign=1739492926-MCevxz02R18th3zVSA6j3JNC5QtR5kFi-0-d5dd1ebbd38f3bbbd9ae4d54bc77b49a)
运行效果如图3.6所示。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P45_8534.jpg?sign=1739492926-rWAHfjiDfDzemCHhZyoKoAcpXRdcnrJ8-0-d501c37ff576792bb9cd851fa6af634f)
图3.6 swiper组件轮播图效果
【代码解析】swiper设置了自动滚动、显示指示器、切换间隔、切换速度、动画效果等属性,这些都可以在表格中找到一一对应的解释。swiper-item是必须放在swiper中使用的,通常轮播图中会放置一些图片,为了方便演示,本例直接用ABC的文字进行替代。