CSS中使用grid布局实现一套模板多种布局


Posted in HTML / CSS onJuly 15, 2022

CSS中使用grid布局实现一套模板多种布局

如上图,在日常开发中我们可能会遇到对页面进行不同布局配置的需求,实现方法也有很多,例如:

1.写多个页面,不同布局拥有不同的页面模板与样式代码,这种方法看起来是最麻烦也最没必要的,而且布局一但多起来编码会变得十分难受且冗余难以维护,特别当业务代码基本一致时,修改时也会变得繁琐,修改一种布局中的业务代码也要考虑到其他布局,显然这种方式是极其不推荐的。

2.写一个页面,页面内编写多套模板,通过条件控制实现不同布局风格。这种方法相比方法1的好处是使得业务代码可以在一处地方编写,并且相同的部分也只需编写一次,后期业务代码维护起来也变得更加容易。当然,方法1也可以通过引入外部文件实现同一套业务代码。然而这种方法问题在于模板跟样式都要编写几套,如果能只控制模板或只控制样式就可以实现的话无疑是更佳的方案。方法3将详细介绍通过grid布局方法编写一套模板多种样式实现布局布局风格控制。

3.写一个页面,通过grid布局将页面划分为合适的网格单元,即根据多种布局风格统一起来选择一个合适的行列分割数量。

页面模板,按照各种布局中网格数最多的编写(即4个)

<template>
  <div :class="['page-wrap', layoutClass]">
    <!--  布局一  -->
    <div class="wrap-layout1">
      <play-component :loading="loading" :program-info="programsInfo.area1" />
    </div>
    <!--  布局二  -->
    <div class="wrap-layout2">
      <play-component :loading="loading" :program-info="programsInfo.area2" />
    </div>
    <!--  布局三  -->
    <div class="wrap-layout3">
      <play-component :loading="loading" :program-info="programsInfo.area3" />
    </div>
    <!--  布局四  -->
    <div class="wrap-layout4">
      <play-component :loading="loading" :program-info="programsInfo.area4" />
    </div>
  </div>
</template>

将页面划分为12行12列共144个网格单元

CSS中使用grid布局实现一套模板多种布局

css样式中编写不同布局的行列划分原则

.page-wrap {
  //width: 1920px;
  //height: 1080px;
  width: 100%;
  height: 100%;
  display: grid;
  grid-gap: 1px 1px;
  grid-template-columns: repeat(12, 8.333333%);
  grid-template-rows: repeat(12, 8.333333%);
  position: relative;
  background: #FFFFFF;
}
.wrap-layout1,
.wrap-layout2,
.wrap-layout3,
.wrap-layout4 {
  background: #D8D8D8;
}

// 默认布局
.layout-default {
  .wrap-layout1 {
    grid-column: 1 / 13;
    grid-row: 1 / 13;
  }
  .wrap-layout2,
  .wrap-layout3,
  .wrap-layout4 {
    display: none;
  }
}

// 布局一
.layout1 {
  .wrap-layout1 {
    grid-column: 1 / 9;
    grid-row: 1 / 13;
  }
  .wrap-layout2 {
    grid-column: 9 / 13;
    grid-row: 1 / 5;
  }
  .wrap-layout3 {
    grid-column: 9 / 13;
    grid-row: 5 / 9;
  }
  .wrap-layout4 {
    grid-column: 9 / 13;
    grid-row: 9 / 13;
  }
}

// 布局二
.layout2 {
  .wrap-layout1 {
    grid-column: 1 / 3;
    grid-row: 1 / 13;
  }
  .wrap-layout2 {
    grid-column: 3 / 11;
    grid-row: 1 / 13;
  }
  .wrap-layout3 {
    grid-column: 11 / 13;
    grid-row: 1 / 13;
  }
  .wrap-layout4 {
    display: none;
  }
}

// 布局三
.layout3 {
  .wrap-layout1 {
    grid-column: 1 / 13;
    grid-row: 1 / 3;
  }
  .wrap-layout2 {
    grid-column: 1 / 13;
    grid-row: 3 / 13;
  }
  .wrap-layout3 {
    display: none;
  }
  .wrap-layout4 {
    display: none;
  }
}

// 布局四
.layout4 {
  .wrap-layout1 {
    grid-column: 1 / 7;
    grid-row: 1 / 7;
  }
  .wrap-layout2 {
    grid-column: 7 / 13;
    grid-row: 1 / 7;
  }
  .wrap-layout3 {
    grid-column: 1 / 7;
    grid-row: 7 / 13;
  }
  .wrap-layout4 {
    grid-column: 7 / 13;
    grid-row: 7 / 13;
  }
}

到此这篇关于CSS中使用grid布局实现一套模板多种布局的文章就介绍到这了,更多相关css grid布局内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
CSS3 选择器 基本选择器介绍
Jan 21 HTML / CSS
利用css3-animation实现逐帧动画效果
Mar 10 HTML / CSS
CSS3中的常用选择器使用示例整理
Jun 13 HTML / CSS
详解CSS3阴影 box-shadow的使用和技巧总结
Dec 03 HTML / CSS
HTML5仿手机微信聊天界面
Mar 18 HTML / CSS
js实现移动端H5页面手指滑动刻度尺功能
Nov 16 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
May 12 HTML / CSS
实例讲解使用HTML5 Canvas绘制阴影效果的方法
Mar 25 HTML / CSS
HTML5标签嵌套规则详解【必看】
Apr 26 HTML / CSS
元素水平垂直居中的方式
Mar 31 HTML / CSS
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
Apr 19 HTML / CSS
使用CSS实现黑白格背景效果
Jun 01 HTML / CSS
如何解决flex文本溢出问题小结
Jul 15 #HTML / CSS
使用HBuilder制作一个简单的HTML5网页
使用CSS定位HTML元素的实现方法
CSS实现背景图片全屏铺满自适应的3种方式
Jul 07 #HTML / CSS
HTML实现仿Windows桌面主题特效的实现
Jun 28 #HTML / CSS
CSS 实现角标效果的完整代码
Jun 28 #HTML / CSS
CSS SandBox应用场景及常见问题
You might like
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
JavaScript 的继承
2011/10/01 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
临床医学大学生求职信
2013/09/28 职场文书
关于运动会的口号
2014/06/07 职场文书
党员演讲稿
2014/09/04 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android