显示异常问题总结:
1.是否设置自适应布局;
2.是否设置布局最小宽度;
3.是否设置媒体查询隐藏多余内容;
4.是否设置固定长度,不适配小屏展示;
基本设置:
html, body, #app { height: 100%; margin: 0px; padding: 0px; } html { box-sizing: border-box;
line-height: 1.15; } body { overflow: auto; } #app { position: relative; height: 100%; width: 100%; }
全局布局:
.asider{ transition: width .28s; width: 210px!important; background-color: #304156; height: 100%; position: fixed; font-size: 0; top: 0; bottom: 0; left: 0; z-index: 1001; overflow: hidden; } .content{ min-height: 100%; transition: margin-left .28s; margin-left: 210px; position: relative; } //主体内容 .hearder{//当设置固定时,添加fixed-header如下,同级添加div添加添加margin-top: 84px即可; position: fixed; top: 0; right: 0; z-index: 9; width: calc(100% - 210px); transition: width .28s; } .main{ //无论顶栏是否固定,都需要设置84px的固定间距 min-height: calc(100vh - 84px); width: 100%; position: relative; overflow: hidden; }
栅格布局:
<template> <div> <span class="field-label">方块选择:</span> <!-- 选择屏幕框 --> <select v-model="selected" @change="selectbj(selected)"> <option v-for="(option,index) in layouts" :key="index" :value="option.value">{{ option.name }}</option> </select> <el-main v-model="selected"> <div class="block" style="height:400px"> <!-- {{selected}} --> <div style="height:100%;100%" v-if="selected==0"> <!-- 1*1布局 --> <el-row :gutter="10" type="flex" class="grid-one-contentheight" justify="center"> <el-col :span="24"></el-col> </el-row> </div> <!-- 2*1布局 --> <div style="height:100%;100%" v-else-if="selected==1"> <el-row :gutter="10" type="flex" class="row-bg el-row-two" justify="space-between"> <el-col :span="12"> <div class="grid-content"></div> </el-col> <el-col :span="12"> <div class="grid-content"></div> </el-col> </el-row> </div> <!-- 2*2 --> <div style="height:100%;100%" v-else-if="selected==2"> <el-row :gutter="10" type="flex" class="row-bg" justify="center"> <el-col :span="12"> <div class="grid-content"></div> </el-col> <el-col :span="12"> <div class="grid-content"></div> </el-col> </el-row> <br /> <el-row :gutter="10" type="flex" class="row-bg" justify="center"> <el-col :span="12"> <div class="grid-content"></div> </el-col> <el-col :span="12"> <div class="grid-content"></div> </el-col> </el-row> </div> <!-- 3*2布局 --> <div style="height:100%;100%" v-else-if="selected==3"> <el-row :gutter="10" type="flex" class="row-bg" justify="center"> <el-col :span="12"> <div class="grid-content"></div> </el-col> <el-col :span="12"> <div class="grid-content"></div> </el-col> <el-col :span="12"> <div class="grid-content"></div> </el-col> </el-row> <br /> <el-row :gutter="10" type="flex" class="row-bg" justify="center"> <el-col :span="12"> <div class="grid-content"></div> </el-col> <el-col :span="12"> <div class="grid-content"></div> </el-col> <el-col :span="12"> <div class="grid-content"></div> </el-col> </el-row> </div> <!-- 3*3模式 --> <div style="height:100%;100%" v-else-if="selected==4"> <el-row :gutter="10" type="flex" class="row-bg" justify="center"> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> </el-row> <br /> <el-row :gutter="10" type="flex" class="row-bg" justify="center"> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> </el-row> <br /> <el-row :gutter="10" type="flex" class="row-bg" justify="center"> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> </el-row> </div> <!-- 模式 --> <div style="height:100%;100%" v-else> <el-row :gutter="10" type="flex" class="row-bg" justify="start"> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> <el-col :span="8"> <div class="grid-a-contentWidth"></div> </el-col> </el-row> <br /> <el-row :gutter="10" type="flex" class="row-bg" justify="start"> <el-col :span="8"> <div class="grid-a-contentWidth"></div> <br /> <div class="grid-a-contentWidth"></div> </el-col> <el-col :span="16"> <div class="grid-a-content-a-Width"></div> </el-col> </el-row> </div> </div> </el-main> </div> </template> <script> export default { data () { return { selected: 0, layouts: [ { 'name': '1x1模式', 'value': '0' }, { 'name': '2x1模式', 'value': '1' }, { 'name': '2x2模式', 'value': '2' }, { 'name': '3x2模式', 'value': '3' }, { 'name': '3x3模式', 'value': '4' }, { 'name': '1+5模式', 'value': '5' } ] } }, methods: { selectbj (obj) { console.log(obj, 111) } } } </script> <style scoped> .box-card { 400px; margin: 20px auto; } .block { padding: 30px 24px; background-color: rgb(27, 16, 16); } .alert-item { margin-bottom: 10px; } .tag-item { margin-right: 15px; } .link-title { margin-left: 35px; } .components-container { position: relative; height: 100vh; } .left-container { background-color: #f38181; height: 100%; } .right-container { background-color: #fce38a; height: 200px; } .top-container { background-color: #fce38a; 100%; height: 100%; } .bottom-container { 100%; background-color: #95e1d3; height: 100%; } .left-container-twoOne { background-color: rgb(110, 75, 75); height: 100%; } .container-onetoOne { background-color: rgb(47, 80, 74); height: 100%; 50%; } .container-onetoTwo { background-color: rgb(61, 19, 56); height: 100%; 50%; } .el-col { border-radius: 4px; } .bg-purple-dark { background: #57926b; } .bg-purple { background: #7e2970; } .bg-purple-light { background: #071c4d; } .grid-content { background-color: rgb(44, 143, 121); border-radius: 4px; min-height: 150px; min- 100px; } .grid-contentB { background-color: rgb(64, 56, 134); border-radius: 4px; min-height: 150px; min- 100px; } .grid-a-contentWidth { background-color: rgb(44, 143, 121); border-radius: 4px; min-height: 100px; } .grid-a-content-a-Width { background-color: rgb(44, 143, 121); border-radius: 4px; min-height: 220px; } .grid-one-contentheight { background-color: rgb(44, 143, 121); border-radius: 4px; min-height: 100%; } .el-row-two { margin-bottom: 80px; margin-top: 80px; } </style>
笔记:
row 行概念
<el-row></el-row>
col 列概念
<el-col></el-col>
col组件的:span属性的布局调整,一共分为24栏:
row组件的:gutter
属性来调整布局之间的宽度---分栏间隔
<el-row :gutter="20"> <el-col :span="6"><div class="grid-content bg-purple"></div></el-col> <el-col :span="6"><div class="grid-content bg-purple"></div></el-col> </el-row>
对齐方式:
row组件的type="flex"启动flex布局,再通过row组件的justify属性调整排版方式,属性值分别有:
justify=center 居中对齐
justify=start 左对齐
justify=end 右对齐
justify=space-between 空格间距在中间对齐
justify=space-around 左右各占半格空格对齐
<el-row type="flex" class="row-bg" justify="center"> <el-col :span="6"><div class="grid-content"></div></el-col> </el-row>
响应式布局:
参考bootstrap的响应式,预设四个尺寸
- xs <768px
- sm ≥768px
- md ≥992
- lg ≥120
<el-row :gutter="10"> <el-col :xs="8" :sm="6" :md="4" :lg="3"><div class="grid-content bg-purple"></div></el-col> <el-col :xs="4" :sm="6" :md="8" :lg="9"><div class="grid-content bg-purple-light"></div></el-col> <el-col :xs="4" :sm="6" :md="8" :lg="9"><div class="grid-content bg-purple"></div></el-col> <el-col :xs="8" :sm="6" :md="4" :lg="3"><div class="grid-content bg-purple-light"></div></el-col> </el-row>