一、layout结构搭建
1. 页面结构主要分为三部分:
(1) 左侧菜单menu
(2)顶部navbar
(3)中间内容区main
2.layout组件编写
(1)创建三个区域组件,引入到layout中
先分左右,再分上下
<template>
<div class="app-wrapper">
<!-- 侧边栏 -->
<div class="side-container">
<SideBar />
</div>
<div class="right-container">
<!-- 顶部导航栏 navbar -->
<div class="fixed-header">
<NavBar />
</div>
<AppMain />
<!-- 内容区 main -->
</div>
</div>
</template>
<script setup>
import {} from 'vue'
import SideBar from './components/sideBar'
import AppMain from './components/appMain'
import NavBar from './components/navbar'
(2)创建style文件夹,管理css文件
a.variables.scss 存放scss变量 :scss常量和js共享常量
// 定义常量
// sidebar
$menuText: #bfcbd9;
$menuActiveText: #ffffff;
$subMenuActiveText: #c7eb12;
$menuBg: #304156;
$menuHover: #263445;
$subMenuBg: #1f2d3d;
$subMenuHover: #001528;
$sideBarWidth: 210px;
$hideSideBarWidth: 54px;
$sideBarDuration: 0.28s;
$navBarBg: #ffffff;
$Hamburger: #000000;
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
// JS 与 scss 共享变量,在 scss 中通过 :export 进行导出,在 js 中可通过 ESM 进行导入
:export {
menuText: $menuText;
menuActiveText: $menuActiveText;
subMenuActiveText: $subMenuActiveText;
menuBg: $menuBg;
menuHover: $menuHover;
subMenuBg: $subMenuBg;
subMenuHover: $subMenuHover;
sideBarWidth: $sideBarWidth;
navBarBg: $navBarBg;
Hamburger: $Hamburger;
}
b.mixinx.scss 存放mixin 可复用样式
c.sidebar.scss 存放侧边栏样式
(3)在index.scss中引入上面的文件
a.在scss中,引入其他文件 用@import
@import './variables.scss'
b.在script中使用scss常量
在script引入变量,可以在template中直接使用
<template>
<div class="sidebar-container" :style="{ background: variables.menuBg }">
<SideBar></SideBar>
</div>
</template>
<script setup>
import variables from '@/styles/variables.scss'
</script>
c. scss中 ‘ #{} ‘语法的作用是,将内部当作scss变量使用