Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >动画 | 一文掌握 Flex 布局

动画 | 一文掌握 Flex 布局

作者头像
前端老王
发布于 2020-09-23 07:32:48
发布于 2020-09-23 07:32:48
8650
举报
文章被收录于专栏:前端时空前端时空

写在前边

网页布局,是前端入门的时候必学、必须熟练的一门技术,学到什么程度算是入门了呢?随便给你一个网站,你就可能快速的分析出网页的结构,然后搭建出模型,这是前端网页布局入门的最基本要求。

作为一个前端初学者,在学习的时候可能会用到一些盒模型传统的布局方式(display + position + float),很多小伙伴用着用着就觉得这种传统布局写一些样式比较麻烦、不方便,比如垂直居中的传统实现方式如。

第一种实现方式:

原本外容器没有设置高度的时候会紧贴内元素,但是设置容器内的上下内边距相同的数值时,此时就实现了垂直居中。

第二种实现方式:

使用 Vertical-align 属性实现垂直居中。

但是这个属性往往初学者容易弄混,不知道何时才使用,有时元素设置这个属性并生效,这是怎么回事呢?也是初学者往往最头疼的一个问题,这个属性涉及到的内容不是一篇两篇文章写完的,这篇我们不多涉及到。

第三种实现方式:

使用 line-height 设置父容器行高的方式进行垂直居中,但是只适用单行文本。

其实垂直居中网页布局中传统实现方式很多种,但是这么多种不同情况下进行选择太麻烦了,我们有没有规定一个方式就能无论是行内元素还是块元素就能实现垂直居中呢?

我们尝试今天要分享的 Flex 试一下垂直居中实现如下:

只需在外容器的 CSS 中设置这两个属性就可以轻松实现垂直居中。

完整代码实现如下:

是不是第二种非常的方便?其实就是一句垂直居中代码,align-items: center;

那么今天小鹿就来分享一种新布局方式,可能对于刚学习前端的小伙伴来说是种新的,但是作为一些进阶者,这种布局经常在项目中被灵活使用,得到了很多开发者的喜爱,用着用着就爱上了这种布局的方式 —— Flex布局。

看完这篇文章,小鹿也会通过生动有趣的动画,让你爱上 Flex 布局。

思维导图

1

什么是 Flex 布局?

Flex 布局又为弹性布局,所谓弹性,就很大的提供了页面布局的灵活性。

我们可以把一个容器(div、span等),设置它的 CSS 的 display 属性为 flex 之后,我们就可以使用 Flex 的布局方式了。

PS:一旦容器设置display: flex布局之后,我们使用的传统布局中的float、vertical-align、clear等属性就完全失效了。但是我们可以通过 Flex 设置的属性去进行布局。

2

认识 Flex 布局

因为我们再用传统布局的时候,对齐元素进行垂直居中,代码特别的麻烦,为了更好的解决这个问题,Flex 布局就规定设置横、纵两个方向,我们无论在水平排列还是垂直排列的时候,这样写起来更方便了。

而且 Flex 布局设置了三个位置,左边、中间、右边,而且都有对应的属性,就可以很轻松的设置元素的位置了。

光说不练假把式,我们就开始动手写代码实践一下,跟着小鹿一起打开编译器

3

容器的基本属性

3.1 flex-direction

这个属性主要用来调节布局元素的方向的,比如你想纵向排列。如下:

flex-direction: column

横向排列,如下:

flex-direction: column

常用的就是上边这两个,其他两个相反方向的排列方式:

flex-direction: column-reverse;

flex-direction: row-reverse;

3.2 flex-wrap

这个作为换行属性,如果当元素一行摆放不开了,我们需要选择如何换行?不换行还是换行,还是换行到第一行的上方呢?

(1)nowrap不换行

(2)wrap换行

(3)wrap-reverse换到第一行

我们通过上边的属性很容易实现的。

3.3 justify-content

之前我们传统布局的水平居中有这几种方式:

但是在 Flex 布局几种水平位置的布局。这样用起来让页面的布局更加的灵活、多变。

(1)flex-start(默认) :左对齐

(2)flex-end:右对齐

(3)center:居中

(4)space-between:两端对齐,项目之间的间隔都相等

(5)space-around:每个项目两侧的间隔相等。

3.4 align-items

既然有水平居中,那么就有垂直居中,垂直居中上边我们也说过,传统的布局比较麻烦,所以我们要见识一下 Flex 布局的强大之处。

通过这个align-items属性值,很轻松的实现垂直居中。

(1)flex-start:交叉轴的起点对齐。

(2)flex-end:交叉轴的终点对齐。

(3)center:交叉轴的中点对齐。

(4)baseline:项目的第一行文字的基线对齐。

(5)stretch:如果项目未设置高度或设为auto,将占满整个容器的高度。

4

容器内单个元素属性

我们上边是针对外容器的一些属性设置,我们下边的一些属性是针对于容器内元素的一些属性设置。让我们呢一个个来看一下最常用的。

4.1 flex-grow

该属性主要用来定义元素的放大比例,它的默认值是 0。

如果容器内的所有元素都设置为 1,则平分剩余的空间;如果其中一个设置为 2,则按比例平分剩余的空间。

4.2 flex-shrink

该属性主要用来定义元素的缩小比例,默认值为 1。

如果所有元素的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个元素的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

4.3 flex-basis

浏览器会根据该属性进行对主轴计算是否有多余的空间。默认值为 auto。

4.4 flex

该属性是以上三个属性的缩写形式,默认值为0 1 auto

还有两个其他的快捷属性,auto(1 1 auto)none(0 0 auto),浏览器会根据其推算相关的数值。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端时空 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(二)数据源
结果:生成模拟数据文件MOMO_DATA.dat,并且每条数据中字段分隔符为\001
Maynor
2023/10/17
6240
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(二)数据源
重磅:Flume1-7结合kafka讲解
本文主要是将flume监控目录,文件,kafka Source,kafka sink,hdfs sink这几种生产中我们常用的flume+kafka+hadoop场景,希望帮助大家快速入生产。 flume只有一个角色agent,agent里都有三部分构成:source、channel和sink。就相当于source接收数据,通过channel传输数据,sink把数据写到下一端。这就完了,就这么简单。其中source有很多种可以选择,channel有很多种可以选择,sink也同样有多种可以选择,并且都支持
Spark学习技巧
2018/01/31
2.3K0
重磅:Flume1-7结合kafka讲解
Flume+Kafka整合案例实现
我们很多人在在使用Flume和kafka时,都会问一句为什么要将Flume和Kafka集成?那首先就应该明白业务需求,一般使用Flume+Kafka架构都是希望完成实时流式的日志处理,后面再连接上Flink/Storm/Spark Streaming等流式实时处理技术,从而完成日志实时解析的目标。第一、如果Flume直接对接实时计算框架,当数据采集速度大于数据处理速度,很容易发生数据堆积或者数据丢失,而kafka可以当做一个消息缓存队列,从广义上理解,把它当做一个数据库,可以存放一段时间的数据。第二、Kafka属于中间件,一个明显的优势就是使各层解耦,使得出错时不会干扰其他组件。
全栈程序员站长
2022/09/10
8150
Flume+Kafka整合案例实现
Flume+Kafka双剑合璧玩转大数据平台日志采集
大数据平台每天会产生大量的日志,处理这些日志需要特定的日志系统。目前常用的开源日志系统有 Flume 和Kafka两种, 都是非常优秀的日志系统,且各有特点。下面我们来逐一认识一下。
王知无-import_bigdata
2020/11/06
2K0
Flume+Kafka双剑合璧玩转大数据平台日志采集
大数据——Flume+Kafka+Flume整合模式
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152384.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/10
7390
大数据——Flume+Kafka+Flume整合模式
Kafka实战:从RDBMS到Hadoop,七步实现实时传输
本文是关于Flume成功应用Kafka的研究案例,深入剖析它是如何将RDBMS实时数据流导入到HDFS的Hive表中。 对于那些想要把数据快速摄取到Hadoop中的企业来讲,Kafka是一个很好的选择。Kafka是什么?Kafka是一个分布式、可伸缩、可信赖的消息传递系统,利用发布-订阅模型来集成应用程序/数据流。同时,Kafka还是Hadoop技术堆栈中的关键组件,能够很好地支持实时数据分析或者货币化的物联网数据。 本文服务于技术人群。下面就图解Kafka是如何把数据流从RDBMS(关系数据库管理系统)导
CSDN技术头条
2018/02/12
9820
Kafka实战:从RDBMS到Hadoop,七步实现实时传输
flume应该思考的问题
问题导读 1.flume的配置你是如何理解的? 2.flume与kafka整合,kafka可以做哪些组件? 3.flume与kafka的区别是什么? flume是比较常用的大数据技术,那么学习flume,我们还需要思考flume,这样理解才能在遇到问题的时候,更容易解决,使用起来更加的得心应手。下面介绍了flume的相关内容及个人的理解。 flume应用 一般来讲,我们接触flume可能更早一些。flume如何安装可参考 让你快速认识flume及安装和使用flume1.5传输数据(日志)到hadoop
用户1410343
2018/03/26
1.4K0
flume应该思考的问题
整合Flume和Kafka完成实时数据采集
需要注意:参考的网站要与你的kafka的版本一致,因为里面的字段会不一致 例如:http://flume.apache.org/releases/content/1.6.0/FlumeUserGuide.html#kafka-sink 这是1.6版本的,如果需要查看1.9版本的直接就将1.6.0改为1.9.0即可
全栈程序员站长
2022/09/10
5490
整合Flume和Kafka完成实时数据采集
用Kafka消费Flume传来的日志
1.创建Kafka Topic kafka-topics.sh --create --zookeeper localhost:2181 --partitions 1 --replication-factor 1 --topic weblogs 2.创建Flume Conf Source 使用Spooling Directory Source agent.sources=spooldir-source agent.sources.spooldir-source.type=spooldir agent
ZHANGHAO
2018/12/19
8180
Flume对接Kafka详细过程[通俗易懂]
一般使用 Flume + Kafka 来完成实时流式的日志处理,后面再连接上Storm/Spark Streaming等流式实时处理技术,从而完成日志实时解析的目标。如果Flume直接对接实时计算框架,当数据采集速度大于数据处理速度,很容易发生数据堆积或者数据丢失,而kafka可以当做一个消息缓存队列,当数据从数据源到flume再到Kafka时,数据一方面可以同步到HDFS做离线计算,另一方面可以做实时计算,可实现数据多分发。
全栈程序员站长
2022/09/10
2.3K0
Flume对接Kafka详细过程[通俗易懂]
快速学习-Flume 对接 Kafka
2) 启动 kafkaIDEA 消费者 3) 进入 flume 根目录下,启动 flume
cwl_java
2020/02/20
6410
通过Flume简单实现Kafka与Hive对接(Json格式)
将以下存储在kafka的topic中的JSON格式字符串,对接存储到Hive的表中
栗筝i
2022/12/01
1K0
Flume-Kafka-Flume对接Kafka以及Kafka数据分类传输
Flume日志采集组件;Flume对接kafka主要是为了通过kafka的topic功能,动态的增加或者减少接收的节点,并且Flume要对接多个节点是需要多个channel和sink的会导致内存不够的情况。
全栈程序员站长
2022/09/10
6380
【Kafka】安装及使用
修改默认server.properties(kafka/config/),并修改/etc/profile文件,添加kafka环境变量
Xiongan-桃子
2023/06/10
2530
【Kafka】安装及使用
Flume与Kafka对接「建议收藏」
这里为了方便测试,我采用的是netcat source、memory channel、kafka sink,当然你也可以采用你自己想要的方式配置flume,只需要根据官方文档修改对应的source和channel即可。
全栈程序员站长
2022/09/10
7950
Flume与Kafka对接「建议收藏」
【Docker】Flume+Kafka收集Docker容器内分布式日志应用实践
1 背景和问题 随着云计算、PaaS平台的普及,虚拟化、容器化等技术的应用,例如Docker等技术,越来越多的服务会部署在云端。通常,我们需要需要获取日志,来进行监控、分析、预测、统计等工作,但是云端的服务不是物理的固定资源,日志获取的难度增加了,以往可以SSH登陆的或者FTP获取的,现在可不那么容易获得,但这又是工程师迫切需要的,最典型的场景便是:上线过程中,一切都在GUI化的PaaS平台点点鼠标完成,但是我们需要结合tail -F、grep等命令来观察日志,判断是否上线成功。当然这是一种情况,完善的Pa
Rainbond开源
2018/05/31
1.2K0
Kafka快速入门系列(13) | Flume对接Kafka
因此我们常用的一种模型是: 线上数据 --> flume --> kafka --> flume(根据情景增删该流程) --> HDFS
不温卜火
2020/10/28
5550
Kafka快速入门系列(13) | Flume对接Kafka
多云服务器kafka环境搭建并接收flume日志数据
前言 如果看过博主之前的文章,也可以了解到我正在搭建一个大数据的集群,所以花了血本弄了几台服务器。终于在flume将日志收集到日志主控flume节点上后,下一步要进行消息队列的搭建了。中间遇到过很多坎坷和坑,下面就为大家讲解一下搭建过程和注意事项,最终的成果是kafka搭建成功并接受flume主控传来的数据。 环境 服务器:CentOS7.2 JDK: jdk1.8.0_161 flume: apache-flume-1.6.0-cdh5.7.0 zookeeper: zookeeper-3.4.5-cdh
十里桃花舞丶
2018/05/17
1.2K0
【详解】Flume读取日志数据写入Kafka
在大数据处理领域,日志数据的收集、传输和存储是非常重要的环节。Apache Flume 是一个分布式、可靠且可用的服务,用于有效地收集、聚合和移动大量日志数据。而 Apache Kafka 则是一个高吞吐量的分布式发布订阅消息系统,常用于构建实时数据管道和流应用。本文将介绍如何配置 Flume 从文件中读取日志数据并将其写入到 Kafka 中。
大盘鸡拌面
2025/03/20
1490
Import Kafka data into OSS using E-MapReduce service
Overview Kafka is a frequently-used message queue in open-source communities. Although Kafka (Confluent) officially provides plug-ins to import data directly from Kafka to HDFS's connector, Alibaba Cloud provides no official support for the file storage system OSS. This article will give a simple example to implement data writes from Kafka to Alibaba Cloud OSS. Because Alibaba Cloud E-MapReduce service integrates a large number of open-source components and docking tools for Alibaba Cloud, in this article, the example is directly run in the E-MapReduce cluster. This example uses the open-source Flume tool as a transit to connect Kafka and OSS. Flume open-source components may also appear on the E-MapReduce platform in the future. Scenario example Next we will name a simple example. If you already have an online Kafka cluster, you can directly jump to Step 4. 1. In the Kafka Home directory, start the Kafka service process. Configure the Zookeeper address in the configuration file to the service address emr-header-1:2181 bin/kafka-server-start.sh config/server.properties 2. Create a Kafka topic with a name of test bin/kafka-topics.sh --create --zookeeper emr-header-1:2181 \ --replication-factor 1 --partitions 1 --topic test 3. Write data to Kafka test topic and the data content is the performance monitoring data of the local machine vmstat 1 | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 4. Configure and start the Flume service in the Flume Home directory Create a new configuration file: conf/kafka-example.conf. In specific, specify the source as the corresponding topic for Kafka, and use sink as the HDFS Sinker. Specify the path as the OSS path. Because the E-MapReduce service implements an efficient OSS FileSystem (compatible with Hadoop FileSystem) for us, the OSS path can be specified directly, and the HDFS Sinker data will be automatically written to OSS. # Name the components on this agent a1.sources = source1 a1.sinks = oss1 a1.channels = c1 # Describe/configure
heidsoft
2018/10/18
4430
推荐阅读
相关推荐
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(二)数据源
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档