1 line of CSS Layouts

10 modern layouts in 1 line of CSS

1. 绝对居中布局


<div class="container" >
<div class="item" contenteditable></div>
</div>
.container {
display: grid;
place-items: center;
}

place-items:

place-items 是 和 简写形式

align-items 属性控制垂直对齐

justify-items 属性控制水平对齐


place-items: <align-items> <justify-items>; place-items: center;
// 等同于
place-items: center center;
// 等同于
align-items: center;
justify-items: center;

2. 并列式多栏布局

<div class="contianer">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>

.container {
display: flex;
flex-wrap: wrap;
justify-content: center;
} .item {
/* flex-grow、flex-shrink、flex-basis */
flex: 1 1 150px;
/* Stretching: */
margin: 5px;
} .item {
/* flex-grow、flex-shrink、flex-basis */
flex: 0 1 150px;
/* No stretching: */
margin: 5px;
}

flex: 0 1

flex 是 、 、 简写形式

flex-shrink:如果容器宽度不足,项目是否可以缩小;

flex-grow:如果容器有多余宽度,项目是否可以扩大;

flex-basis:项目的初始宽度;


flex: <flex-grow> <flex-shrink> <flex-basis>; flex: 1 1 150px;
// 等同于
flex-grow: 1;
flex-shrink: 1;
flex-basis: 150px; flex: 0 1 150px
// 等同于
flex-grow: 0;
flex-shrink: 1;
flex-basis: 150px;

3. 左右两栏式布局

侧边栏固定宽度(可以在一定范围内动态变化),主栏宽度自适应

<div class="container">
<div class="item" contenteditable>
Min: 150px / Max: 25%
</div>
<div class="item" contenteditable>
This element takes the second grid position (1fr), meaning
it takes up the rest of the remaining space.
</div>
</div>
.container {
display: grid;
grid-template-columns: minmax(150px, 25%) 1fr;
}

grid-template-columns: minmax(, ) ...

CSS Units Functions: calc(), minmax(), var(--variable), repeat()

grid-template-columns 指定页面分成两列

第一列的宽度是 minmax(150px, 25%),即最小宽度为150px,最大宽度为总宽度的25%;

第二列为 1fr,即所有剩余宽度;

grid-template 是 、、 简写形式


// 等同于
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows:

https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template

CSS 1fr

CSS Grid Layout 引入了一个新的长度单位,称为 fr,它是“分数”的缩写。

MDN 将 fr 单位定义为一个表示网格容器中可用空间的一部分的单位。

Fractional unit / 小数单位

.container {
display: grid;
width: 800px;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 150px 150px;
grid-gap: 1rem;
} // 等同于 .container {
display: grid;
width: 800px;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, 150px);
grid-gap: 1rem;
}

https://mozilladevelopers.github.io/playground/css-grid/04-fr-unit/

https://codepen.io/xgqfrms/pen/bGeydOY

4. 三明治布局, 上中下布局

页眉、内容区、页脚

header main footer

布局始终会占满整个页面高度

<div class="container">
<header class="item" contenteditable>
Header Content
</header>
<main class="itemn" contenteditable>
Main Content
</main>
<footer class="item" contenteditable>
Footer Content
</footer>
</div>
.container {
display: grid;
grid-template-rows: auto 1fr auto;
}

auto 由内容的高度决定

1fr 占用所有剩余空间的比例

grid-template-rows 指定垂直方向布局,这里是从上到下划分三部分。

第一部分(页眉)和第三部分(页脚)的高度都为 auto,即本来的内容高度;

第二部分(内容区)的高度为 1fr,即剩余的所有高度,这可以保证页脚始终在容器的底部。


// 等同于

5. 圣杯布局

页眉

内容区(左边栏、主栏、右边栏)

页脚

<div class="containert">
<header class="section">
Header
</header>
<div class="left-side section" contenteditable>
Left Sidebar
</div>
<main class="section" contenteditable>
Main Content
</main>
<div class="right-side section" contenteditable>
Right Sidebar
</div>
<footer class="section">
Footer
</footer>
</div>

.container {
display: grid;
grid-template: auto 1fr auto / auto 1fr auto;
}
header {
padding: 2rem;
grid-column: 1 / 4;
}
.left-side {
grid-column: 1 / 2;
}
main {
grid-column: 2 / 3;
}
.right-side {
grid-column: 3 / 4;
}
footer {
grid-column: 1 / 4;
}

grid-template 是 / 简写形式

grid-template-rows(垂直方向) 山下布局

grid-template-columns(水平方向)左右布局

grid-template: auto 1fr auto / auto 1fr auto; 表示页面在垂直方向和水平方向上,都分成三个部分

  1. 首先垂直方向将布局划分为 (上 中 下) 3 部分
  2. 其次水平方向再将 (上 中 下) 三部分,分别划分为 (左 中 右) 3 部分
grid-template: auto 1fr auto / auto 1fr auto;
// 等同于
grid-template-columns auto 1fr auto;
grid-template-rows:: auto 1fr auto;

转换成 三明治布局, 上中下布局 ???

<div class="containert">
<header class="section">
Header
</header>
<main class="section" contenteditable>
<div class="left-side section" contenteditable>
Left Sidebar
</div>
<div class="center section" contenteditable>
Main Content
</div>
<div class="right-side section" contenteditable>
Right Sidebar
</div>
</main>
<footer class="section">
Footer
</footer>
</div>

6.



7.



8.



9.



10.



Grid Layout



Flex Layout



refs

https://1linelayouts.glitch.me/

https://www.youtube.com/watch?v=qm0IfG1GyZU

https://codepen.io/una

http://www.ruanyifeng.com/blog/2020/08/five-css-layouts-in-one-line.html

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html

https://www.mozilla.org/zh-CN/firefox/browsers/

https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Basic_Concepts_of_Grid_Layout

https://stackoverflow.com/questions/49145552/how-is-grid-template-rows-auto-auto-1fr-auto-interpreted

https://university.webflow.com/lesson/css-grid-fractional-unit-fr-overview

https://www.digitalocean.com/community/tutorials/css-css-grid-layout-fr-unit

https://css-tricks.com/introduction-fr-css-unit/

https://css-tricks.com/snippets/css/complete-guide-grid/

https://www.smashingmagazine.com/understanding-css-grid-template-areas/

https://grid.layoutit.com/

https://github.com/Leniolabs/layoutit-grid



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


1 line of CSS Layouts的更多相关文章

  1. [CSS] Build Responsive CSS Layouts with Tachyons

    Building responsive css layouts is critical in any modern website. Tachyons makes this easy by desig ...

  2. Designing CSS Layouts With Flexbox Is As Easy As Pie

    This article is an updated excerpt of the chapter “Restyle, Recode, Reimagine With CSS3″ from our Sm ...

  3. 6 种CSS设置居中的方法

    原文 Demos of each of the methods below by clicking here. Horizontal centering with css is rather easy ...

  4. 只要一行代码,实现五种 CSS 经典布局

    常用的页面布局,其实就那么几个.下面我会介绍5个经典布局,只要掌握了它们,就能应对绝大多数常规页面. 这几个布局都是自适应的,自动适配桌面设备和移动设备.代码实现很简单,核心代码只有一行,有很大的学习 ...

  5. [css]实现垂直居中水平居中的几种方式

    转自博客 http://blog.csdn.net/freshlover/article/details/11579669 居中方式: 一.容器内(Within Container) 内容块的父容器设 ...

  6. 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术

    Ⅰ.绝对定位居中(Absolute Centering)技术 我们经常用margin:0 auto来实现水平居中,而一直认为margin:auto不能实现垂直居中--实际上,实现垂直居中仅需要声明元素 ...

  7. CSS水平居中/垂直居中的N个方法

    我看最近微博流行CSS居中技术,老外码农争相写相关的文章,一篇赛一篇的长啊,我把几篇归纳总结了一下,算是笔记. 孔乙己曾说:"茴香豆的回字有四种写法",万一哪天有个面试官问你:&q ...

  8. CSS网页布局全精通

    在本文中将使用四种常见的做法,结合CSS于结构化标记语法制作两栏布局.很快地就会发现,不用嵌套表格,间隔用的GIF也能做出分栏版面布局. 相关文章:CSS网页布局开发小技巧24则 稍后在"技 ...

  9. 使用自己的CSS框架(转)

    [经典推介]CSS框架选择向导 不少CSS框架已经存在了一段时间,但大多数Web开发人员避免使用它们. 相反最有经验的开发者希望创建自己的CSS框架,提供个性化解决方案的优势,并减少对第三方的解决方案 ...

随机推荐

  1. Vue中组件间通信的方式

    Vue中组件间通信的方式 Vue中组件间通信包括父子组件.兄弟组件.隔代组件之间通信. props $emit 这种组件通信的方式是我们运用的非常多的一种,props以单向数据流的形式可以很好的完成父 ...

  2. CI/CD 最佳实践的基本原则 互联网后端架构 2020-10-04

    https://mp.weixin.qq.com/s/UfGmCueEm8n2jdegng1F_g CI/CD 最佳实践的基本原则 互联网后端架构 2020-10-04

  3. loj10007线段

    题目描述 数轴上有 n 条线段,选取其中 k 条线段使得这 k 条线段两两没有重合部分,问 k 最大为多少. 输入格式 第一行为一个正整数 n: 在接下来的 n 行中,每行有 2 个数 a_i,b_i ...

  4. JavaScript——DOM操作

    DOM-(Document Object Model)即文档对象模型. JavaScript可以动态地修改DOM,从而来修改HTML的内容. 查找HTML元素 通过 id 找到 HTML 元素 通过标 ...

  5. SpringMVC学习笔记2

    一.日期赋值 目标:在springMVC中日期赋值兼容性更广泛 不能直接处理,必须使用转换器1.定义转换器,实现接口Converter<From,To> package com.zy.co ...

  6. [POJ1985] Cow Marathon 「树的直径」

    >传送门< 题意:求树的直径 思路:就是道模板题,两遍dfs就求出来了 Code #include <cstdio> #include <iostream> #in ...

  7. P2801 教主的魔法 (分块)

    题目传送 长度为\(n(n\le 1000000)\)的数组,\(q(q\le 3000)\) 次操作.修改操作即将某个区间的值增加某个不大于1000的值,查询操作即查询某个区间比C大于等于的数有多少 ...

  8. P3195 [HNOI2008] 玩具装箱(斜率优化DP)

    题目链接 设\(d[i]\)为将前 \(i\) 个玩具装入箱中所需得最小费用 容易得到动态转移方程: \[d[i] = min(d[j] + (s[i]-s[j]+i-j-1-L)^2), (j< ...

  9. leetcode常见问题

    开学了 开始每日刷leetcode了  ,开一个新分类记录做题过程和心得. 1.出现本地调试无问题但提交后报错时,很有可能是全局变量导致的,解决办法 (1).尽量写成局部变量,函数尽量传参进入. (2 ...

  10. java——final、权限修饰符

    final修饰类:  final修饰成员方法: final修饰局部变量的时候: 对于基本类型来说,变量的数值不能改变 对于引用类型来说,变量的地址不能改变 final修饰成员变量的情况: 权限修饰符: