Vue+ElementUI容器無(wú)法鋪滿網(wǎng)頁(yè)的問(wèn)題解決
首先是解決html,body鋪不滿屏幕的問(wèn)題,就是對(duì)于撐開(kāi)的html,body沒(méi)有覆蓋掉,可以通過(guò)在assets下新建一個(gè)global.scss文件
設(shè)置html,body的寬度為100vw,高度為100vh,代碼如下:
html, body, #app{ height: 100vh; margin: 0; padding: 0; width:100vw; }
然后在App.vue中引入該文件,
代碼如下:
<template> <div id="app"> <router-view></router-view> </div> </template> <script> import "./assets/global.scss" export default { name: 'App' } </script> <style scoped> </style>
這樣子可以使得html,body能夠鋪滿整個(gè)頁(yè)面,此時(shí)還需要讓el-container容器也鋪滿整個(gè)頁(yè)面,在對(duì)應(yīng)的vue文件中加入如下代碼:
.el-container { padding: 0; margin: 0; height: 100vh; width:100vw; }
我是做了一個(gè)SPA單頁(yè)Web應(yīng)用,所以在顯示的Index.vue中加入代碼:
這樣子就可以使得頁(yè)面鋪滿整個(gè)網(wǎng)頁(yè),效果如下:
然而,在加入菜單,表格等內(nèi)容后,只做這樣的修飾是不夠的,因?yàn)槲业谋砀竦仍匾灿昧艘粋€(gè)el-container容器包裹,所以這部分表格所占的視圖也被自動(dòng)設(shè)置為100vh和100vw,這樣子就導(dǎo)致了實(shí)際寬高超出了瀏覽器網(wǎng)頁(yè)的范圍,導(dǎo)致了滾動(dòng)條的出現(xiàn),如下圖所示,
所以,要想呈現(xiàn)完美的效果,還需要附加上一些對(duì)元素的CSS修飾,這個(gè)就需要根據(jù)項(xiàng)目來(lái)看了,下面是我項(xiàng)目中Index.vue的代碼:
<script setup lang="ts"> import { reactive } from 'vue'; import Employee from "./Employee.vue"; import Department from './Department.vue'; import SysUser from './SysUser.vue'; import SysRole from './SysRole.vue'; import SysPermission from './SysPermission.vue'; import { OfficeBuilding } from '@element-plus/icons-vue'; const datas = reactive({ // selectedTab存儲(chǔ)當(dāng)前顯示對(duì)象的鍵 selectedTab:null, // tabs數(shù)組存儲(chǔ)對(duì)象的鍵 tabs:[], // modules類似于一個(gè)Map,里面存儲(chǔ)了許多對(duì)象 // title對(duì)應(yīng)tab的標(biāo)簽,name對(duì)應(yīng)tab的鍵,component對(duì)應(yīng)tab顯示的內(nèi)容 modules:{ employee:{ title:"員工管理", name:"employee", component:Employee }, department:{ title:"部門管理", name:"department", component:Department }, sysUser:{ title:"用戶管理", name:"sysUser", component:SysUser }, sysRole:{ title:"角色管理", name:"sysRole", component:SysRole }, sysPermission:{ title:"權(quán)限管理", name:"sysPermission", component:SysPermission } } }); const selectMenu = (index) => { if(datas.tabs.indexOf(index) < 0){ // 當(dāng)點(diǎn)擊標(biāo)簽時(shí),如果數(shù)據(jù)中沒(méi)有該標(biāo)簽頁(yè)的索引,則將其添加到tabs中并顯示該標(biāo)簽頁(yè) datas.tabs.push(index); } datas.selectedTab = index; }; const removeTab = (name) => { let index = datas.tabs.indexOf(name); // 刪除對(duì)應(yīng)索引的一條數(shù)據(jù) datas.tabs.splice(index, 1); // 顯示所有標(biāo)簽頁(yè)中的第一個(gè) datas.selectedTab = datas.tabs[0]; } </script> <template> <el-container> <el-header style="height:120px"> <div id="top"> <div id="logo">Alan人事管理系統(tǒng)</div> </div> </el-header> <el-container> <el-aside width="200px"> <el-menu background-color="#545c64" text-color="#fff" active-text-color="#ffd04b" @select="selectMenu"> <el-menu-item> <el-icon><Ship/></el-icon> <span>歡迎頁(yè)面</span> </el-menu-item> <!--@select事件會(huì)自動(dòng)傳遞菜單標(biāo)簽中的index屬性值--> <!--這里設(shè)置index屬性是modules對(duì)象中的屬性名稱,這樣用戶點(diǎn)擊菜單就會(huì)傳遞對(duì)象的鍵給函數(shù)--> <el-menu-item index="employee"> <el-icon><Star/></el-icon> <span>員工管理</span> </el-menu-item> <el-menu-item index="department"> <el-icon><OfficeBuilding/></el-icon> <span>部門管理</span> </el-menu-item> <el-sub-menu index="permission_management"> <template #title> <el-icon><Setting/></el-icon> <span>權(quán)限管理</span> </template> <el-menu-item-group> <el-menu-item index="sysUser"><el-icon><User/></el-icon>用戶管理</el-menu-item> <el-menu-item index="sysRole"><el-icon><EditPen/></el-icon>角色管理</el-menu-item> <el-menu-item index="sysPermission"><el-icon><Bell/></el-icon>權(quán)限管理</el-menu-item> </el-menu-item-group> </el-sub-menu> </el-menu> </el-aside> <el-main> <!--將modules(類似于對(duì)象Map)的key設(shè)置為對(duì)象的name--> <el-tabs v-model="datas.selectedTab" type="border-card" closable @tab-remove="removeTab"> <el-tab-pane :key="datas.modules[key].name" v-for="key in datas.tabs" :label="datas.modules[key].title" :name="datas.modules[key].name"> <component :is="datas.modules[key].component"></component> </el-tab-pane> </el-tabs> </el-main> </el-container> <el-footer style="height:120px"></el-footer> </el-container> </template> <style scoped> .el-header, .el-footer { background-color: #B3C0D1; color: #333; text-align: center; } /*由于我設(shè)置了頁(yè)頭和頁(yè)尾,各有120px,所以el-aside和el-main中的高度要做出相應(yīng)計(jì)算 */ .el-aside { color: #333; text-align: center; height: calc(100vh - 240px) !important; background-color: #545c64; } /*菜單的寬度為200px,所以main中的寬度也要做相應(yīng)計(jì)算 */ .el-main { background-color: #fff; color: #333; text-align: center; padding: 0; height:calc(100vh - 240px) !important; width:calc(100vw - 200px) !important; } #top { clear: both; height: 80px; text-align: left; } #top #logo { color: #fff; font-size: 30px; font-weight: bold; padding: 15px 0 0 40px; } /* 讓container占滿視窗*/ .el-container { padding: 0; margin: 0; height: 100vh; width:100vw; } </style>
由于我設(shè)置了一個(gè)footer和header作為頁(yè)頭和頁(yè)腳,其高度均為120px,所以我需要對(duì)el-aside和el-main中的高度做相應(yīng)的計(jì)算,并且由于菜單寬度為200px,所以main中的寬度也要做相應(yīng)的計(jì)算,這樣子修飾之后,網(wǎng)頁(yè)可以呈現(xiàn)出比較好的效果:
以上就是Vue+ElementUI容器無(wú)法鋪滿網(wǎng)頁(yè)的問(wèn)題解決的詳細(xì)內(nèi)容,更多關(guān)于Vue ElementUI無(wú)法鋪滿網(wǎng)頁(yè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue2.0 better-scroll 實(shí)現(xiàn)移動(dòng)端滑動(dòng)的示例代碼
本篇文章主要介紹了vue2.0 better-scroll 實(shí)現(xiàn)移動(dòng)端滑動(dòng)的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2018-01-01Vue代理報(bào)錯(cuò)404問(wèn)題及解決(vue配置proxy)
這篇文章主要介紹了Vue代理報(bào)錯(cuò)404問(wèn)題及解決(vue配置proxy),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12基于Vue實(shí)現(xiàn)文件上傳的幾種實(shí)現(xiàn)方式
文件上傳是web開(kāi)發(fā)中一個(gè)常見(jiàn)的需求,Vue.js作為一款流行的前端框架,也提供了方便的方法來(lái)實(shí)現(xiàn)文件上傳功能,下面這篇文章主要給大家介紹了關(guān)于基于Vue實(shí)現(xiàn)文件上傳的幾種實(shí)現(xiàn)方式,需要的朋友可以參考下2024-03-03vue對(duì)象拷貝,解決由于引用賦值修改原對(duì)象的方式
這篇文章主要介紹了vue對(duì)象拷貝,解決由于引用賦值修改原對(duì)象的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10