Skip to content

Commit 15648c3

Browse files
committed
loading组件
1 parent 783e72a commit 15648c3

File tree

5 files changed

+72
-27
lines changed

5 files changed

+72
-27
lines changed

src/assets/image/logo.png

11.3 KB
Loading

src/base/loading/loading.gif

3.91 KB
Loading

src/base/loading/loading.vue

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<template>
2+
<div class="loading">
3+
加载
4+
<img src="./loading.gif" alt="load" width="24" height="24" />
5+
<p class="desc">{{title}}</p>
6+
</div>
7+
</template>
8+
9+
<script>
10+
export default {
11+
name: 'Loading',
12+
props: {
13+
title: {
14+
type: String,
15+
default: '玩命加载中..'
16+
}
17+
}
18+
}
19+
</script>
20+
21+
<style lang="stylus" scoped>
22+
@import '~assets/stylus/variable'
23+
24+
.loading
25+
width 100%
26+
text-align center
27+
.desc
28+
line-height 20px
29+
font-size $font-size-small
30+
color $color-text-l
31+
</style>

src/components/recommend/recommend.vue

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,41 @@
11
<template>
22
<div class="recommend">
33
<scroll class="recommend-content" :data="discList" ref="scroll">
4-
<!-- 轮播 -->
5-
<!-- v-if: 确保slider中数据加载了,再执行slider组件mounted中dom操作 -->
6-
<div v-if="recommends.length" class="slider-wrapper">
7-
<Slider>
8-
<div v-for="(item, index) in recommends" :key=index>
9-
<a href="javascript:;">
10-
<!-- fastclick和scroll点击事件冲突:加类css属性 -->
11-
<img :src="item.picUrl" @load="loadImage" class="needsclick" />
12-
</a>
13-
</div>
14-
</Slider>
15-
</div>
16-
<!-- 歌单列表 -->
17-
<div class="recommend-list">
18-
<h1 class="list-title">热门歌单推荐</h1>
19-
<ul>
20-
<li v-for="(item, index) in discList" :key=index class="item">
21-
<div class="icon">
22-
<img v-lazy="item.imgurl" alt="img" width="60" height="60" />
23-
</div>
24-
<div class="text">
25-
<h2 class="name" v-html="item.creator.name"></h2>
26-
<p class="desc">{{item.dissname}}</p>
4+
<!-- div标签:解决列表挤到顶部无法调整位置 -->
5+
<div>
6+
<!-- 轮播 -->
7+
<!-- v-if: 确保slider中数据加载了,再执行slider组件mounted中dom操作 -->
8+
<div v-if="recommends.length" class="slider-wrapper">
9+
<Slider>
10+
<div v-for="(item, index) in recommends" :key=index>
11+
<a href="javascript:;">
12+
<!-- fastclick和scroll点击事件冲突:加类css属性 -->
13+
<img :src="item.picUrl" @load="loadImage" class="needsclick" />
14+
</a>
2715
</div>
28-
</li>
29-
</ul>
16+
</Slider>
17+
</div>
18+
<!-- 歌单列表 -->
19+
<div class="recommend-list">
20+
<h1 class="list-title">热门歌单推荐</h1>
21+
<ul>
22+
<li v-for="(item, index) in discList" :key=index class="item">
23+
<div class="icon">
24+
<img v-lazy="item.imgurl" alt="img" width="60" height="60" />
25+
</div>
26+
<div class="text">
27+
<h2 class="name" v-html="item.creator.name"></h2>
28+
<p class="desc">{{item.dissname}}</p>
29+
</div>
30+
</li>
31+
</ul>
32+
</div>
33+
</div>
34+
<div class="loading-container" v-show="!discList.length">
35+
<loading></loading>
3036
</div>
3137
</scroll>
38+
3239
</div>
3340
</template>
3441

@@ -37,12 +44,14 @@ import { getRecommend, getDiscList } from 'api/recommend'
3744
import { ERR_OK } from 'api/config'
3845
import Slider from 'base/slider/slider'
3946
import Scroll from 'base/scroll/scroll'
47+
import Loading from 'base/loading/loading'
4048
4149
export default {
4250
name: 'Recommend',
4351
components: {
4452
Slider,
45-
Scroll
53+
Scroll,
54+
Loading
4655
},
4756
data () {
4857
return {
@@ -127,4 +136,9 @@ export default {
127136
color $color-text
128137
.desc
129138
color $color-text-d
139+
.loading-container
140+
position absolute
141+
width 100%
142+
top 50%
143+
transform translateY(-50%)
130144
</style>

src/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import VueLazyLoad from 'vue-lazyload'
1313
fastclick.attach(document.body)
1414

1515
Vue.use(VueLazyLoad, {
16-
loading: require('assets/image/logo1.png')
16+
loading: require('assets/image/logo.png')
1717
})
1818

1919
Vue.config.productionTip = false

0 commit comments

Comments
 (0)