1 line of CSS Layouts
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; 表示页面在垂直方向和水平方向上,都分成三个部分
- 首先垂直方向将布局划分为 (上 中 下) 3 部分
- 其次水平方向再将 (上 中 下) 三部分,分别划分为 (左 中 右) 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
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://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://github.com/Leniolabs/layoutit-grid
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
1 line of CSS Layouts的更多相关文章
- [CSS] Build Responsive CSS Layouts with Tachyons
Building responsive css layouts is critical in any modern website. Tachyons makes this easy by desig ...
- 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 ...
- 6 种CSS设置居中的方法
原文 Demos of each of the methods below by clicking here. Horizontal centering with css is rather easy ...
- 只要一行代码,实现五种 CSS 经典布局
常用的页面布局,其实就那么几个.下面我会介绍5个经典布局,只要掌握了它们,就能应对绝大多数常规页面. 这几个布局都是自适应的,自动适配桌面设备和移动设备.代码实现很简单,核心代码只有一行,有很大的学习 ...
- [css]实现垂直居中水平居中的几种方式
转自博客 http://blog.csdn.net/freshlover/article/details/11579669 居中方式: 一.容器内(Within Container) 内容块的父容器设 ...
- 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术
Ⅰ.绝对定位居中(Absolute Centering)技术 我们经常用margin:0 auto来实现水平居中,而一直认为margin:auto不能实现垂直居中--实际上,实现垂直居中仅需要声明元素 ...
- CSS水平居中/垂直居中的N个方法
我看最近微博流行CSS居中技术,老外码农争相写相关的文章,一篇赛一篇的长啊,我把几篇归纳总结了一下,算是笔记. 孔乙己曾说:"茴香豆的回字有四种写法",万一哪天有个面试官问你:&q ...
- CSS网页布局全精通
在本文中将使用四种常见的做法,结合CSS于结构化标记语法制作两栏布局.很快地就会发现,不用嵌套表格,间隔用的GIF也能做出分栏版面布局. 相关文章:CSS网页布局开发小技巧24则 稍后在"技 ...
- 使用自己的CSS框架(转)
[经典推介]CSS框架选择向导 不少CSS框架已经存在了一段时间,但大多数Web开发人员避免使用它们. 相反最有经验的开发者希望创建自己的CSS框架,提供个性化解决方案的优势,并减少对第三方的解决方案 ...
随机推荐
- Flink的状态与容错
本文主要运行到Flink以下内容 检查点机制(CheckPoint) 状态管理器(StateBackend) 状态周期(StateTtlConfig) 关系 首先要将state和checkpoint概 ...
- API服务接口签名代码与设计,如果你的接口不走SSL的话?
在看下面文章之前,我们先问几个问题 rest 服务为什么需要签名? 签名的几种方式? 我认为的比较方便的快捷的签名方式(如果有大神持不同意见,可以交流!)? 怎么实现验签过程 ? 开放式open ap ...
- CPU飙高,系统性能问题如何排查?
CPU飙高,系统性能问题如何排查? 原创 雍雍 阿里技术 2020-09-29 https://mp.weixin.qq.com/s/fzLcAkYwKhj-9hgoVkTzaw
- Lucene 查询原理 传统二级索引方案 倒排链合并 倒排索引 跳表 位图
提问: 1.倒排索引与传统数据库的索引相比优势? 2.在lucene中如果想做范围查找,根据上面的FST模型可以看出来,需要遍历FST找到包含这个range的一个点然后进入对应的倒排链,然后进行求并集 ...
- Linux命令——netcat
简介 netcat的简写是nc,被设计为一个简单.可靠的网络工具,主要作用如下: 1 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口 2 端口的扫描,nc可 ...
- 分布式kv存储系统之Etcd集群
etcd是什么? etcd是一个高可用的分布式键值数据库,可用于服务发现,etcd采用 raft 一致性算法,基于 Go 语言实现.其特点有简单易用,所谓简单易用是指安装配置简单,提供http/htt ...
- 分布式缓存 — MongoDB
--- 数据库管理系统 数据库管理系统主要分为俩大类:RDBMS.NOSQL.在个人电脑.大型计算机和主机上应用最广泛的数据库管理系统是关系型DBMS.NoSQL是对不同于传统的关系数据库的数据库管理 ...
- 【xml】控件常用属性
https://www.cnblogs.com/xqz0618/p/textview.html (常用,生动) https://www.jianshu.com/p/992324336dd9 (全,简洁 ...
- 【HTB系列】靶机Frolic的渗透测试详解
出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...
- SignalR入坑笔记
什么是SignalR ASP.NET Core SignalR 是一个开源库,它简化了向应用程序添加实时 web 功能的功能. 实时 Web 功能使服务器端代码能够即时将内容推送到客户端. ASP.N ...