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. [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本

    [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本 目录 [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本 0x00 摘要 0x01 背景 1.1 代码进化 1.2 Deep ...

  2. CUDA 介绍

    1. 介绍 1.1 GPU vs. CPU GPU 使用更多的晶体管进行数据处理,而不是数据缓存和流控制,因此可以提供高度的并行计算. GPU 可以通过计算来隐藏内存访问延迟,而不是依赖于大量的数据缓 ...

  3. JavaScript小案例-阶乘!

    JavaScript小案例-阶乘! 阶乘:就是像台阶一样一阶一阶的,从高阶到低阶,依次乘下来!代码超少!容易理解! // factorial 阶乘 // 如果 function factorial(n ...

  4. The Garbage Collection Handbook

    The Garbage Collection Handbook The Garbage Collection Handbook http://gchandbook.org/editions.html ...

  5. (Oracle)预定义异常

    预定义异常: 为了 Oracle 开发和维护的方便,在 Oracle 异常中,为常见的异常码定义了对应的异常名称,称为预定义异常,常见的预定义异常有: 异常名称 异常码 描述 DUP_VAL_ON_I ...

  6. RocketMQ 的几个简单问题与答案

    1 单机版消息中心 一个消息中心,最基本的需要支持多生产者.多消费者,例如下: class Scratch { public static void main(String[] args) { // ...

  7. Spring听课笔记(tg)

    0. 地址:https://www.bilibili.com/video/av21335209 1.综述,Spring主要的复习要点集中在以下几点 -- Spring的整体结构,Maven依赖(环境搭 ...

  8. Prometheus为你的SpringBoot应用保驾护航

    前面我们介绍了Prometheus的作用和整体的架构,相信大家对Prometheus有了一定的了解. 具体可以查看这篇文章:https://mp.weixin.qq.com/s/QoAs0-AYy8k ...

  9. JavaWeb——JSP,JSP指令,注释

    什么是JSP JSP原理 JSP页面中的java代码服务器是如何执行的 Web服务器在调用jsp时会给jsp提供一些什么java对象 JSP执行过程 JSP页面的元素包括 JSP模版元素 JSP脚本片 ...

  10. Java-eclipse导入jar包

    Java-eclipse导入jar包 方法一:基本步骤式 右键项目属性,选择Property,在弹出的对话框左侧列表中选择Java Build Path,如下图所示:选择Add External JA ...