草庐IT

微信小程序 13 排行榜的编写

牟泉禹[Dark Cat] 2023-04-15 原文

13.1 先写 html 结构


  1. 先观察 设计稿

  2. 分析有哪些组件。并把它们 适当的写好。

swiper:整个 排行榜是 从左向右 滑动的,所以 必须要有这个 轮播图 组件。

image:图片组件。

text:文本组件。

view:视图区域组件,类似于 div,没有实际的 效果。

解析:每个榜单的名字,都是随着 榜单 而存在的。所以 必须 把它 嵌套到 swiperItem 里面去。如果后端把数据处理的完美的话,肯定 不会 传过来 一个 乱序的 榜单,所以我们的 名次,就是遍历到第几个的计数。

<view class="topList">
    <swiper class="topListSwiper" wx:for="{{所有的榜单}}">
        <swiper-item class="topListSwiperItem" wx:for="{{每个榜单}}">
            <view class="title">{{每个表单的名字}}</view>
            <view class="musicItem" wx:for="{{每个表单里所有的音乐}}">
                <image src="{{每个音乐的图片url}}"></image>
                <text class="count">{{每个音乐的名次}}</text>
                <text class="musicName">{{每个音乐的name}}</text>
            </view>
        </swiper-item>
    </swiper>

</view>

13.2 css 的编写 -> 难点

  1. 还是 先看 设计稿 然后 分析

  • 首先 所有的音乐 都得 垂直的 排列。

  • 然后 整体这个区域,都要 跟 四个边 有一定的间隔。

  • 每个榜单 都是 3 首音乐在 展示,所以 Swiper 的高度 是可以固定下来的。

  • 每个榜单的标题,也跟 下面的 音乐区 有间隔。

  • 每个 音乐的 名字 和 排名 都是 垂直 居中的。

  • 图片 是圆角的,也有固定大小。

用到了 Swiper 组件的 特性玩法:前面或后面 露出 一点儿内容的配置。next-margin="50rpx" 意思是 露出 下一个页面 50rpx。

.topList{
    padding:20rpx;
}

.topListSwiper {
    height: 500rpx;
}

.swiperItem {
    width: 96%;
    background: #fbfbfb;
}

.swiperItem .title {
    font-size: 30rpx;
    line-height: 80rpx;
}

.musicItem {
    /*当一个 元素设置为 flex,其子元素会自动称为 block 元素*/
    display: flex;
    margin-bottom: 20rpx;
}

.musicItem image {
    width: 100rpx;
    height: 100rpx;
    border-radius: 6rpx;
}

.musicItem .count {
    width: 100rpx;
    height: 100rpx;
    text-align: center;
    line-height: 100rpx;
}

.musicItem .musicName {
    height: 100rpx;
    line-height: 100rpx;
}
<view class="topList">
        <NavHeader title="排行区" nav="热歌风向标"></NavHeader>

<!--排行榜内容区-->
        <swiper class="topListSwiper" circular next-margin="50rpx">
            <swiper-item class="swiperItem" wx:for="{{topList}}" wx:key="name" wx:for-item="topListItem">
                <view class="title">{{topListItem.name}}</view>
                <view class="musicItem" wx:for="{{topListItem.tracks}}" wx:key="id" wx:for-item="musicItem">
                    <image src="{{musicItem.al.picUrl}}"></image>
                    <text class="count">{{index + 1}}</text>
                    <text class="musicName">{{musicItem.name}}</text>
                </view>
            </swiper-item>
        </swiper>
    </view>

13.3 获取到 服务器端的数据

data: {
        banners:[], // 轮播图的数据
        recommendList: [], // 推荐歌单
        topList: [] // 排行榜
    },

    /**
     * 生命周期函数--监听页面加载
     */ async onLoad(options) {
        let bannerListData = await request("banner");
        let recommendListData = await request("personalized",{limit:10});
        let topListDataArr = [];
        for(let i = 0; i <= 20; ++i){
            let topListData = await request("top/list",{idx:i});
            let topListItem = {
                name:topListData.playlist.name,
                tracks:topListData.playlist.tracks.slice(0,3)
            };
            topListDataArr.push(topListItem);
        }

        this.setData({
            banners: bannerListData.banners,
            recommendList: recommendListData.result,
            topList: topListDataArr
        })

    },

因为 playlist 还套了一层 数组,而这个 数组 才是 我们 想要的 所有歌曲的 数据,所以 我们 肯定 要 用到 一个 for 循环 来 把这里面的 每个 数组 都拿到。

有关微信小程序 13 排行榜的编写的更多相关文章

  1. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. ruby - 安装libv8(3.11.8.13)出错,Bundler无法继续 - 2

    运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin

  4. 微信小程序通过字典表匹配对应数据 - 2

    前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立

  5. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  6. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  7. ruby-on-rails - 如何为空白字段编写 rspec? [Rails3.1] - 2

    我使用rails3.1+rspec和factorygirl。我对必填字段(validates_presence_of)的验证工作正常。我如何让测试将该事实用作“成功”而不是“失败”规范是:describe"Addanindustrywithnoname"docontext"Unabletocreatearecordwhenthenameisblank"dosubjectdoind=Factory.create(:industry_name_blank)endit{shouldbe_invalid}endend但是我失败了:Failures:1)Addanindustrywithnona

  8. ruby-on-rails - gem install rmagick -v 2.13.1 错误 Failed to build gem native extension on Mac OS 10.9.1 - 2

    我已经通过提供MagickWand.h的路径尝试了一切,我安装了命令工具。谁能帮帮我?$geminstallrmagick-v2.13.1Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingrmagick:ERROR:Failedtobuildgemnativeextension./Users/ghazanfarali/.rvm/rubies/ruby-1.8.7-p357/bin/rubyextconf.rbcheckingforRubyversion>=1.8.5...yescheckingfor/

  9. ruby-on-rails - 尝试为 Rails 中的用户名验证编写 REGEX - 2

    我正在尝试用Ruby(Rails)编写一个正则表达式,以便用户名的字符仅包含数字和字母(也没有空格)。我有这个正则表达式,/^[a-zA-Z0-9]+$/,但它似乎没有用,我在Rails中收到一个错误,说“The如果正则表达式使用多行anchor(^或$),这可能会带来安全风险。您是要使用\A和\z,还是忘记添加:multiline=>true选项?"我的user.rb模型中此实现的完整代码是:classUser我做错了什么以及如何修复此正则表达式,使其仅对数字和字母有效而不对空格有效?谢谢。 最佳答案 简短回答:使用/\A[a-z

  10. ruby-on-rails - 如何编写跨模型、 Controller 和 View 的 Rails mixin - 2

    为了减少我的小Rails应用程序中的代码重复,我一直致力于将我的模型之间的通用代码放入它自己的单独模块中,到目前为止一切顺利。模型的东西相当简单,我只需要在开头包含模块,例如:classIso这工作正常,但是现在,我将有一些Controller和View代码,这些代码也将在这些模型之间通用,到目前为止,我有这个用于我的可发送内容:#Thisisamodulethatisusedforpages/formsthatarecanbe"sent"#eitherviafax,email,orprinted.moduleSendablemoduleModeldefself.included(kl

随机推荐