日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Vue多布局模式實現方法詳細講解

瀏覽:222日期:2022-06-10 14:05:58
目錄
  • 1、目標效果
  • 2、原理分析

1、目標效果

源碼地址:multipal-layout-demo: vue2實現多布局+暗黑模式

默認布局:頭部寬度100%,側邊欄、內容區

頂部布局:頭部寬度100%,內容區

側邊欄布局:側邊欄高度100%,頭部、內容區

2、原理分析

(1)vuex文件

import Vue from "vue"import Vuex from "vuex"Vue.use(Vuex)export default new Vuex.Store({  state: {    // 暗黑模式    isDark: false,    // 布局類型    layoutType: "default"  },  mutations: {    // 修改暗黑模式    set_is_dark(state, val) {      state.isDark = val    },    // 修改布局類型    set_layout_type(state, val) {      state.layoutType = val    }  },  actions: {  },  modules: {  }})

(2)布局縮略圖如何實現?用div + css 手動實現布局樣式

父組件傳遞一個布局類型數組,遍歷此組件;用一個變量保存索引值,點擊不同的布局類型項時切換索引并在vuex修改當前選中的布局類型

將縮略圖封裝成組件:Thumbnail.vue

<template>    <!-- 縮略圖 -->    <div><div v-for="(item, index) in layouts" @click="changeCheck(item, index)">    <template v-if="item.type == "default""><div :style="{ background: isDark ? "black" : "#fff" }"></div><div :style="{ background: isDark ? "black" : "#fff" }"></div>    </template>    <template v-if="item.type == "top""><div :style="{ background: isDark ? "black" : "#fff" }"></div>    </template>    <template v-if="item.type == "slide""><div></div><div :style="{ background: isDark ? "black" : "#fff" }"></div>    </template>    <i v-show="checked == index"></i></div>    </div></template><script>import { mapState } from "vuex"export default {    props: {// 布局類型數組layouts: {    type: Array,    default: () => []}    },    data() {return {    // 當前選中值    checked: 0,}    },    computed: {// 獲取是否是暗黑模式,從而縮略圖實現暗黑效果...mapState(["isDark"])    },    methods: {// 切換選中值changeCheck(item, index) {    this.checked = index    this.$store.commit("set_layout_type", item.type)}    }}</script><style lang="less" scoped>.thumbnail {    display: flex;    width: 100%;    .layout {position: relative;width: 50px;height: 50px;border: 1px solid gray;overflow: hidden;background: #f0f0f0;border-radius: 5px;cursor: pointer;.top {    position: absolute;    left: 0;    top: 0;    width: 100%;    height: 25%;}.left {    position: absolute;    left: 0;    top: 0;    bottom: 0;    width: 25%;    height: 100%;}.el-icon-check {    position: absolute;    left: 50%;    top: 50%;    transform: translate(-50%, -50%);    font-size: 20px;}    }}</style>

(3)建立多個不同類型的布局文件:

側邊欄布局 :src/views/layout/SlideLayout.vue

<template>  <!-- 側邊欄布局 -->  <div>    <Sliderbar></Sliderbar>    <Header></Header>    <div>      <router-view />    </div>  </div></template><script>import Sliderbar from "@/components/Sliderbar.vue"import Header from "@/components/Header.vue"export default {  components: {    Header,    Sliderbar,  },}</script><style lang="less" scoped></style>

默認布局布局:src/views/layout/DefaultLayout.vue

<template>  <!-- 默認布局 -->  <div>    <Header></Header>    <Sliderbar></Sliderbar>    <div>      <router-view />    </div>  </div></template><script>import Header from "@/components/Header.vue"import Sliderbar from "@/components/Sliderbar.vue"export default {  components: { Header, Sliderbar },}</script><style lang="less" scoped></style>

頂部布局:src/views/layout/TopLayout.vue

<template>  <!-- 頂欄布局 -->  <div>    <Header></Header>    <div>      <router-view />    </div>  </div></template><script>import Header from "@/components/Header.vue"export default {  components: {    Header,  },}</script><style lang="less" scoped></style>

(4)首頁組件 Home.vue,Home.vue下面渲染二級路由

<template>    <!-- vuex獲取選中的布局類型 -->    <div><defaultLayout v-show="layoutType == "default""></defaultLayout><slideLayout v-show="layoutType == "slide""></slideLayout><topLayout v-show="layoutType == "top""></topLayout>    </div></template><script>import defaultLayout from "./layout/DefaultLayout.vue"import slideLayout from "./layout/SlideLayout.vue"import topLayout from "./layout/TopLayout.vue"import { mapState } from "vuex"export default {    components: { defaultLayout, slideLayout, topLayout },    computed: {...mapState(["layoutType"])    },}</script><style lang="less" scoped></style>

(5)暗黑模式、布局類型變量都是保存在vuex中,因為多個組件之間進行數據通信比較方便!通過mapState取出vuex數據,然后通過computed接受mapState值,但如果想要直接修改mapState中的值則會報以下的錯誤:

computed property "isDark" was assigned to but it has no setter.

這是因為computed為只讀的。不能直接修改computed的數據,要想修改則使用set

  computed: {    ...mapState(["isDark"]),    // computed property "isDark" was assigned to but it has no setter.  這是因為computed為只讀的。不能直接修改computed的數據,要想修改則使用set    darkMode: {      get() {return this.isDark      },      set(val) {this.$store.commit("set_is_dark", val)// 獲取html根元素標簽let html = document.documentElementif (val) {  // html添加class="dark"選擇器  html.classList.add("dark")} else {  // html移除class="dark"選擇器  html.classList.remove("dark")}      }    }  },

到此這篇關于Vue多布局模式實現方法詳細講解的文章就介紹到這了,更多相關Vue多布局模式內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人亚洲一区| 国产精品亚洲二区| 欧美91在线|欧美| 国产乱人伦丫前精品视频| 国产毛片久久久| 久久精品国产一区二区| 黄色aa久久| 不卡在线一区二区| 一区二区精彩视频| 日韩精品一级| 美女久久99| 久久裸体视频| 蜜桃视频一区二区三区在线观看| 亚洲精品伦理| 老司机精品视频在线播放| 成人污污视频| 久久久精品五月天| 一区久久精品| 91九色综合| 国产综合色区在线观看| 夜久久久久久| 国产欧美亚洲一区| 欧洲精品一区二区三区| 蜜臀av亚洲一区中文字幕| 国产日韩欧美在线播放不卡| 97精品中文字幕| 99视频精品| 国产精品任我爽爆在线播放| 群体交乱之放荡娇妻一区二区| 日韩精品一二三四| 久久精品亚洲一区二区| 特黄毛片在线观看| 免播放器亚洲一区| 不卡专区在线| 亚洲有吗中文字幕| 国产精品精品国产一区二区| 国产精品嫩草99av在线| 国产精品亚洲欧美| 欧美va天堂| 国产精品日本一区二区不卡视频| 亚洲a一区二区三区| 日韩国产在线不卡视频| 欧美freesex黑人又粗又大| 亚洲精选久久| 欧美片第1页| 久久国产精品色av免费看| 中文字幕在线高清| 亚洲精品一二| 韩国精品主播一区二区在线观看| 日本午夜精品一区二区三区电影| 日韩精品欧美| 久草精品视频| 日本亚洲视频在线| 欧美美女一区| 精品高清久久| 日韩精品免费观看视频| 蜜桃一区二区三区| 精品精品99| 日韩欧美中文在线观看| 欧美日韩中文一区二区| 国产精品magnet| 久久福利毛片| 亚洲成人av观看| 久久精品国产网站| 日韩中文字幕| 午夜在线观看免费一区| 国产一区二区三区四区| 国产探花一区| 午夜电影一区| 免费人成在线不卡| 在线一区免费| 激情综合自拍| 亚洲手机视频| 久久九九99| 精品高清久久| 美腿丝袜在线亚洲一区| 亚洲日本在线观看视频| 欧美福利专区| 日韩精品一区二区三区免费观看| 国产69精品久久| 美女精品久久| 久久不见久久见中文字幕免费 | 99热精品在线观看| 亚洲福利精品| 日韩中文在线电影| 高清一区二区三区| 丰满少妇一区| 国产精品成人自拍| 国产欧美高清| 国产精品资源| 免费日韩一区二区三区| 国产精东传媒成人av电影| 国产精品极品在线观看| 久久国产麻豆精品| 国产精品theporn| 精品视频黄色| 吉吉日韩欧美| 欧美一级精品| 日韩午夜一区| 免费在线看一区| 亚洲精品女人| 日韩av中文字幕一区二区三区| 日本一区二区三区视频在线看| 亚洲日韩视频| 91精品国产自产观看在线| 国产探花在线精品一区二区| 国产精品欧美在线观看| 美日韩一区二区三区| 麻豆国产精品一区二区三区| 国产精品99精品一区二区三区∴| 国产亚洲一区二区三区啪| 国产精品手机在线播放| 精品国产乱码久久久| 日韩精品一卡| 免费人成网站在线观看欧美高清| 亚洲欧洲av| 国产日本久久| 黄色网一区二区| 欧美不卡高清一区二区三区| 国产精品99免费看| 日韩精品一二三四| 国产欧美一级| 九九精品调教| 在线精品视频一区| 国产精品高清一区二区| www.com.cn成人| 日韩在线观看一区二区| 国产精品一区二区三区美女 | 成人台湾亚洲精品一区二区| 精品国产麻豆| 婷婷激情综合| 国产毛片精品久久| 日韩一区二区三区免费| 日韩制服丝袜av| 久久免费福利| 亚洲一级特黄| 7m精品国产导航在线| sm捆绑调教国产免费网站在线观看| 亚洲成人精品| 欧美另类中文字幕| 欧美日韩精品免费观看视欧美高清免费大片 | 青青伊人久久| 亚洲深夜视频| 四虎在线精品| 日韩国产在线| 日韩av黄色在线| 日韩欧美一区二区三区在线观看 | 伊人久久高清| 亚洲精选久久| 欧美男人天堂| 日韩精品欧美成人高清一区二区| 麻豆mv在线观看| 亚洲ab电影| 久久天堂av| 国产欧美久久一区二区三区| 激情欧美一区二区三区| 国产日韩欧美三级| 不卡中文字幕| 精品亚洲精品| 亚洲精品乱码日韩| 久久三级福利| 日韩高清不卡一区二区| 欧美午夜精彩| 久久精品伊人| 日韩一区精品| 亚洲女同一区| www在线观看黄色| 国产欧美精品| 久久av在线| 亚洲a在线视频| 久久精品天堂| 日本91福利区| 黄色日韩在线| 成人国产精品一区二区免费麻豆| 五月亚洲婷婷 | 麻豆精品av| 色综合视频一区二区三区日韩| 欧美日韩一二| 麻豆成全视频免费观看在线看| 日韩精品三区四区| 乱人伦精品视频在线观看| 播放一区二区| 日韩av在线中文字幕| 国产精品蜜月aⅴ在线| 在线综合亚洲| 激情婷婷久久| 国产99亚洲| 久久九九精品| 欧美13videosex性极品| 精品欧美视频| 精品免费av一区二区三区| 日韩av不卡在线观看| 亚洲欧美日本日韩| 尤物在线精品| 黄页网站一区| 亚洲激情社区| 欧美特黄一区| 亚洲国产成人精品女人| 久久精品国产www456c0m| 欧美1区二区|