微信小程序开发之——音乐播放器-音乐推荐
一 概述常用组件介绍内容区域滚动轮播图功能按钮热门音乐二 常用组件介绍2.1 scroll-view 组件组件介绍scroll-view组件用于实现可滚动视图区域一般来说,当页面的高度超过要显示区域的高度时,先设置外层容器的高度,使之低于内部的高度,然后在外层容器的样式中设置overflow-y:scroll,就可以实现上下滚动了但是,这种方式只是从样式上实现了滚动,如果需要在滚动到顶部或底部时触
·
一 概述
- 常用组件介绍
- 内容区域滚动
- 轮播图
- 功能按钮
- 热门音乐
二 常用组件介绍
2.1 scroll-view 组件
组件介绍
- scroll-view组件用于实现可滚动视图区域
- 一般来说,当页面的高度超过要显示区域的高度时,先设置外层容器的高度,使之低于内部的高度,然后在外层容器的样式中设置overflow-y:scroll,就可以实现上下滚动了
- 但是,这种方式只是从样式上实现了滚动,如果需要在滚动到顶部或底部时触发事件,就需要手动编写代码来实现了
常用属性
属性 | 类型 | 说明 |
---|---|---|
scroll-x | Boolean | 允许横向滑动,默认为false |
scroll-y | Boolean | 允许纵向滚动,默认为false |
scroll-top | Number/String | 设置竖向滚动条的位置 |
scroll-left | Number/String | 设置横向滚动条的位置 |
bindscrolltoupper | EventHandle | 滚动到顶部/左边时触发的事件 |
bindscrolllower | EventHandle | 滚动到底部/右边时触发的事件 |
scroll-with-animation | Boolean | 在设置滚动条位置时是否使用动画过渡 |
scroll-into-view | String | 设置哪个方向可滚动,则在哪个方向滚动到该元素。值应为某个子元素id(id不能以数字开头) |
bindscroll | EventHandle | 滚动时触发的事件 |
2.2 image组件
组件介绍
微信小程序中提供了image组件来定义图片,类似于HTML中的<img>标签。image组件除了用来显示图片,还支持对图片进行裁剪或缩放,提供了4中缩放模式和9中裁剪模式
image属性
属性 | 类型 | 说明 |
---|---|---|
src | String | 图片资源地址 |
mode | String | 图片裁剪、缩放的模式,默认为scaleToFill |
lazy-load | Boolean | 图片是否懒加载,默认为false。只针对page与scroll-view下的image有效 |
binderror | HandleEvent | 图片发生错误时的事件 |
bindload | HandleEvent | 图片载入完成时的事件 |
4种缩放模式
缩放模式 | 说明 |
---|---|
scaleToFill | 不保持横纵比缩放图片,使图片的宽高完全拉伸至填满image元素。适用于容器与图片宽高比相同的情况,如果不同,图片会变形 |
aspectFit | 保持横纵比缩放图片,使图片的长边能完全显示出来。适用于将图片完整显示出来。例如,详情页的图片 |
aspectFill | 保持横纵比缩放图片,只保证图片的短边能完全显示出来,长边将会发生截取。适用于容器固定,图片自动缩放的情况,如列表页的缩略图 |
widthFix | 宽度不变,高度自动变化,保持原图宽高比不变 |
9种裁剪模式
裁剪模式 | 说明 |
---|---|
top | 不缩放图片,只显示图片的顶部区域 |
bottom | 不缩放图片,只显示图片的底部区域 |
center | 不缩放图片,只显示图片的中间区域 |
left | 不缩放图片,只显示图片的左边区域 |
right | 不缩放图片,只显示图片的右边区域 |
top left | 不缩放图片,只显示图片的左上区域 |
top right | 不缩放图片,只显示图片的右上区域 |
bottom left | 不缩放图片,只显示图片的左下区域 |
bottom right | 不缩放图片,只显示图片的右下区域 |
三 内容区域滚动
修改说明
先编写外层的容器,由于这个页面的高度不固定,内容将来可能会增加或减少,因此使用scroll-view组件作为外层容器,当内容高度超过content区域的显示范围后,可以上下滚动
pages/index/info.wxml
<scroll-view class="content-info" scroll-y>
<view style="background:#eee;height:1000px"></view>
<view>已经达到底部</view>
</scroll-view>
pages/index/index.wxss
.content-info{
height: 100%;
}
::-webkit-scrollbar{
width: 0;
height: 0;
color: transparent;
}
四 轮播图
pages/index/info.wxml(先删除测试view)
<swiper class="content-info-slide" indicator-color="rgba(255,255,255,.5)" indicator-active-color="#fff" indicator-dots circular autoplay>
<swiper-item>
<image src="../images/fj.jpg" />
</swiper-item>
<swiper-item>
<image src="../images/fj.jpg" />
</swiper-item>
<swiper-item>
<image src="../images/fj.jpg" />
</swiper-item>
</swiper>
pages/index/indx.wxss
.content-info-slide{
height: 302rpx;
margin-bottom: 20px;
}
.content-info-slide image{
width: 100%;
height: 100%;
}
五 功能按钮
布局文件pages/index/info.wxml(轮播图下方)
<!--功能按钮-->
<view class="content-info-portal">
<view>
<image src="../images/run.png" />
<text>私人FM</text>
</view>
<view>
<image src="../images/number.png" />
<text>每日歌曲推荐</text>
</view>
<view>
<image src="../images/rank.png" />
<text>云音乐新歌榜</text>
</view>
</view>
配置文件pages/index/indx.wxss
.content-info-portal{
display: flex;
margin-bottom: 15px;
}
.content-info-portal >view{
flex: 1;
font-size: 11pt;
text-align: center;
}
.content-info-portal image{
width: 120rpx;
height: 120rpx;
display: block;
margin: 20rpx auto;
}
六 热门音乐
布局文件 pages/index/info.wxml(功能按钮下方)
<view class="content-info-list">
<view class="list-title">推荐歌曲</view>
<view class="list-inner">
<view class="list-item">
<image src="../images/music.png" />
<view>紫罗兰</view>
</view>
<view class="list-item">
<image src="../images/music.png" />
<view>五月之歌</view>
</view>
<view class="list-item">
<image src="../images/music.png" />
<view>菩提树</view>
</view>
<view class="list-item">
<image src="../images/music.png" />
<view>欢乐颂</view>
</view>
<view class="list-item">
<image src="../images/music.png" />
<view>安魂曲</view>
</view>
<view class="list-item">
<image src="../images/music.png" />
<view>摇篮曲</view>
</view>
</view>
</view>
配置文件pages/index/indx.wxss
.content-info-list{
font-size: 11pt;
margin-bottom: 20rpx;
}
.content-info-list>.list-title{
margin:20rpx 35rpx;
}
.content-info-list >.list-inner{
display: flex;
flex-wrap: wrap;
margin: 0 20rpx;
}
.content-info-list>.list-inner>.list-item{
flex:1;
}
.content-info-list>.list-inner>.list-item>image{
display:block;
width: 200rpx;
height: 200rpx;
margin:0 auto;
border-radius: 10rpx;
border:1rpx solid #555;
margin: 10rpx auto;
font-size:10pt;
}
七 效果图
更多推荐
已为社区贡献3条内容
所有评论(0)