常用的flex知识 ,比起float position 好用不少

时间:2022-05-06 12:30:36

  flex布局具有便捷、灵活的特点,熟练的运用flex布局能解决大部分布局问题,这里对一些常用布局场景做一些总结。

web页面布局(topbar + main + footbar)

示例代码

  要实现的效果如下:

常用的flex知识 ,比起float  position 好用不少
图1

  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属性:

  1. flex-direction:column 使整体布局从上到下排列
  2. flex-grow:1, 应用于main,使得main自动填充剩余空间

本例中应用以较少的css代码实现了传统的上中下页面布局,其中的关键通过flex-grow的使用避免了当main内容过少时footer部分会被提升到页面上方的问题(传统方式上可能需要靠绝对定位来解决了~)

每行的项目数固定并自动换行的列表项

  要实现的效果如下:

常用的flex知识 ,比起float  position 好用不少
图2

  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属性:

  1. flex:0 0 25%,相当于flex-basis:25%,使得每一个列表项的宽度占外层容器(本例中的ul元素)的25%,因此每行最多能够排开四个列表项。

  2. flex-wrap:wrap,使得每行填满时会自动换行

实现自动划分多余空间的列表项

  本例的效果和上例中的图2很相似,只是每行为3个固定宽度的列表项,并且各列表项之间留有相同宽度的空隙

常用的flex知识 ,比起float  position 好用不少
图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属性:

  1. justify-content:space-between;使主轴方向的多余空间平均分配在两两item之间

平均分配空间的栅格布局

  各大UI里栅格布局基本是必备的布局之一,平均分配布局又是栅格布局里最常用的布局,利用flex实现平均分配的栅格布局,关键之处就是利用它的自动收缩空间。

常用的flex知识 ,比起float  position 好用不少
图4

示例

  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属性:

  1. flex:1 这里针对item应用了flex:1,相当于flex:1 1 0%,而之所以不管各个column元素内容的宽度为多大,都能均分到相等的空间,正式因为相当于在设置了flex-grow:1使得剩余空间按相等比例自动分配的同时又设置了flex-basis:0%,才使得整个空间都平均分配了。

圣杯布局

  传统的圣杯布局需要涉及绝对定位、浮动、负margin等几大最头疼属性,有了flex布局以后发现,原来这么简单的配方,也能实现这么复杂的效果哈~

常用的flex知识 ,比起float  position 好用不少
图5 圣杯布局

示例代码

  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属性

  1. 对main用flex-grow:1,使得中间主元素空间自动扩充
  2. 对nav应用order:-1,使得order处于最左侧(html中main写在了最前,以利于优先加载主内容区)

元素水平垂直居中

  如何让一个元素同时水平垂直居中?答案很多样也很复杂,但是在这么多样化得答案中flex绝对是最简单的一种了~

常用的flex知识 ,比起float  position 好用不少
图6 水平垂直居中

示例代码

  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属性

  1. justify-content:center;使item元素水平居中
  2. align-items:center;使item元素垂直居中

常用的flex知识 ,比起float position 好用不少的更多相关文章

  1. jsp学习---css基础知识学习&comma;float&comma;position&comma;padding&comma;div&comma;margin

    1.常用页面布局 效果图: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  2. Ext常用开发基础知识

    Ext常用开发基础知识 组件定义 //这种方法可以缓存所需要的组件 调用起来比较方便(方法一 ) Ext.define('MySecurity.view.home.HomePanel', { //添加 ...

  3. 【20】display&comma;float&comma;position的关系

    [20]display,float,position的关系 如果display为none,元素不显示. 否则,如果position值为absolute或者fixed,元素绝对定位,float的计算值为 ...

  4. HTML布局四剑客-Flex&comma;Grid&comma;Table&comma;Float

    前言 在HTML布局中有很多的选择,同一种表现方式可以使用不同的方法来实现.下面来对四种最常见的布局方式进行阐述和解释,它们分别是Float,Table,Grid和Flex Float 第一位出场的就 ...

  5. CSS基础知识之float

    前段时间写过一篇CSS基础知识之position,当时对float的理解不太准确,被慕课网多名读者指出(原文已修正,如有误导实在抱歉).现对float进行更深入的学习,在此把学习心得分享给大家. 浮动 ...

  6. 网页制作常用的CSS知识

    在制作网页中,我们会用到很多CSS的知识,在这里我简单的总结了一些. div    划分区块 ul,li 无序列表(配合划分区块) ol,li 有序列表 a 超链接标签 p 段落标签 h 标题标签 i ...

  7. Web测试的常用测试用例与知识

    1. Web测试中关于登录的测试 2. 搜索功能测试用例设计 3. 翻页功能测试用例 4. 输入框的测试 5. Web测试的常用的检查点 6. 用户及权限管理功能常规测试方法 7. Web测试之兼容性 ...

  8. Flex布局摆脱float带来的布局问题

    完整文章地址http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool 使用浮动(float)的一个比较疑惑 ...

  9. float position的測试案例

    依据<a target=_blank href="http://blog.csdn.net/goodshot/article/details/44348525">htt ...

随机推荐

  1. Linux堆溢出漏洞利用之unlink

    Linux堆溢出漏洞利用之unlink 作者:走位@阿里聚安全 0 前言 之前我们深入了解了glibc malloc的运行机制(文章链接请看文末▼),下面就让我们开始真正的堆溢出漏洞利用学习吧.说实话 ...

  2. java操作word,excel,pdf

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

  3. iOS 7 Pushing the Limits - Good &amp&semi; Bad Namings in Cocoa

    Cocoa is a dynamically typed language, and you can easily get confused about what type you are worki ...

  4. 04737&lowbar;C&plus;&plus;程序设计&lowbar;第6章&lowbar;继承和派生

    例6.1 使用默认内联函数实现单一继承. #include<iostream> using namespace std; class Point { private: int x, y; ...

  5. zju2676 Network Wars 分数规划&plus;网络流

    题意:给定无向图,每条边有权值,求该图的一个割集,是的该割集的平均边权最小 Amber的<最小割模型在信息学竞赛中的应用>中讲的很清楚了. 二分答案k,对每条边进行重新赋值为原边权-k,求 ...

  6. AJAX封装(IE)

    function ajax(url,fnsucc,fnFaild){ if(window.XMLHttpRequest){ var oAjax = new XMLHttpRequest(); } el ...

  7. 大数据入门基础系列之Hadoop1&period;X、Hadoop2&period;X和Hadoop3&period;X的多维度区别详解(博主推荐)

    不多说,直接上干货! 在前面的博文里,我已经介绍了 大数据入门基础系列之Linux操作系统简介与选择 大数据入门基础系列之虚拟机的下载.安装详解 大数据入门基础系列之Linux的安装详解 大数据入门基 ...

  8. oracle 创建表,删除表,修改表,查询表

    1,获取当前用户下的所有表信息 =>  SELECT * FROM user_tables 1.1,查询某一张表的字段信息:SELECT  *  FROM user_tab_columns  w ...

  9. Git两分钟指南-学习入门参考

    Git两分钟指南 http://blog.jobbole.com/78999/ GIT和SVN之间的五个基本区别 http://www.oschina.net/news/12542/git-and-s ...

  10. NetCore的控制台应用中搭建WebServer的方法

    一.新建NetCore控制台项目,并引入下列Nuget包: Microsoft.AspNetCore.StaticFiles.Microsoft.AspNetCore.Http.Microsoft.A ...