FreeMusic项目优化(一)——flex布局学习记录
参考博客:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
flex布局是w3c于09年提出的,用于简便,整洁,响应式地解决布局问题的手段,例如垂直居中布局。flex全称Flexible Box,也称“弹性布局”。
块级元素设置flex布局:display:flex
行内元素设置flex布局:display:inline-flex
当设置flex属性之后,元素的float,vertical-align和clear样式将失效。
flex主要属性:主轴(main axis)+交叉轴(cross axis),主轴开始位置(main start),结束位置(main end),交叉轴开始位置(cross start),结束位置(cross end),单个项目占据的主轴空间(main size),单个项目占据的交叉轴空间(cross size)
一、容器的属性(6个)
1.flex-direction,决定了主轴的方向,属性值如下:
row:水平方向,起点在左边
row-reverse:水平方向,起点在右边
column:垂直方向,起点在上边
column-reverse:垂直方向,起点在下边
2.flex-wrap,定义了如果轴线排不下如何换行
nowrap:默认不换行
wrap:换行
wrap-reverse:换行,第一行在下方
3.felx-flow:flex-direction+flex-wrap,如写作:flex-flow:row wrap
4.justify-content:定义了元素在主轴的对齐方式
5.align-items:定义了元素在交叉轴的对齐方式
6.align-content:定义了多行情况下(多根轴线)的对齐方式,只有一根轴线的话该属性无效
二、项目属性(6个)
1.order:定义项目的排列顺序,数值越小越靠前,默认为0
2.flex-grow:定义项目的放大比例,默认为0,空间足够也不放大
3.flex-shrink(无负值):定义项目的缩小比例,默认为1,空间不够则缩小
4.flex-basis:定义了项目占据的主轴空间,如设置flex-basis:300px,则项目占据固定大小,默认auto
5.flex:上述2-4的属性的汇总写法,默认0,1,auto,快捷写法:auto(1 1 auto)和none(0 0 auto)
6.align-self:允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性,默认继承align-items属性,
三、利用flex布局来优化项目布局,效果如下:
1.导航条

样式设置如下,主轴用了space-around布局,交叉轴用了center属性,利用flex布局来实现水平垂直居中真的是很简单。
#nav-bar {
display: flex;
justify-content: space-around;
align-items: center;
height: 80px;
background-color: #2C3E50;
}
2.主页面

因为目前主页面的内容实在是太少了,所以想着要做一个效果就是让div自动填满屏幕余下的高度,也就是上图效果,清晰一点用手机看的话是这样,一直铺满余下空间:

正确简单的做法是利用flex布局:
1.给html body标签都设置height:100%
2.上图div的父div设置为flex布局,项目里父div是#app,样式如下:
#app {
display: flex;
flex-direction: column;
height: 100%;
}
3.然后是设置上图div,添加样式:flex:1,如下:
#main-page {
flex:; /*这个属性是为了让div填满剩余屏幕高度*/
width: 100%;
background-color: #DCDCDC;
}
ps:还有另外一种实现方法,但是存在问题,就是直接设置子div(#main-page)的height:100%,但是这样会存在一个问题,因为项目中导航条这个div是有固定高度80px的,所以如果设置了#main-page的height:100%,那么页面高度会溢出80px,也就是会出现滚动条,目前没有想到比较好的解决方法。
后面基本都是利用felx布局把页面布局全部修改了一遍,还是比较简单的。
FreeMusic项目优化(一)——flex布局学习记录的更多相关文章
- flex 布局学习
flex 布局学习 寻根溯源话布局 一切都始于这样一个问题:怎样通过 CSS 简单而优雅的实现水平.垂直同时居中.记得刚开始学习 CSS 的时候,看到 float 属性不由得感觉眼前一亮,顺理成章的联 ...
- Flex 项目属性:flex 布局示例
flex属性: flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto.后两个属性可选. 该属性有两个快捷值:auto (1 1 auto ...
- CSS flex 布局学习笔记
写在前面 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 Flex 布局. 采用 Flex 布局的元素 ...
- Flex布局学习笔记
任何元素都可以使用Flex布局,包括行内元素 display: flex; display: inline-flex使用Flex布局之后,子元素的float, clear, vertical-alig ...
- flex布局学习
教程来自阮一峰的flex布局教程实例篇 容器五大属性: flex-direction:容器内项目的排列方向 (1)row:横向从左往右排列(默认) (2)row-reverse:横向从右往左排列 (3 ...
- flex布局学习总结
最近项目主要是小程序,小程序里面的布局主要采用flex布局,之前对flex 布局只是稍作了解,总结下flex 布局的常用套路 容器 Flex是Flexible Box的缩写,意为"弹性布局& ...
- Flex 布局学习笔记
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 前端flex布局学习笔记
flex布局,即为弹性布局,其为盒模型提供最大的灵活性,任何一个容器都可以指定为flex布局. eg:.box{ display:flex: } 行内元素也可以使用flex布局. 注意:设置flex布 ...
- flex布局学习总结--阮一峰
基本概念: 采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器".它的所有子元素自动成为容器成员,称为 Flex 项目(flex it ...
随机推荐
- BZOJ_2208_[Jsoi2010]连通数_强连通分量+拓扑排序+手写bitset
BZOJ_2208_[Jsoi2010]连通数_强连通分量+拓扑排序+手写bitset Description Input 输入数据第一行是图顶点的数量,一个正整数N. 接下来N行,每行N个字符.第i ...
- 无向图hash
一个效果还行的 无向图hash判同构的方法 求出每个点向其它点的最短路,然后排序,然后按字符串拼接起来,再按每个点的字符串 排序后的rank 作为每一个点的初始hash值 然后每一轮,把每个点的相邻点 ...
- opencv 知识点笔记
1.Opencv中cvScalar是CV_RGB的宏,cvScalar的储存顺序是B-G-R,而CV_RGB的储存顺序是R-G-B
- 给YUI Compressor添加右键命令,完成快捷压缩
YUI Compressor默认不带右键安装功能 YUI Compressor非常好用,特别是JS的混淆是众多JS Coding的最爱.可惜官网提供的版本都不具备右键功能,每次压缩都要cmd输入一些命 ...
- docker 学习(六) export/import/load/save images
export/import 是一对命令: load/save是一对命令 一: export / import使用 1: 查看镜像: docker ps -a 2:导出镜像:docker ex ...
- Outlook 开发2
转自:http://www.cnblogs.com/madebychina/archive/2011/09/20/madebychina_2.html C#使用如下代码调用Outlook2003发送邮 ...
- 量子隐形传态1 Quantum Teleportation
量子隐形传态是量子纠缠的又一个应用. 隐形传态,所谓隐形的意思就是没有物质介质就传递了信息,在经典世界,传递信息要有介质,光.电磁波或者其他的什么,但是在量子的世界里,我可以把信息传递给你,并且不传递 ...
- JAVA全栈工程师应具备怎样的知识体系?
Java是超高人气编程语言,拥有跨平台.面向对象.泛型编程等特性.在TIOBE编程语言排行榜中,连续夺得第一宝座,而且国内各大知名互联网公司,后端开发首选语言:非Java莫属. 今天是针对各类目有更详 ...
- PLSQL导入导出oracle表 表空间
PLSQL导入导出表的正确步骤 原来总是直接 tools->import talbes->Oracle Import结果发现有的时候会出错:有的表不能正确导入, baidu+googel解 ...
- 线性SVM与Softmax分类器
1 引入 上一篇介绍了图像分类问题.图像分类的任务,就是从已有的固定分类标签集合中选择一个并分配给一张图像.我们还介绍了k-Nearest Neighbor (k-NN)分类器,该分类器的基本思想是通 ...