css3 flex布局的使用 图片文字垂直居中排列 图文混排垂直居中 display:flex「建议收藏」

css3 flex布局的使用 图片文字垂直居中排列 图文混排垂直居中 display:flex「建议收藏」遇到的问题在实际工作的过程中经常遇到图片文字的混排,需要图片与一段文字垂直居中,这个实现方法以前一直非常复杂,而flex是解决这个问题比较好的办法;css代码display:flex;flex的是Flexible的缩写,意为弹性。可以在单行或者多行的盒状模型中提供很好的灵活性,所以它也是自适应友好的。图文混排垂直居中基本用法用flex实现文字和图片在同一行的时候的垂…

大家好,又见面了,我是你们的朋友全栈君。

遇到的问题

在实际工作的过程中经常遇到图片文字的混排,需要图片与一段文字垂直居中,这个实现方法以前一直非常复杂,而flex是解决这个问题比较好的办法;

css代码

display:flex;

flex的是Flexible的缩写,意为弹性。可以在单行或者多行的盒状模型中提供很好的灵活性,所以它也是自适应友好的。

图文混排垂直居中基本用法

用flex实现文字和图片在同一行的时候的垂直居中排列方式:
将父元素容器的display属性设为flex,而子元素的垂直方向上的margin设置为auto,就能实现图文混排的图片与文字垂直居中:
css代码:

<style> .container{ 
   
			display:flex;
			width:30rem;
			height:10rem;
			background-color: #faf;
			position:absolute;
			top:50%;
			left:50%;
			margin:-5rem 0 0 -15rem;
			border-radius:2rem;
		}
		.icon{ 
   
			width:7rem;
			height:7rem;
			background-image: url(img/icon.png);
			-webkit-background-size: 100% 100%;
			background-size: 100% 100%;
			margin:auto auto;
		}
		p{ 
   
			font-size:20px;
			margin:auto auto;
		}
</style>

html代码:

	<div class="container">
		<div class="icon"></div>
		<p>这是一段文字</p>
	</div>

最后实现的效果:
文字图片垂直居中
这样排列,最终实现两个元素垂直居中,其实多个元素同样也能实现,其中每个元素在默认情况下元素的左右的margin值是一致的。

多项元素在一行中均匀分布

在网页设计中会经常见到许多块分布的块一行或者多行中均匀分布的情况,这种情况以前一般用固定子元素大小,并将元素的float设为left来实现,而用flex可以简化其实现的方式:
css代码片段:

.container2{ 
   
	width:60rem;
	height:20rem;
	display:flex;
	background-color: #fdf;
	justify-content:space-around;/*内部子元素在容器内均匀分布*/
}
.box{ 
   
	width:8rem;
	height:8rem;
	background-color: #a5a;
	margin:auto auto;
	font-size:2rem;
	color:white;
	line-height:8rem;
	text-align:center;
}

html片段:

<div class="container2">
	<div class="box">1</div>
	<div class="box">2</div>
	<div class="box">3</div>
	<div class="box">4</div>
	<div class="box">5</div>
	<div class="box">6</div>
</div>

结果:
单行多div容器排列
这样就算我们去掉其中的一个或者多个剩下来的在容器内部的子元素同样能够均匀排列:
多个div垂直居中并且排列
除了设置子元素的margin垂直方向为auto之外,还能通过设置容器元素align-items来控制子元素垂直居中
css代码片段:

.container3{ 
   
	width:60rem;
	height:20rem;
	display:flex;
	background-color: #fdf;
	justify-content:space-around;
	align-items: center;
}
.box2{ 
   
	width:8rem;
	height:12rem;
	background-color: #c5a;
	font-size:2rem;
	color:white;
	line-height:12rem;
	text-align:center;
}

html代码片段:

<div class="container3">
	<div class="box">1</div>
	<div class="box2">2</div>
	<div class="box">3</div>
	<div class="box2">4</div>
	<div class="box">5</div>
	<div class="box2">6</div>
</div>

这样即便是大小不一样的方块设计同样可以实现垂直居中:
div垂直居中
align-items:center || flex-start || flex-end || stretch || baseline
分别表示,按照中轴线,容器上沿,容器下沿,高度充满容器,基准线(以文字)
其中还有许多属性需要一一仔细实验
包括

justify-content:/*在主轴上的对齐方式*/
flex-direction:/*顺序*/
flex-wrap:/*换行*/

justify-content属性

justify-content属性规定了子元素在父元素内的排列方式默认值为flex-start,在横排的元素里面为从左到右排列,在纵排的元素中为从上到下排列。值可以为:
flex-start:从左边或者上部开始排列
flex-end:从右边或者下部开始排列
center:中间排列
space-around:每个元素占据相同的空间(包括margin)
space-between:第一个与最后一个元素靠边,中间的所有元素之间的排列距离一样

flex-wrap 属性

flex-wrap属性规定了在一行排不下的情况下是否换行

.container4{ 
   
	display:flex;
	background-color: #f99;
	padding:20px;
	flex-wrap:no-wrap;/*这个是默认为no-wrap 不换行*/
}

html:

<div class="container4">
	<div class="box">1</div>
	<div class="box">2</div>
	<div class="box">3</div>
	<div class="box">4</div>
	<div class="box">5</div>
	<div class="box">6</div>
	<div class="box">7</div>
	<div class="box">8</div>
</div>

假如容器container的长度比子元素的宽度相加更多,内部的元素宽度是按照内部元素原本的宽度来的。
flex
但是假如容器container的长度比子元素的宽度相加要少,那么因为容器是不换行的,他就会压缩内部元素的宽度
下面多加几个元素,则会变成这样:
flex-wrap使用
然而在大部分情况下不是我们想要的,那现在把容器的的flex-wrap属性设置为wrap(自动换行)试试

.container4{ 
   
	display:flex;
	background-color: #f99;
	padding:20px;
	flex-wrap:wrap;/*这个是默认为no-wrap 不换行*/
}

如下:
flex-wrap设置为wrap
这样在容器内的子元素就会保持原来的宽度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133300.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • maven本地仓库默认路径_maven本地仓库

    maven本地仓库默认路径_maven本地仓库Maven配置本地仓库的路径1.打开maven安装路径\conf\settings.xml2.在50行左右有下面,默认位置在c盘用户下的/.m2/repository中<!–localRepository|Thepathtothelocalrepositorymavenwillusetostoreartifacts.||Defa…

    2022年9月23日
    0
  • 谈谈怎么实现Oracle数据库分区表「建议收藏」

    谈谈怎么实现Oracle数据库分区表「建议收藏」Oracle数据库分区是作为Oracle数据库性能优化的一种重要的手段和方法,做手头的项目以前,只聆听过分区的大名,感觉特神秘,看见某某高手在讨论会上夸夸其谈时,真是骂自己学艺不精,最近作GPS方面的项目,处理的数据量达到了几十GB,为了满足系统的实时性要求,必须提高数据的查询效率,这样就必须通过分区,以解燃眉之急!先说说分区的好处吧!1) 增强可用性:如果表的某个分区出现故障,表在其他分

    2022年5月9日
    57
  • 三次握手几个rtt_tcp三次握手详细过程

    三次握手几个rtt_tcp三次握手详细过程一、RST包、本人学习后总结:RST包用于强制关闭TCP链接。TCP连接关闭的正常方法是四次握手。但四次握手不是关闭TCP连接的唯一方法.有时,如果主机需要尽快关闭连接(或连接超时,端口或主机不可达),RST(Reset)包将被发送.注意,由于RST包不是TCP连接中的必须部分,可以只发送RST包(即不带ACK标记).但在正常的TCP连接中RST包可以带ACK确认标记。 二、三次握手Th…

    2022年10月1日
    0
  • 【python】sklearn中PCA的使用方法

    【python】sklearn中PCA的使用方法fromsklearn.decompositionimportPCAPCA主成分分析(PrincipalComponentsAnalysis),简称PCA,是一种数据降维技术,用于数据预处理。PCA的一般步骤是:先对原始数据零均值化,然后求协方差矩阵,接着对协方差矩阵求特征向量和特征值,这些特征向量组成了新的特征空间。sklearn.decomposition.PC…

    2022年10月18日
    0
  • 完数[通俗易懂]

    完数[通俗易懂]完数

    2022年4月24日
    41
  • django捕获DoesNotExist

    django捕获DoesNotExistfromdjango.core.exceptionsimportObjectDoesNotExisttry:user=User.objects.get(id=12873)exceptObjectDoesNotExist:print”user”

    2022年10月22日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号