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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux上彻底删除docker_docker ubuntu镜像

    linux上彻底删除docker_docker ubuntu镜像ubuntu中docker彻底卸载

    2025年9月16日
    4
  • ArtCAM+Powermill雕刻编程加工视频教程 浮雕 玉石「建议收藏」

    ArtCAM+Powermill雕刻编程加工视频教程 浮雕 玉石「建议收藏」ArtCAM+Powermill雕刻编程加工视频教程浮雕玉石四轴雕刻链接:https://pan.baidu.com/s/1gyrg7kYYBFHzTBK9ue0G1Q提取码:67kb

    2025年9月13日
    4
  • 使用cookie登录

    前言:什么是cookie?Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的。那么我们可以利用Urllib库保存我们登录的Cookie,然后再抓取其他页面,这样就达到了我们的目的。一、Urllib库简介Urllib是python内置的H…

    2022年4月7日
    181
  • 爬取百度地图 POI 数据

    爬取百度地图 POI 数据

    2021年6月11日
    219
  • assertEquals方法

    assertEquals方法/***Assertsthattwoobjectsareequal.Iftheyarenot,an*{@linkAssertionError}isthrownwiththegivenmessage.If*expectedandactualarenull,*theyareconsideredeq

    2022年7月12日
    27
  • 运维面试官喜欢问的问题是_运维是什么意思

    运维面试官喜欢问的问题是_运维是什么意思你最大的缺点是什么?行为问题(behaviouralquestion),这类问题目的是看性格是否合适公司文化。主要考察:①你是否真心想做这个工作;②你性格与企业文化是否相符。所有答案都应该围绕这两点组织,即每个经历都应回归到你通过这个经历学到什么该职位所需关键技巧,这些经历为何让你想做这个工作,和该经历体现出你什么样的个人风格。你最大的缺点是什么:①避免避重就轻,谈一个算不得缺点的缺点,这…

    2025年8月27日
    6

发表回复

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

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