布局:大屏方案(grid)

简介: 布局:大屏方案(grid)

一、背景

Flex布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。

Grid 布局则是将容器划分成“行"和“列”,产生单元格,然后指定"项目所在”的单元格,可以看作是二维布局,Grid布局远比 Flex布局强大。

每一个方格内放入echarts图表既是大屏效果。本文仅做基础布局,供日后参考。

二、方案

方案一:

<template>
<div class="container">
  <div class="item">bi-1</div>
  <div class="item">bi-2</div>
  <div class="item">bi-3</div>
  <div class="item">bi-4</div>
  <div class="item">bi-5</div>
  <div class="item">bi-6</div>
  <div class="item">bi-7</div>
  <div class="item">bi-8</div>
  <div class="item">bi-9</div>
</div>
</template>
<script setup lang="ts">
</script>
<style scoped lang="less">
.container{
  width: 100vw;
  background: #FF4000;
  display: grid;
  grid-template-rows: 1fr 1fr 1fr; // 行
  grid-template-columns: 1fr 1fr 1fr; // 列 
  // grid-row-gap: 5px; // 行间距
  // grid-column-gap: 5px; // 列间距
  .item{
    text-align: center;
    border: 1px solid #fff;
    font-weight: bold;
    &:nth-child(1){
      background: red;
    }
    &:nth-child(2){
      background: green;
    }
    &:nth-child(3){
      background: blue;
    }
  }
}
</style>

方案二:

<template>
<div class="container">
  <div class="item">bi-1</div>
  <div class="item">bi-2</div>
  <div class="item">bi-3</div>
  <div class="item">bi-4</div>
  <div class="item">bi-5</div>
  <div class="item">bi-6</div>
  <div class="item">bi-7</div>
  <div class="item">bi-8</div>
  <!-- <div class="item">bi-9</div> -->
</div>
</template>
<script setup lang="ts">
</script>
<style scoped lang="less">
.container{
  width: 100vw;
  background: #FF4000;
  display: grid;
  grid-template-rows: 1fr 1fr 1fr; // 行
  grid-template-columns: 1fr 1fr 1fr; // 列 
  // grid-row-gap: 5px; // 行间距
  // grid-column-gap: 5px; // 列间距
  .item{
    text-align: center;
    border: 1px solid #fff;
    font-weight: bold;
    &:nth-child(1){
      background: red;
    }
    &:nth-child(2){
      background: green;
      grid-column: 2 / 3; // 以列网格线为基准
      grid-row: 1 / 3; // 以行网格线为基准
    }
    &:nth-child(3){
      background: blue;
    }
  }
}
</style>

方案三:

<template>
<div class="container">
  <div class="item">bi-1</div>
  <div class="item">bi-2</div>
  <div class="item">bi-3</div>
  <div class="item">bi-4</div>
  <div class="item">bi-5</div>
  <div class="item">bi-6</div>
  <div class="item">bi-7</div>
  <div class="item">bi-8</div>
  <div class="item">bi-9</div>
</div>
</template>
<script setup lang="ts">
</script>
<style scoped lang="less">
.container{
  width: 100vw;
  background: #FF4000;
  display: grid;
  grid-template-rows: 50px 1fr 1fr 1fr; // 行
  grid-template-columns: 1fr 2fr 1fr; // 列 
  // grid-row-gap: 5px; // 行间距
  // grid-column-gap: 5px; // 列间距
  .item{
    text-align: center;
    border: 1px solid #fff;
    font-weight: bold;
    &:nth-child(1){
      background: red;
      grid-row: 1 / 2;
      grid-column: 1 / 4;
    }
    &:nth-child(2){
      background: green;
      grid-row: 2 / 4;
      grid-column: 2 / 3;
    }
    &:nth-child(3){
      background: blue;
    }
  }
}
</style>

方案四:

<template>
<div class="container">
  <div class="item">bi-1</div>
  <div class="item">bi-2</div>
  <div class="item">bi-3</div>
  <div class="item">bi-4</div>
  <div class="item">bi-5</div>
  <div class="item">bi-6</div>
  <div class="item">bi-7</div>
  <div class="item">bi-8</div>
  <div class="item">bi-9</div>
  <div class="item">bi-10</div>
</div>
</template>
<script setup lang="ts">
</script>
<style scoped lang="less">
.container{
  width: 100vw;
  background: #FF4000;
  display: grid;
  grid-template-rows: 50px 1fr 1fr 1fr; // 行
  grid-template-columns: 1fr 2fr 1fr; // 列 
  // grid-row-gap: 5px; // 行间距
  // grid-column-gap: 5px; // 列间距
  .item{
    text-align: center;
    border: 1px solid #fff;
    font-weight: bold;
    &:nth-child(1){
      background: red;
      grid-row: 1 / 2;
      grid-column: 1 / 4;
    }
    &:nth-child(2){
      background: green;
      grid-row: 2 / 4;
      grid-column: 2 / 3;
    }
    &:nth-child(3){
      background: blue;
    }
    &:nth-child(10){
      background: red;
      grid-row: 5 / 6;
      grid-column: 1 / 4;
    }
  }
}
</style>

三、欢迎交流指正,关注我,一起学习。

相关文章
|
前端开发 容器
前端页面布局之【Grid布局】详解
前端页面布局之【Grid布局】详解
538 0
|
29天前
|
前端开发 开发者 容器
构建响应式Web界面:Flexbox与Grid布局的深度解析
【10月更文挑战第11天】本文深入解析了CSS3中的Flexbox和Grid布局,探讨了它们的特点、应用场景及使用方法。Flexbox适用于一维布局,如导航栏;Grid布局则适用于二维布局,如复杂网格。通过示例代码和核心属性介绍,帮助开发者灵活构建响应式Web界面。
51 5
|
2月前
|
编解码 数据可视化 前端开发
可视化大屏适配scale方案
本文介绍了一种使用CSS实现可视化大屏适配的方案。通过设置容器的`transform: scale()`属性,根据屏幕大小动态调整大屏内容的缩放比例,从而实现不同分辨率下的适配。文章提供了详细的实现方法,包括Vue组件的模板、逻辑和样式代码,并展示了实际效果的对比图。此外,还推荐了一个npm包`autofit.js`,用于简化大屏适配的实现。
62 1
可视化大屏适配scale方案
|
6月前
|
编解码 前端开发 开发者
构建响应式Web界面:Flexbox与Grid布局的深度对比
【4月更文挑战第4天】 在现代前端开发中,构建灵活且响应式的用户界面是至关重要的。随着移动设备浏览量的增加,能够适应不同屏幕尺寸和分辨率的布局技术变得必不可少。Flexbox和Grid是CSS提供的两种强大的布局机制,它们各自以独特的方式解决了响应式设计的挑战。本文将深入探讨Flexbox和Grid的核心概念、使用场景和性能考量,为开发者提供在面对不同布局需求时做出明智选择的依据。
|
6月前
|
编解码 前端开发 UED
前端需要完完全全掌握的这些布局方案
前端需要完完全全掌握的这些布局方案
|
前端开发 容器
Grid实现自适应九宫格布局
Grid实现自适应九宫格布局
321 0
|
前端开发 容器
【HTML+CSS】grid自适应网站布局之服务项目展示
【HTML+CSS】grid自适应网站布局之服务项目展示
136 0
|
前端开发
前端学习案例5-三栏布局之grid
前端学习案例5-三栏布局之grid
84 0
前端学习案例5-三栏布局之grid
|
前端开发 容器
移动端页面布局中的流动布局(百分比布局)和弹性布局
移动端页面布局中的流动布局(百分比布局)和弹性布局
移动端页面布局中的流动布局(百分比布局)和弹性布局
|
算法 容器