uniapp

(pages/index/index)

<template>

<!-- 模板里只能写uni-app自己提供的组件 -->

<view class="content">

<swiper class="swiper" :indicator-dots="true" indicator-color="#eee" indicator-active-color="#f07c82" :autoplay="true" circular="false" :interval="3000" :duration="1000">

<swiper-item>

<image class="img" src="http://p1.music.126.net/xNtAAaRXa2AzPcMDJ2zCcA==/109951167377414629.jpg?imageView&quality=89"></image>

</swiper-item>

<swiper-item>

<image class="img" src="http://p1.music.126.net/GB9puNTOuUxOiiHUUG-bqA==/109951167380076547.jpg?imageView&quality=89"></image>

</swiper-item>

<swiper-item>

<image class="img" src="http://p1.music.126.net/RjHRPCCrxbudCRvqM3Jyeg==/109951167377425712.jpg?imageView&quality=89"></image>

</swiper-item>

</swiper>

<!-- 分类 -->

<view class="types">

<view class="item" :class="{active:activeIndex===index}"

@click="activeIndex=index" v-for="(item,index) in types" :key="item.id">{{item.name}}</view>

</view>

<!-- 流行歌曲条件渲染 -->

<view class="songs" v-if="activeIndex===0">

<!-- 隔行变色 -->

<view :class="{bg:index%2===0}" class="item" v-for="(item,index) in popularSongs">

<text>{{item.id}}--{{item.name}}</text>

<view class="btn" @click="delPopular(index)">删除</view>

</view>

</view>

<!-- 网络歌曲条件渲染 -->

<view class="songs" v-if="activeIndex===1">

<view :class="{bg:index%2===0}" class="item" v-for="(item,index) in networkSongs">

<text>{{item.id}}--{{item.name}}</text>

<view class="btn" @click="delNetwork(index)">删除</view>

</view>

</view>

</view>

</template>

<script>

import {$msg,$confirm} from '../../utils/msg.js'

//js这里的语法是vue没有太多区别

export default {

//定义属性

data() {

return {

//分类高亮索引

activeIndex:0,

//分类数组

types:[

{

  id:1,

  name:'流行歌曲'

    },

{

  id:2,

  name:'网络歌曲'

},

{

  id:3,

  name:'英语歌曲'

},

],

//流行歌曲数组

popularSongs:[{

  id:1,

  name:'江南'

    },

{

  id:2,

  name:'小酒窝'

},],

//网络歌曲数组

networkSongs:[{

  id:1,

  name:'素颜'

    },

{

  id:2,

  name:'绅士'

}],

}

},

//定义方法

methods: {

//删除流行歌曲

async delPopular(index){

//确认框

await $confirm("确认删除吗")

this.popularSongs.splice(index,1)

$msg('删除成功')

}

},

//页面的生命周期函数(同小程序一样)

//监听页面加载

onLoad() {

// console.log('页面加载完成');

},

//监听页面显示

onShow() {

// console.log('页面显示完成');

},

//监听页面初次渲染完成

onReady() {

// console.log('页面初次渲染完成');

},

//监听页面隐藏

onHide() {

// console.log('页面隐藏');

},

//监听页面卸载

onUnload() {

// console.log('页面卸载');

},

//组件的生命周期函数(同vue一样)

beforeCreate(){

// console.log('组件创建之前,此时还不能使用数据');

},

created(){

// console.log('组件创建完成,此时可以操作数据');

},

beforeMount(){

// console.log('页面挂载之前,此时还不能手动操作dom');

},

mounted(){

// console.log('页面挂载完成,此时可以手动操作dom');

},

beforeUpdate(){

// console.log('数据更新完成,页面重新挂载之前');

},

updated(){

// console.log('数据更新完成,页面重新挂载完成');

},

beforeDestroy(){

// console.log('组件销毁之前');

},

destroyed(){

// console.log('组件销毁完成');

}

}

</script>

<style lang="scss">

.content {

//轮播图样式

.swiper{

height: calc(100vw/1080*420);

.img{

width: 100vw;

height: calc(100vw/1080*420);

}

}

}

//分类样式

.types{

display: flex;

justify-content: space-between;

.item{

width: 180rpx;

height: 160rpx;

background-color: $bg-color2;

color: $font_color2;

font-size: 28rpx;

line-height: 160rpx;

text-align: center;

&.active{

background-color: $bg-color1;

color: $font_color1;

}

}

}

.songs{

padding: 10rpx;

font-size: 28rpx;

.item{

padding: 10rpx 0;

display: flex;

justify-content: space-between;

background-color: #eee;

&.bg{

background-color: #f08990;

}

.btn{

width: 100rpx;

height: 40rpx;

border: 1px solid #ccc;

text-align: center;

line-height: 40rpx;

border-radius: 10rpx;

}

}

}

</style>

(utils/msg)

//消息框方法

export let $msg=(title,icon="success",duration=1000)=>{

//提示

uni.showToast({

title,

icon,

mask:true,

duration,

})

}

//确认框

export let $confirm=(content)=>{

return new Promise((resolve,reject)=>{

//确认框

uni.showModal({

content:"确认删除吗",

success:({confirm})=>{

if(confirm){

resolve()

}

}

})

})

}

(app.vue)

<script>

export default {

//项目生命周期

//初始化完成时触发(全局只触发一次)

onLaunch: function() {

// console.log('App Launch')

},

//每次启动应用时触发,从后台进入前台显示时触发

onShow: function() {

// console.log('App Show')

},

//每次隐藏应用时触发,从前台进入后台时触发

onHide: function() {

// console.log('App Hide')

}

}

</script>

<style>

/*每个页面公共css */

*{

margin: 0;

padding: 0;

}

.flex{

display: flex;

}

.j-s{

justify-content: space-between;

}

.j-c{

justify-content: center;

}

.a-c{

align-items: center;

}

</style>

(pages.json)

//页面配置 相当于路由

{

"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages

//配置所有页面信息

{

"path": "pages/index/index",

"style": {

//单独设置页面的顶部导航栏标题,没有设置 采用全局设置

"navigationBarTitleText": "首页"

}

}

    ,{

            "path" : "pages/list/list",

            "style" :                                                                                   

            {

                "navigationBarTitleText": "列表"


            }


        }

        ,{

            "path" : "pages/order/order",

            "style" :                                                                                   

            {

                "navigationBarTitleText": "订单"


            }


        }

        ,{

            "path" : "pages/mine/mine",

            "style" :                                                                                   

            {

                "navigationBarTitleText": "我的"


            }


        }

    ],

//配置全局外观

"globalStyle": {

//顶部导航栏标题颜色

"navigationBarTextStyle": "white",

//顶部导航栏标题内容

"navigationBarTitleText": "my-app",

//顶部导航栏背景颜色

"navigationBarBackgroundColor": "#f07c82",

"backgroundColor": "#F8F8F8"

},

"tabBar": {

"color": "#cccccc",

"selectedColor": "#f07c82",

"list": [

{

"pagePath": "./pages/index/index",

"iconPath": "",

"selectedIconPath": "",

"text": "首页"

},

{

"pagePath": "./pages/list/list",

"iconPath": "",

"selectedIconPath": "",

"text": "列表"

},

{

"pagePath": "./pages/order/order",

"iconPath": "",

"selectedIconPath": "",

"text": "订单"

},

{

"pagePath": "./pages/mine/mine",

"iconPath": "",

"selectedIconPath": "",

"text": "我的"

}

]

}

}

(uni.sass)

//全局主题样式

//背景颜色

$bg_color1:#f07c82;

$bg_color2:#eeeeee;

//文字颜色

$font_color1:#ffffff;

$font_color2:#000000;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,914评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,935评论 2 383
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,531评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,309评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,381评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,730评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,882评论 3 404
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,643评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,095评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,448评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,566评论 1 339
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,253评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,829评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,715评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,945评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,248评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,440评论 2 348

推荐阅读更多精彩内容