常用的flex知识 ,比起float position 好用不少
flex布局具有便捷、灵活的特点,熟练的运用flex布局能解决大部分布局问题,这里对一些常用布局场景做一些总结。
web页面布局(topbar + main + footbar)
示例代码
要实现的效果如下:
html代码:
<div class="container">
<header>header...</header>
<main>内容</main>
<footer>footer...</footer>
</div>
css代码:
header{
height:100px;
background:#ccc;
}
footer{
height:100px;
background:#ccc;
}
.container{
display:flex;
flex-direction:column;
height:100vh;
}
main{
flex-grow:1;
}
应用的flex属性
本例中主要应用了以下flex属性:
- flex-direction:column 使整体布局从上到下排列
- flex-grow:1, 应用于main,使得main自动填充剩余空间
本例中应用以较少的css代码实现了传统的上中下页面布局,其中的关键通过flex-grow的使用避免了当main内容过少时footer部分会被提升到页面上方的问题(传统方式上可能需要靠绝对定位来解决了~)
每行的项目数固定并自动换行的列表项
要实现的效果如下:
html代码:
示例代码
css代码:
ul{
display:flex;
flex-wrap:wrap;
}
li{
list-style:none;
flex:0 0 25%;
background:#ddd;
height:100px;
border:1px solid red;
}
应用的flex属性
本例中主要应用了以下flex属性:
flex:0 0 25%,相当于flex-basis:25%,使得每一个列表项的宽度占外层容器(本例中的ul元素)的25%,因此每行最多能够排开四个列表项。
flex-wrap:wrap,使得每行填满时会自动换行
实现自动划分多余空间的列表项
本例的效果和上例中的图2很相似,只是每行为3个固定宽度的列表项,并且各列表项之间留有相同宽度的空隙
传统方式上实现这种效果,不可避免的要用到负margin,那么现在来看了用flex实现的方式吧
示例代码
css代码:
ul{
display:flex;
flex-wrap:wrap;
justify-content:space-between;
border:1px solid black;
}
li{
list-style:none;
width:120px;
background:#ddd;
height:100px;
border:1px solid red;
}
应用的flex属性
本例中主要应用了以下flex属性:
- justify-content:space-between;使主轴方向的多余空间平均分配在两两item之间
平均分配空间的栅格布局
各大UI里栅格布局基本是必备的布局之一,平均分配布局又是栅格布局里最常用的布局,利用flex实现平均分配的栅格布局,关键之处就是利用它的自动收缩空间。
示例
html如下:
<div class="row">
<div class="column">column1</div>
<div class="column">colum22</div>
<div class="column">colum322</div>
</div>
css如下:
.row{
display:flex;
flex-wrap:wrap;
border:1px solid black;
}
.column{
list-style:none;
background:#ddd;
flex:1;
height:100px;
border:1px solid red;
}
应用的flex属性
本例中主要应用了以下flex属性:
- flex:1 这里针对item应用了flex:1,相当于flex:1 1 0%,而之所以不管各个column元素内容的宽度为多大,都能均分到相等的空间,正式因为相当于在设置了flex-grow:1使得剩余空间按相等比例自动分配的同时又设置了flex-basis:0%,才使得整个空间都平均分配了。
圣杯布局
传统的圣杯布局需要涉及绝对定位、浮动、负margin等几大最头疼属性,有了flex布局以后发现,原来这么简单的配方,也能实现这么复杂的效果哈~
示例代码
html代码:
<div class="container">
<main>main</main>
<aside>aside</aside>
<nav>nav</nav>
</div>
css代码:
.container{
display:flex;
height:100vh;
}
aside{
width:50px;
background:#ccc;
}
main{
flex-grow:1;
background:#def;
}
nav{
width:80px;
background:#ccc;
order:-1;
}
应用的flex属性
- 对main用flex-grow:1,使得中间主元素空间自动扩充
- 对nav应用order:-1,使得order处于最左侧(html中main写在了最前,以利于优先加载主内容区)
元素水平垂直居中
如何让一个元素同时水平垂直居中?答案很多样也很复杂,但是在这么多样化得答案中flex绝对是最简单的一种了~
示例代码
html代码:
<div class="container">
<div class="inner">我是中间的内容</div>
</div>
css代码:
.container{
height:300px;
width:300px;
border:1px solid red;
display:flex;
justify-content:center;
align-items:center;
}
.inner{
border:1px solid black;
}
应用的flex属性
- justify-content:center;使item元素水平居中
- align-items:center;使item元素垂直居中
常用的flex知识 ,比起float position 好用不少的更多相关文章
- jsp学习---css基础知识学习,float,position,padding,div,margin
1.常用页面布局 效果图: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- Ext常用开发基础知识
Ext常用开发基础知识 组件定义 //这种方法可以缓存所需要的组件 调用起来比较方便(方法一 ) Ext.define('MySecurity.view.home.HomePanel', { //添加 ...
- 【20】display,float,position的关系
[20]display,float,position的关系 如果display为none,元素不显示. 否则,如果position值为absolute或者fixed,元素绝对定位,float的计算值为 ...
- HTML布局四剑客-Flex,Grid,Table,Float
前言 在HTML布局中有很多的选择,同一种表现方式可以使用不同的方法来实现.下面来对四种最常见的布局方式进行阐述和解释,它们分别是Float,Table,Grid和Flex Float 第一位出场的就 ...
- CSS基础知识之float
前段时间写过一篇CSS基础知识之position,当时对float的理解不太准确,被慕课网多名读者指出(原文已修正,如有误导实在抱歉).现对float进行更深入的学习,在此把学习心得分享给大家. 浮动 ...
- 网页制作常用的CSS知识
在制作网页中,我们会用到很多CSS的知识,在这里我简单的总结了一些. div 划分区块 ul,li 无序列表(配合划分区块) ol,li 有序列表 a 超链接标签 p 段落标签 h 标题标签 i ...
- 我的总结常用的js知识
nvm nvm是node的包管理工具.在不同的项目下使用不同的node版本.下载地址 https://github.com/coreybutler/nvm-windows/releasesnvm in ...
- Web测试的常用测试用例与知识
1. Web测试中关于登录的测试 2. 搜索功能测试用例设计 3. 翻页功能测试用例 4. 输入框的测试 5. Web测试的常用的检查点 6. 用户及权限管理功能常规测试方法 7. Web测试之兼容性 ...
- Flex布局摆脱float带来的布局问题
完整文章地址http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool 使用浮动(float)的一个比较疑惑 ...
随机推荐
- bzoj 1036: [ZJOI2008]树的统计Count 树链剖分+线段树
1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 16294 Solved: 6645[Submit ...
- JavaSE习题 第四章 类与对象
问答题: 1.在声明类时,类名应该遵守哪些习惯? 1.与文件名相同2.首字母大写 2.类体内容中有那两类比较重要的成员? 1.成员变量2.方法 3.实例方法可以操作类变量吗?类方法可以操作实例变量吗? ...
- ES6的新API如Promise,Proxy,Array.form(),Object.assign()等,Babel不能转码, 使用babel-polyfill来解决
Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator.Generator.Set.Maps.Proxy.Reflect.Symbol.Promis ...
- STL——vector
学到STL的vector,发现手中的材料不是很详细,这里做个汇总. 1 操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> ...
- 力扣(LeetCode) 9.回文数
判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向 ...
- x1c 6th usb-c 接口灯常亮,电源无法充电
症状: 左侧能充电的那个usb-c 红灯始终常亮.拔下电源线也亮着. 系统里电源是始终显示正在充电,即使拔掉外接电源也显示连着外接电源正在充电! ——最吓人的是,用U盘启动进PE,想重装win10,结 ...
- 第 8 章 容器网络 - 050 - 创建 overlay 网络
在 host1 中创建 overlay 网络 ov_net1: docker network create -d overlay ov_net1 -d overlay 指定 driver 为 over ...
- 20165327 2017-2018-2 《Java程序设计》第6周学习总结
20165327 2017-2018-2 <Java程序设计>第6周学习总结 教材内容总结 第八章 String类常用方法 public int length() public boole ...
- xml ----> 几个常用dtd头文件模板
环境: idea ce 2018.1 "File --> settings... --> Editor --> file and code templates" ...
- Github的简易操作
一.初涉Github 1.github官网:https://github.com/ 2.三步走完成账号的创建 3.进入Github主页,选择[Create a repository](创建一个仓库用来 ...