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

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

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

瀏覽:220日期: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久久,三上悠亚国产精品一区二区三区
免费精品视频在线| 美日韩精品视频| 在线综合视频| 亚洲专区欧美专区| 精品一区二区三区亚洲| 视频在线观看国产精品| 欧美一区二区三区激情视频| 岛国av免费在线观看| 麻豆国产精品777777在线| 欧美亚洲网站| 国产精品一区二区三区av麻| 日产欧产美韩系列久久99| 中文字幕日韩高清在线| 亚洲五月综合| 综合视频一区| 日欧美一区二区| 手机精品视频在线观看| 视频一区二区三区在线| 首页国产欧美日韩丝袜| 日本亚洲不卡| 国产精品亚洲片在线播放| 你懂的亚洲视频| 国产一区二区精品久| 国产91欧美| 秋霞影视一区二区三区| 黄色不卡一区| 爽爽淫人综合网网站| 亚洲乱码视频| 欧美偷窥清纯综合图区| 欧美国产免费| 桃色av一区二区| 日韩欧美精品综合| 国产在线不卡| 中文字幕一区二区av| 国产亚洲一区二区三区啪| 国产一区调教| 国产专区一区| 在线免费观看亚洲| 国产乱人伦精品一区| 国产一区二区三区国产精品| 国产精品字幕| 鲁大师成人一区二区三区| 欧美一区二区三区免费看| 欧美黄色一区二区| 国产一区亚洲| 日韩福利视频一区| 免费在线观看一区| 日韩国产网站| 视频一区国产视频| 美日韩一区二区三区| 欧美肉体xxxx裸体137大胆| 蜜桃视频一区二区三区在线观看 | 国产专区精品| 免费精品视频| 精品久久网站| 亚洲视频播放| 国产精品久久久久久久久久白浆 | 蜜臀av亚洲一区中文字幕| 日韩高清不卡在线| 日韩天堂在线| 亚洲精品国产精品粉嫩| 国产成人1区| 国产美女一区| 韩日一区二区| 免费毛片在线不卡| 国产亚洲高清在线观看| 亚洲91视频| 69精品国产久热在线观看| 日韩在线观看不卡| 日韩欧美中文在线观看| 日韩激情网站| 久久婷婷av| 国产日产一区| 午夜国产精品视频免费体验区| 国产毛片精品| 国产一区成人| 日韩欧美在线精品| 激情欧美一区二区三区| 国产精品66| 在线精品视频在线观看高清| 麻豆中文一区二区| 中文字幕一区二区三区四区久久| 美女一区网站| 国产黄色一区| 亚洲尤物av| 1000部精品久久久久久久久| 久久伊人久久| 午夜天堂精品久久久久| 欧美性感美女一区二区| 国产精品久久| 亚洲一区二区三区在线免费| 色爱综合av| 另类小说一区二区三区| 亚洲精品一级二级三级| 吉吉日韩欧美| 国产激情精品一区二区三区| 中文字幕日本一区二区| 欧美在线亚洲综合一区| 久久蜜桃资源一区二区老牛| 国产精品igao视频网网址不卡日韩| 免费精品视频| 久久久夜夜夜| 在线人成日本视频| 欧美1区二区| 日本不卡中文字幕| 伊人久久成人| 久久视频一区| 日韩另类视频| 国产黄大片在线观看| 日韩av一二三| 在线观看视频免费一区二区三区| 九色porny丨国产首页在线| 麻豆91精品视频| 国产精品主播| 久久国产麻豆精品| 日韩超碰人人爽人人做人人添| 手机精品视频在线观看| 伊人久久婷婷| 波多野结衣一区| 伊人久久大香线蕉av不卡| 日韩av片子| а√天堂8资源中文在线| 加勒比视频一区| 精品一区二区三区的国产在线观看| 日韩不卡一区二区三区| 精品国产麻豆| 免费成人在线视频观看| 久热精品在线| 丝袜美腿高跟呻吟高潮一区| 久热精品在线| 日韩视频1区| 日本不卡不码高清免费观看| 久久午夜精品一区二区| 国产欧美高清| 亚洲日本在线观看视频| 免费精品国产| 久久亚洲精品中文字幕| 伊人久久成人| 麻豆精品av| 久久99伊人| 亚洲网站视频| 久久精品91| 精品国产一区二区三区av片| 国产欧美一区二区三区精品观看 | 亚洲一区二区三区四区五区午夜| 国产一区二区精品福利地址| 日韩av网站在线观看| 天海翼精品一区二区三区| 视频一区二区欧美| 最新亚洲一区| 怡红院精品视频在线观看极品| 狠狠色综合网| 伊人国产精品| 欧美天堂一区| 久久久91麻豆精品国产一区| 福利精品在线| 久久青青视频| 亚洲婷婷丁香| 极品av在线| 国产精品一页| 欧美日韩国产综合网| 精品黄色一级片| 日韩在线一二三区| 日韩大片在线| 欧美日韩99| 狠狠爱成人网| 久久精品卡一| 欧美成人综合| 欧美日韩一二三四| 日韩欧美午夜| 国模精品一区| 亚洲精品伦理| 日韩视频一区| 欧美日韩精品免费观看视欧美高清免费大片| 日本高清久久| 日韩综合一区二区| 国产精品黑丝在线播放| 欧美日韩一区自拍| 另类av一区二区| 日本综合字幕| 久久永久免费| 美女视频免费精品| 国产精品久久久久77777丨| 色狠狠一区二区三区| 国产精品网站在线看| 国产探花在线精品| 首页国产欧美久久| 国产91一区| 日韩精品亚洲专区在线观看| 婷婷综合五月| 夜夜精品视频| 日韩国产激情| 日韩在线欧美| 欧美国产另类| 青青草91久久久久久久久| 黄色网一区二区| 都市激情国产精品| 亚洲精品福利电影| 日韩一区亚洲二区| 7777精品|