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


相关推荐

  • python字符串常用方法及汇总

    python字符串常用方法及汇总字符串常用方法常用的查找方法去除首尾信息大小写转换格式排版其他方法字符串的格式化format()基本用法填充与对齐数字格式化其他格式,供大家参考:可变字符串常用的查找方法我们以一段文本作为测试:a=’’‘我是高兴,今年18岁了,我在北京尚学堂科技上班。我的儿子叫高洛希,他6岁了。我是一个编程教育的普及者,希望影响6000万学习编程的中国人。我儿子现在也开始学习编程,希望他18…

    2022年6月6日
    40
  • 9款最好用的MySQL数据库客户端图形界面管理工具,第三款我用了10年

    9款最好用的MySQL数据库客户端图形界面管理工具,第三款我用了10年MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考。MySQL是一个非常流行的小型关系型数据

    2022年7月1日
    24
  • vue.js开发环境搭建

    vue.js开发环境搭建

    2021年9月24日
    47
  • Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步

    Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步

    2021年6月6日
    92
  • 字符数组初始化问题解法_字符数组和字符串的区别

    字符数组初始化问题解法_字符数组和字符串的区别在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串。总结起来有以下三种方式:(1)chara[10]=””; (2)chara[10]={‘\0′}; (3)chara[10];str[0]=’\0’;第1,2种方式是将a数组的所有元素都初始化为’\0’,而第3种方式是只将str数组的第一个元素初始化为’\0’。如果数组的size非常大,那么前两种方式…

    2022年8月31日
    4
  • C++学生选课系统 【含 代码】

    C++学生选课系统 【含 代码】1.系统分析本系统的用户分为普通用户和管理员两类,其中普通用户包括教师和学生。普通用户只能对自己的信息进行查询与修改,管理员则拥有所有功能权限。1.1模块划分学生选课系统,在登录模块之后,根据系统用户的身份不同划分为三个模块,即:学生模块、教师模块和管理员模块。1.2功能模块描述(1)登录模块登录模块用于用户身份选择与用户登录,完成基本的验证。根据所填信息进行…

    2022年10月15日
    3

发表回复

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

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