kgc新聞

(src/router/index.js)

import Vue from 'vue'

import VueRouter from 'vue-router'

Vue.use(VueRouter)

const routes = [

?{

? ?path:'/',

? ?component:()=>import('../views/index.vue')

?},

?{

? ?path:'/channelManage',

? ?component:()=>import('../views/channelManage.vue')

?}

]

const router = new VueRouter({

? routes

})

export default router

(src/main.js)

import Vue from 'vue'

import App from './App.vue'

import router from './router'

import store from './store'

Vue.config.productionTip = false

import axios from 'axios'

Vue.prototype.$axios = axios

new Vue({

? router,

? store,

? render: h => h(App)

}).$mount('#app')

(src/views/index.vue)

<template>

<div>

? <vNav></vNav>

? <div class="main">

? ? <div v-for="(item,index) in news" :key="index" class="item">

? ? ? <img :src="item.pic">

? ? ? <div class="right">

? ? ? ? <div class="title">{{item.title}}</div>

? ? ? ? <div class="bottom">

? ? ? ? ? <div class="time">{{item.time}}</div>

? ? ? ? ? <div class="type">{{item.src}}</div>

? ? ? ? </div>

? ? ? </div>

? ? </div>

? </div>

</div>

</template>

<script>

import vNav from '../components/vNav.vue'

export default {

? components:{

? ? vNav

? },

? data() {

? ? return {

? ? ? news:[]

? ? }

? },

? mounted() {

? ? this.$axios.get('json/news.json').then(({data:{result:{list}}})=>{

? ? ? this.news = list

? ? })

? },

}

</script>

<style scoped lang='scss'>

.main{

? font-size: 14px;

?.item{

? ?padding: 6px;

? ?display: flex;

? ?border-bottom: 1px solid #ccc;

? ?img{

? ? ?width: 100px;

? ? ?height: 100px;

? ?}

? ?.right{

? ? ?margin-left: 6px;

? ? ?flex: 1;

? ? ?display: flex;

? ? ?flex-direction: column;

? ? ?justify-content: space-between;

? ? ?.bottom{

? ? ? ?display: flex;

? ? ? ?justify-content: space-between;

? ? ? ?font-size: 12px;

? ? ? ?color: #666;

? ? ?}

? ?}

?}

}

</style>

(src/App.vue)

<template>

? <div id="app">

? ? <router-view/>

? </div>

</template>

<script>

import axios from 'axios'

export default {

? mounted() {

? ? axios.get('json/nav.json').then(({data:{result}})=>{

? ? ? this.$store.dispatch('muChannels',result)

? ? })

? },

}

</script>

<style lang="scss">

*{

? margin: 0;

? padding: 0;

? list-style: none;

? text-decoration: none;

? outline: none;

}

html{

? font-size: 20px;

}

</style>

(src/components/vNav.vue)

<template>

<div class="nav">

? <div class="title">KGC新聞</div>

? <div class="list">

? ? <ul class="itmes">

? ? ? <li v-for="(item,index) in myNav" :key="index">{{item}}</li>

? ? </ul>

? ? <div class="add" @click="$router.push('/channelManage')">

? ? ? <img src="../assets/images/add.png">

? ? </div>

? </div>

</div>

</template>

<script>

export default {

? computed:{

? ? myNav(){

? ? ? return this.$store.state.myNav

? ? }

? }

}

</script>

<style scoped lang='scss'>

.nav{

? font-size: 14px;

? .title{

? ? height: 1.5rem;

? ? line-height: 1.5rem;

? ? background: #d43d3d;

? ? font-weight: bold;

? ? color: white;

? ? text-align: center;

? }

? .list{

? ? display: flex;

? ? justify-content: space-between;

? ? align-items: center;

? ? height: 1.5rem;

? ? background: #f4f5f6;

? ? color: #505050;

? ? .itmes{

? ? ? flex: 1;

? ? ? display: flex;

? ? ? align-items: center;

? ? ? overflow-x: scroll;

? ? ? li{

? ? ? ? padding: 0 15px;

? ? ? ? white-space: nowrap;

? ? ? }

? ? }

? ? .add{

? ? ? height: 1.5rem;

? ? ? width: 1.5rem;

? ? ? img{

? ? ? ? height: 1.5rem;

? ? ? ? width: 1.5rem;

? ? ? ? border-left: 1px solid #ccc;

? ? ? }

? ? }

? }

}

</style>

(src/store/index.js)

import Vue from 'vue'

import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({

? state: {

? ? allNav:[],

? ? myNav:[]

? },

? getters: {

? },

? mutations: {

? ? muChannels(state,val){

? ? ? state.allNav = val

? ? },

? ? increment(state,val){

? ? ? state.myNav.push(state.allNav[val])

? ? ? state.allNav.splice(val,1)

? ? },

? ? decrement(state,val){

? ? ? state.allNav.push(state.myNav[val])

? ? ? state.myNav.splice(val,1)

? ? }

? },

? actions: {

? ? muChannels(store,val){

? ? ? store.commit('muChannels',val)

? ? },

? ? increment(store,val){

? ? ? store.commit('increment',val)

? ? },

? ? decrement(store,val){

? ? ? store.commit('decrement',val)

? ? }

? },

? modules: {

? }

})

(src/views/channelManage.vue)

<template>

? <div class="channel">

? ? <div class="title">

? ? ? <div class="img" @click="$router.push('/')">

? ? ? ? <img src="../assets/images/back.png">

? ? ? </div>

? ? ? <div class="content">頻道管理</div>

? ? </div>

? ? <div class="box">

? ? ? <div>點(diǎn)擊刪除以下頻道</div>

? ? ? <ul>

? ? ? ? <li @click="del(index)" v-for="(item,index) in myNav" :key="index">{{item}}</li>

? ? ? </ul>

? ? </div>

? ? <div class="box">

? ? ? <div>點(diǎn)擊添加以下頻道</div>

? ? ? <ul>

? ? ? ? <li @click="add(index)" v-for="(item,index) in allNav" :key="index">{{item}}</li>

? ? ? </ul>

? ? </div>

? </div>

</template>

<script>

export default {

? computed:{

? ? myNav(){

? ? ? return this.$store.state.myNav

? ? },

? ? allNav(){

? ? ? return this.$store.state.allNav

? ? }

? },

? methods: {

? ? add(index){

? ? ? this.$store.dispatch('increment',index)

? ? },

? ? del(index){

? ? ? this.$store.dispatch('decrement',index)

? ? }

? },

};

</script>

<style scoped lang="scss">

.channel{

? font-size: 14px;

? .title{

? ? height: 2rem;

? ? background: #d43d3d;

? ? display: flex;

? ? align-items: center;

? ? .img{

? ? ? padding: 0 5px;

? ? ? display: flex;

? ? ? align-items: center;

? ? ? img{

? ? ? ? width: 1.5rem;

? ? ? }

? ? }

? ? .content{

? ? ? flex: 1;

? ? ? font-size: 16px;

? ? ? font-weight: bold;

? ? ? color: white;

? ? ? text-align: center;

? ? }

? }

? .box{

? ? padding: 10px;

? ? ul{

? ? ? display: flex;

? ? ? flex-wrap: wrap;

? ? ? li{

? ? ? ? padding: 2px;

? ? ? ? width: 60px;

? ? ? ? text-align: center;

? ? ? ? border: 1px solid #ccc;

? ? ? ? margin-right: 20px;

? ? ? ? margin-top: 4px;

? ? ? }

? ? }

? }

}

</style>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末落包,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撞反,更是在濱河造成了極大的恐慌妥色,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遏片,死亡現(xiàn)場離奇詭異,居然都是意外死亡撮竿,警方通過查閱死者的電腦和手機(jī)吮便,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來幢踏,“玉大人髓需,你說我怎么就攤上這事》坎酰” “怎么了僚匆?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長搭幻。 經(jīng)常有香客問我咧擂,道長,這世上最難降的妖魔是什么檀蹋? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任松申,我火速辦了婚禮,結(jié)果婚禮上俯逾,老公的妹妹穿的比我還像新娘贸桶。我一直安慰自己,他們只是感情好桌肴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布皇筛。 她就那樣靜靜地躺著,像睡著了一般坠七。 火紅的嫁衣襯著肌膚如雪水醋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天灼捂,我揣著相機(jī)與錄音离例,去河邊找鬼。 笑死悉稠,一個(gè)胖子當(dāng)著我的面吹牛宫蛆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼耀盗,長吁一口氣:“原來是場噩夢啊……” “哼想虎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叛拷,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤舌厨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后忿薇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裙椭,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年署浩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了揉燃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡筋栋,死狀恐怖炊汤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弊攘,我是刑警寧澤抢腐,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站襟交,受9級(jí)特大地震影響迈倍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜婿着,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一授瘦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竟宋,春花似錦提完、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜗字,卻和暖如春打肝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挪捕。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工粗梭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人级零。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓断医,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鉴嗤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • HTML部分 你是如何理解 HTML 語義化的斩启? HTML語義化就是使用合適的標(biāo)簽書寫合適的內(nèi)容,避免使用過多無意...
    學(xué)的會(huì)的前端閱讀 503評(píng)論 0 2
  • 項(xiàng)目開發(fā)流程 腳手架 一醉锅、自己搭建(公司搭建屬于自己的) webpack 二兔簇、vue-cli webpack3 三...
    趙趙趙_0c27閱讀 62評(píng)論 0 0
  • css相關(guān) 1. 萬能居中 1.margin: 0 auto;水平 2.text-align: center;水平...
    chaocc閱讀 964評(píng)論 0 2
  • <template> <el-form :inline="false" :model="form" ref="...
    南漂一枚閱讀 309評(píng)論 0 0
  • 1、從輸入url到瀏覽器呈現(xiàn)頁面中間經(jīng)歷了什么硬耍? 在輸入url的時(shí)候垄琐,會(huì)進(jìn)行本地歷史記錄和標(biāo)簽頁的查詢,提供模糊查...
    林思念閱讀 2,505評(píng)論 2 24