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框架,提供个性化解决方案的优势,并减少对第三方的解决方案 ...
随机推荐
- JavaScript中创建对象的三种方式!
JavaScript中创建对象的三种方式! 第一种 利用对象字面量! // 创建对象的三种方式! // 1 对象字面量. var obj = { // 对象的属性和方法! name: 'lvhang' ...
- CentOS安装mysql、JDK、Tomcat部署环境
1.1. 安装mysql-5.6 1.1.1. 检测系统内部有没有安装其他的mysql数据库 $ rpm -qa | grep mysql 1.1.2. 如果内部有需要先删除Mysql $ yum r ...
- Shell从入门到精通
熟悉基本shell操作不仅是运维的基本功,对于开发来说也是多多益善,我在学习的过程中,总结了十个练手的小demo,并附上涉及的知识点,仅供娱乐. 1. 多线程ping监控,检查同一网段的IP是否连通 ...
- testng学习笔记-- beforesuit和aftersuit
一.定义 测试套件,主要关注执行顺序 套件:suit可以包含多个class 二.代码标签 三.运行结果
- Spring Security OAuth2.0认证授权六:前后端分离下的登录授权
历史文章 Spring Security OAuth2.0认证授权一:框架搭建和认证测试 Spring Security OAuth2.0认证授权二:搭建资源服务 Spring Security OA ...
- 一例 Go 编译器代码优化 bug 定位和修复解析
https://mp.weixin.qq.com/s/Tyl6dSb7mHBuqqN6WvEuaw
- 【汇编实践】go assembly
https://mp.weixin.qq.com/s/B577CdUkWCp_XgUc1VVvSQ asmshare/layout.md at master · cch123/asmshare htt ...
- 加密填补 填充 pad padding
RFC 1423 - Privacy Enhancement for Internet Electronic Mail: Part III: Algorithms, Modes, and Identi ...
- Spring常见问题总结
1. 什么是 Spring 框架? Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性.Spring 官网:https://spring.io/. 我们一般说 Sprin ...
- 最简单直接地理解Java软件设计原则之开闭原则
写在前面 本文属于Java软件设计原则系列文章的其中一篇,后续会继续分享其他的原则.想以最简单的方式,最直观的demo去彻底理解设计原则.文章属于个人整理.也欢迎大家提出不同的想法. 首先是一些理论性 ...