Vue利用flex和grid实现圣杯布局

本文介绍了如何在Vue中利用flex和grid布局实现经典的圣杯布局。圣杯布局特点是header和footer全宽固定,中间为三栏布局,两侧宽度固定,中间自适应。通过flex和grid两种方式详细展示了实现过程,强调了grid布局的二维优势,但指出其浏览器兼容性不如flex。

什么是圣杯布局?

  • header和footer各自占领屏幕所有宽度,高度固定。
  • 中间的container是一个三栏布局。
  • 三栏布局两侧宽度固定不变,中间部分自动填充整个区域。
  • 中间部分的高度是三栏中最高的区域的高度。

实现方法一:利用flex 

<template>
<div class="container">
<div class="left"></div>
<div class="mid"></div>
<div class="right"></div>
</div>
</template>
<script>
export default {
  name: "App",
  data() {
    return {
    };
  },
  }
</script>

<style>
.container{
width: 80vw;
height: 80vh;
outline: 5px solid red;
display: flex;
/* 纵向弹性布局 */
/* flex-direction: column; */
}
.left{
width: 200px;
height: 100%;
background-color: royalblue;

}
.mid{
flex:1; /* 分掉剩余部分 1份 */
height: 100%;
background-color: rgb(29, 158, 61);
}
.right{
width: 200px;
height: 100%;
background-color: rgb(212, 146, 182);
}
</style>
效果图:

实现方法二:利用grid 

注意grid中grid-row; 以及 grid-column;属性

grid-row;指网格的行数,grid-column;指网格的列数 

例如    grid-row:1; grid-column:1/5;指占网格的第一行,且占第一行的1到5列

<template>
    <div class="body">
        <div id="header">header</div>
        <div id="left">left</div>
        <div id="middle">middle</div>
        <div id="right">right</div>     
        <div id="footer">footer</div>
    </div>

</template>
<script>
export default {
  name: "App",
  data() {
    return {
    };
  },
  }
</script>

<style>
.body{
    display: grid;
}
#header{
    background: red;
    grid-row:1;
    grid-column:1/5;
}
    
#left{
    height: 200px;
    grid-row:2;
    grid-column:1/2;
    background: orange;
}
#middle{
    grid-row:2;
    grid-column:2/4;
    background: rebeccapurple
}
#right{
    grid-row:2;
    grid-column:4/5;
    background: cadetblue;
}
#footer{
    background: gold;
    grid-row:3;
    grid-column:1/5;
}
</style>
 

总之:

flex是一维布局 ,grid是二维布局也就是说grid布局可以更好的操作行和列。flex布局和grid布局是现在的主流的两种布局方式。我个人偏向使用grid布局,只是浏览器的支持没有flex多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值