• [Vue音乐项目] 第八节 歌手页面(页面展示+滚动效果)


    上节获取并处理了数据,本节展示数据,展示数据的组件可以抽象出来单独做成一个组件

    1. 打开src/base/listview/index.vue(没有的话创建一个),敲写如下代码
      // listview/index.vue
      <template>
          //[3] 使用组件
          <m-scroll>
              <ul>
                  //遍历第一层
                  <li class="list-group" v-for="(group,key) in data" :key="key" ref="listgroup">
                      //分组标题
                      <h2 class="list-group-title">{{group.title}}</h2>
                      <ul>
                          //遍历第二层
                          <li class="list-group-item" 
                          v-for="(item,index) in group.data" :key="index">
                              //歌手头像
                              <img class="avatar" v-lazy="item.avatar" alt="">
                              //歌手名字
                              <span class="name">{{item.name}}</span>
                          </li>
                      </ul>
                  </li>
              </ul>
              //右侧浮动(字母索引)
              <div class="list-shortcut" >
                  <ul>
                      //遍历并输出title的第一个字,如‘热门’输出‘热’
                      <li class="item"  v-for="(item,index) in menu" :key="index">
                          {{item}}
                      </li>
                  </ul>
              </div>
          </m-scroll>
      </template>
      <script>
          //[1] 导入组件
          import scroll from 'base/scroll'
          export default {
              data() {
                  return {
                      //歌手数据
                      data: null
                  }
              },
              computed: {
                  //歌手索引
                  menu() {
                      return this.data.map((group)=>{
                          return group.title.substr(0,1)
                      })
                  },
              }
              //[2] 注册组件
              components: {
                  'm-scroll': scroll
              }
          }
      </script>
      <style lang="stylus" scoped>
        @import "~common/stylus/variable"
          
        .listview
          position: relative
           100%
          height: 90vh
          overflow: hidden
          background: $color-background
          //[1] 歌手列表
          .list-group
            padding-bottom: 30px
            .list-group-title
              height: 30px
              line-height: 30px
              padding-left: 20px
              font-size: $font-size-small
              //color: $color-text-l
              color: #fff
              background: $color-highlight-background
            .list-group-item
              display: flex
              align-items: center
              padding: 20px 0 0 30px
              .avatar
                 50px
                height: 50px
                border-radius: 50%
              .name
                margin-left: 20px
                color: $color-text-l
                font-size: $font-size-medium
          //[2]歌手索引
          .list-shortcut
            position: absolute
            z-index: 30
            right: 0
            top: 50%
            transform: translateY(-50%)
             20px
            padding: 20px 0
            border-radius: 10px
            text-align: center
            background: $color-background-d
            font-family: Helvetica
            .item
              padding: 3px
              line-height: 1
              color: $color-text-l
              font-size: $font-size-small
              &.current
                color: $color-theme
          //[3] 固定字栏
          .list-fixed
            position: absolute
            top: 0
            left: 0
             100%
            .fixed-title
              height: 30px
              line-height: 30px
              padding-left: 20px
              font-size: $font-size-small
              //color: $color-text-l
              color: #fff
              background: $color-highlight-background
          //[4]加载动画 ps:暂时用不到
          .loading-container
            position: absolute
             100%
            top: 50%
            transform: translateY(-50%)
      </style>
      
      
  • 相关阅读:
    Ajax技术应用方面
    关于tomcat环境配置的疑惑(tomcat未进行任何环境配置仍成功显示welcome页面)
    jsp中动态include与静态include的区别
    简单说说tomcat7.0的配置
    传统开发模式与Ajax开发模式的区别
    认识Ajax
    tomcat与jdk的关系
    org.hibernate.TransactionException: nested transactions not supported
    解读Tomcat7.0的startup.bat批处理命令
    forward和redirect的区别
  • 原文地址:https://www.cnblogs.com/juetan/p/13861299.html
Copyright © 2020-2023  润新知