![微信小程序开发从零开始学](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=1739231606-yAjv3Q5KWwohS4qBdUPycff3z0jSB3Q5-0-fb7a0ddadd1c4f8777d02b7e53786ff6)
【示例3-1】
(1)新建一个项目components,用于本节的代码展示。
(2)清空index.wxml和index.js的代码,并输入以下代码:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P35_39635.jpg?sign=1739231606-QfE0V1shkynlJqMBuRGnC9zGs18TfSL7-0-905868fa5d04a19ca9799adc837635f5)
(3)运行代码,首页效果如图3.1所示。在接下来的小节里,我们将通过点击不同的按钮进入到对应的组件展示中。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P36_6924.jpg?sign=1739231606-Gf1ND59IOgGvrN0nXeEbr0SfYbcoW0HW-0-258064e500bb4920db333b12942e2c42)
图3.1 首页各功能演示选择列表
(4)接下来新建一个页面view,用来展示本小节的内容,代码如下:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P37_39637.jpg?sign=1739231606-FZFzZ4rC2nuzFfkonlxogLLBioCBwiFk-0-230ec42c5e5fe9066ad9298cb041b6fa)
运行效果如图3.2所示。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P38_7291.jpg?sign=1739231606-EFbJJDtNtg9AuaCoAa8PPgJwZOhi0PuO-0-fd61977c995ad61542ca777d86941fa9)
图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=1739231606-jShbN7FlyAAB7g7xH9VPJN56ehoRKU61-0-ca5fe418a816e802d1332e3d51351b3c)
【示例3-2】
由于scroll-view组件支持的属性特别多且大多不常用,因此我们只进行基本功能的展示,代码如下:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P39_39640.jpg?sign=1739231606-ckQXBGrd4j0KD51wO45FcWHdl5kIvFQn-0-ec2182af688dc0be856391e42f16c3b3)
运行效果如图3.3所示。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P40_7680.jpg?sign=1739231606-qNmzI55hFPSEtYGoRJjUjzCD8HDxOff7-0-666ee404d21cd25cebe07d2c864ac470)
图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=1739231606-B7ehf3jHVUnqHv6PMqwH68dp7JLdxkEz-0-516477ac0e909285575dbc52a8f71181)
【示例3-3】
使用movable-view组件进行拖动方块的展示,代码如下:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P41_39646.jpg?sign=1739231606-GoLGjfpFRCK0TiNAncsXcaeFWvLSABRF-0-d79bc8c322a869dd594b989d1ec64f6d)
运行效果如图3.4所示。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P42_8012.jpg?sign=1739231606-xHQCoohjgVRLtovJAhjGMDzJ7NsXW0xh-0-736495fd87a5f942456cf0bf6999744b)
图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=1739231606-Ni54onyNyymcFeK9caNV9kzMsH5qujI9-0-b4e79675f72c8a349bb0742cb6d7fdfd)
cover-view的属性也只有一个,不算是一个常用的组件。覆盖功能使用CSS的position也可以达到同样的效果,不过直接使用该功能也可以提高一些开发效率。
【示例3-4】
创建一个地图组件,并使用cover-view进行覆盖,代码如下:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P42_39651.jpg?sign=1739231606-0I2tebD5QymlepFW0KCWcLUgo1JvdEAI-0-ea71f8172bb40efae410cc83af942a37)
运行效果如图3.5所示。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P43_8191.jpg?sign=1739231606-gqBShdg8chWJQcW4Q4BolaMaugHY8Gvq-0-5df2365a814c26ab3c024eae7a252b25)
图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=1739231606-NUDcn8sdpocG6jhk9vnmUBRxGTG6R2gZ-0-4a3ee5f57eceb21441c30475ad44ef1c)
easing-function的默认值为default,还支持linear(线性动画)、easeInCubic(缓入动画)、easeOutCubic(缓出动画)、easeInOutCubic(缓入缓出动画),读者可以根据喜好自行选择。
【示例3-5】
swiper的属性比较复杂,我们挑选几个常用的来演示,代码如下:
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P44_39655.jpg?sign=1739231606-KLyRsJYuykJFNh6gghsRyqZpkHQ7g0EV-0-e2b956792029a495e9f81afb921e8f4c)
运行效果如图3.6所示。
![](https://epubservercos.yuewen.com/84397A/23721403209382106/epubprivate/OEBPS/Images/Figure-P45_8534.jpg?sign=1739231606-DcTBQykM2WG7SZceJAOmnajtf4hESMvS-0-7bcae5556186db436ddc65daeaa89c7a)
图3.6 swiper组件轮播图效果
【代码解析】swiper设置了自动滚动、显示指示器、切换间隔、切换速度、动画效果等属性,这些都可以在表格中找到一一对应的解释。swiper-item是必须放在swiper中使用的,通常轮播图中会放置一些图片,为了方便演示,本例直接用ABC的文字进行替代。