Flexbox布局

Flexbox布局

刚开始接触flex布局的时候,只知道它可以用来使子元素水平垂直居中,代码最为简洁好用。

.container {display: flex;justify-content: center;align-items: center;    
}

当然不仅仅是居中问题,flexbox能做的事情大多,能够简单快速解决我们布局所遇到的问题,例如:

  • 可以轻松实现两列、多列布局自适应屏幕的大小,而无需设置块浮动
  • 如果元素容器没有足够的空间,无需重新计算每个子元素的宽度,就可以设置它们在同一行
  • 可以快速让子元素布局在一列,如小屏幕的时候
  • 可以让在子元素相对容器居上、下、左、右、中布局
  • 可以通过属性
    order
    随时改变元素出现的顺序,无需改变HTM结构,以便适应屏幕大小不同和设备差异
  • 如果元素容器设置百分比sui视窗大小改变,不用提心未指定元素的确切宽度而破坏布局,因为容器中的每个子元素都可以自动分配容器的宽度或高度的比例

浏览器对最新规范flexbox的支持情况如下:

Flex布局概念

  • 弹性布局是指通过调整其内元素的宽高,从而在任何显示设备上实现对可用显示空间最佳填充的能力。弹性容器扩展其内元素来填充可用空间,或将其收缩来避免溢出。
  • flex布局模型不同于块和内联模型布局,块和内联模型的布局计算依赖于块和内联的流方向,而flex布局依赖于flex directions。

Flex container(Flex 容器)

1.flex container

  • display

      display: other values | flex | inline-flex

    其中1,2,3,4为div块

2.Orientation

  • flex-direction(设置flex容器的主轴方向,指定flex项目在flex容器中的排列方式,水平和纵向两种。)

      flex-direction: row | row-reverse | column | column-reverserow(默认值):主轴为水平方向,起点在左端。row-reverse:主轴为水平方向,起点在右端。column:主轴为垂直方向,起点在上端。column-reverse:主轴为垂直方向,起点在下端。

  • flex-wrap(默认不换行,设置了换行wrap/wrap-reverse后,子元素大小总和大于容器大小即换行)

      flex-wrap: nowrap | wrap | wrap-reversenowrap(默认值):不换行wrap:伸缩容器多行显示wrap-reverse:和wrap相反

  • flex-flow: <‘flex-direction’> || <‘flex-wrap’>(缩写)

      flex-flow: row nowrap; /* default */

3.Alignment

  • justify-content(指定flex项目在flex容器沿着主轴在当前行的对齐方式。)

      justify-content: flex-start | flex-end | center | space-between | space-around 

    其中

    space-around
    的第一个Flex项目左边的间距和最后一个Flex项目右边的间距是其他相相邻flex项目之间间的一半。

  • align-items(指定flex项目在flex容器沿着侧轴在当前行的对齐方式。)

      align-items: flex-start | flex-end | flex-center | base-line | stetch

  • align-content(针对多行、当你设定flex-wrap: wrap;且容器侧轴大小空间不够)

      align-content: flex-start | flex-end | center | space-between | space-around | strecth

4.Flex容器无效属性

  • ::first-line || ::first-letter
  • column-*属性

Flex items(Flex 项目)

1.Ordering

  • order(改变某个flex-item在页面中出现的顺序,order值小的排在前面)

2.Alignment

  • align-self(单独设置某个flex-items的属性,覆盖align-items设置的样式)

      align-self: auto | flex-start | flex-end | flex-center | baseline | stretch

3.Flexibility

  • flex-grow

      flex-grow: <number>; /* default 0 */
    按比例划分空间,其中“3”块由1/8→2/8→6/8
  • flex-shrink(与grow相反)

      flex-shrink: <number>; /* default 1 */
  • flex-basis(定义项目占据主轴main size的空间)

      flex-basis: <length> | auto; /* default auto */

    下面这个 GIF 表示的是它和 width 属性是可以互换的。(但是不完全是这样)

    注意:flex-basis 和 width 不同的地方是,它是和 flex 坐标轴保持一致的,flex-basis是影响主轴上大小。

设置一定大小的flex-basis值后,改变主轴的方向

这个时候改变height,而不是width,flex-basis 根据 flex-direction 的不同会影响到 width 或者 height。

  • flex(默认值为0 1 auto)

      flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]

测试所有属性

Flexbox Playground

实例

demo1:上面的效果demo
demo2:另一个博客结构例子

适用场景

弹性盒子布局主要适用于应用程序的组件及小规模的布局,而(新兴的)栅格布局则针对大规模的布局

拓展阅读

  • 响应式栅格系统
  • Flexbox与网格系统的异同、各自的适用场景

参考资料

  • Flexbox布局W3C官方文档:在学习和阅读其他一些比较老的文章的时候,一定要阅读官方的最新文档说明,一些老的文章可能使用的是老的语法,而新的规范、新的技术在不断更新。
  • 使用 CSS 弹性盒子
  • Flexbox详解
  • 图解CSS3 Flexbox属性
  • 通过动图形象地为你介绍 flexbox 是如何工作的
  • Flex入门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

臭名昭著的Java错误和陷阱

在2000年&#xff0c;我上大学&#xff0c;濒临选择一种语言来发展自己的职业。 Java尚未成为主流&#xff0c;但很受人们欢迎。 与静态html页面相比&#xff0c;小应用程序&#xff08;尚未破碎&#xff09;花哨且富有光泽。 Swing不是构建桌面应用程序的不错选择。 J2EE越来越…

php oracle 配置,关于php:为Windows 64位配置Oracle OCI8

我一直在为Windows配置oracle oci8时遇到问题我正在使用Windows 7 64位&#xff0c;xampp v3.2.2&#xff0c;php 5.6.15和oracle g11 Express我尝试了以下步骤&#xff0c;但是在运行phpinfo时找不到oci软件包&#xff1a;我同时下载了Instant Client Package-Basic和Instant …

CSS_常见布局

1.一列布局——常用于网站首页。 html&#xff1a; 1 <div class"top"></div> 2 <div class"main"></div> 3 <div classfoot></div> css&#xff1a; 1 body{2 margin:0;3 padding: 0;4 …

解决android studio引用远程仓库下载慢(JCenter下载慢)

原文&#xff1a;https://blog.csdn.net/linglingchenchen/article/details/62236723 第一种方法 使用开源中国的maven库 阿里云的(速度飞快)&#xff1a;http://maven.aliyun.com/nexus/content/groups/public/ 替换项目根目录下build.gradle中的 repositories {jcenter()} 为…

Java中的工厂方法模式

在我以前关于模板方法模式的文章中 &#xff0c;我展示了如何利用lambda表达式和默认方法 。 在本文中&#xff0c;我将探讨工厂方法模式&#xff0c;并了解如何利用方法引用&#xff0c;这是Java 8中与lambda表达式一起添加的另一项功能。 让我们考虑一个Vehicle接口及其两个…

会员系统用php框架,代码基地会员中心的PHP签到系统结合thinkphp框架

分享代码基地会员中心的PHP签到系统&#xff0c;PHP很漂亮的签到界面。签到后&#xff0c;会有不同颜色区分。附带PHP签到源码带安装说明和详细注释。(详细查看https://www.daimajidi.com/deal/574)JS:function getUrl(strs) {var url "/demo/1563064903/" strs;re…

MVP数据请求recycview展示

M层 public class Mod {public void shuju(final Modlister modlister){ OkHttpClient okHttpClientnew OkHttpClient();final Request requestnew Request.Builder().url("http://v.juhe.cn/weixin/query?key55010ae808217e996bbf414bbdad843c").build(); Call …

impress.js

介绍一下 impress.js是一个非常炫酷的幻灯片展示框架&#xff0c;依靠CSS3技术。 impress.js使用起来非常简单&#xff0c;下面就来简单介绍一下其用法。 Start 首先&#xff0c;当然要引入impress.js。 在div标签设置id为impress&#xff08;不要求一定是div&#xff09;…

Spring MVC:表单处理卷。 1个

Spring MVC是Spring Framework的一部分&#xff0c;其主要目的是使Web开发更加简单&#xff0c;便捷和轻松。 与表单的交互是或多或少现代Web应用程序的一部分。 Spring MVC允许您以非常严格和简单的方式执行各种形式的活动。 在本文中&#xff0c;您将在Spring MVC的帮助下阅读…

用php打出前一天的时间格式,[php]用PHP打印出前一天的时间格式

echo date("Y-m-d H:i:s",strtotime("-1 day"));例子echo(strtotime("now"));echo(strtotime("3 October 2005"));echo(strtotime("5 hours"));echo(strtotime("1 week"));echo(strtotime("1 week 3 days 7 …

《Python学习之路 -- 字符串的方法》

在前面已经提到Python中的字符串了&#xff0c;本文来列举介绍字符串的方法&#xff0c;我将字符串的方法分为以下几类&#xff1a; ①查询方法 str.find(target,startNone,endNone) 该方法用于查询字符串str中是否含有target&#xff0c;如果有&#xff0c;则返回target在这个…

Java监视器绑定的超人

这是超人生活中的黑暗时期。 乔尔艾尔&#xff08;Jor-El&#xff09;希望他继续航行&#xff0c;为他的最终命运做好准备。 然而&#xff0c;地球面临着世界末日&#xff0c;正义联盟需要他们的钢铁侠行动来拯救世界。 但是由于我们只有一个超人&#xff0c;您不能同时做这两个…

C语言第一次实验报告

一&#xff0e;实验题目&#xff0c;设计思路&#xff0c;实现方法 第四次 计算分段函数和循环NEW 4-3 求N分之一序列前N项和 4-6 输出华氏-摄氏温度转换表 第四次 分支循环 加强版 4-2-7 装睡 设计思路&#xff1a;4-3开始需要计算大量式子&#xff0c;因此利用到相对便捷的…

php充值卡,ecshop 充值卡功能_懒人程序

/*显示页面的action列表*/$ui_arrarray(register,login,profile,... 增加cz然后在下面代码处加入if ($actioncz)//冲值{ if($_GET[a]add){ if (empty($_SESSION[user_id])){ show_message(该用户不存在。,返回上一页,user.php?actcz);} else{ $kstrtoupper(substr($_POST[k],0…

CSS实现垂直居中的5种方法

利用 CSS 来实现对象的垂直居中有许多不同的方法&#xff0c;比较难的是选择那个正确的方法。我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站。 使用 CSS 实现垂直居中并不容易。有些方法在一些浏览器中无效。下面我们看一下使对象垂直集中的5种不同方法&#xf…

尝试使用jBPM Console NG(测试版)

大家好&#xff01; 这是关于jBPM Console NG的另一篇文章。 经过6个月的辛苦工作&#xff0c;我很高兴为开发者社区撰写这篇文章&#xff0c;以进行尝试。 在这篇文章中&#xff0c;我将解释如何从源代码构建应用程序。 这背后的主要思想是知道如何在测试过程中设置环境并修改…

三个实用的提升网页性能技巧

1、display属性设置 先将元素设为 display: none&#xff08;需要1次重排和重绘&#xff09;&#xff0c;然后对这个节点进行100次操作&#xff0c;最后再恢复显示&#xff08;需要1次重排和重绘&#xff09;。这样一来&#xff0c;你就用两次重新渲染&#xff0c;取代了可能高…

mysq在某一刻同时获取主从库的位置点

在从库进行锁表操作flush table with read lock&#xff0c; 通过show slave status\G 获取对应主库的位置点&#xff1a; show slave status\G*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host…

php在window磁盘管理,Windows Server 2008R2设置磁盘阵列

RAID(独立硬盘冗余阵列)指用多个硬盘组成一个高性能、大容量的一个硬盘组合。独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks)&#xff0c;旧称廉价磁盘冗余阵列(RedundantArray of Inexpensive Disks)&#xff0c;简称硬盘阵列。其基本思想就是把多个相对便宜的…

解决Error: ENOENT: no such file or directory, scandir 安装node-sass报错

新项目开发需要安装依赖&#xff0c;但是安装完之后通过gulp运行项目&#xff0c;产生了一下的报错&#xff1a; 解决方案是执行一些方法&#xff1a; npm rebuild node-sass可是有时就是网络问题导致上面命令安装失败&#xff0c;查下失败提示&#xff0c;有可能是&#xff1a…