当前位置: 首页 > Web前端 > vue.js

CSS水平垂直居中布局方案概述

时间:2023-04-01 12:25:38 vue.js

在前端开发中,通过CSS实现布局容器居中的方式有??很多种。当然也是CSS面试题中的一道经典面试题。本文将对其进行系统的分析和评述。Flexbox布局模块和CSSGrid布局模块实现了容器的居中效果。传统方案中,基于盒模型,依靠display属性+position属性+float属性实现基本布局,包括本文的居中排列。**你可能需要CSDN网易云课堂教程掘金EDU学院教程知乎Flutter系列文章1Flexbox中的水平和垂直居中1.1FlexibleBox简介2009年W3C提出了Flex布局方案。Flex是FlexibleBox的缩写,可以表示“灵活的布局”。任何容器都可以指定为Flex布局。可用于为盒子模型提供最大的灵活性。采用Flex布局的元素称为Flex容器(flexcontainer),以下简称Flexbox,Flex容器中的所有子元素称为Flex项(flexitem)。任何容器都可以指定为flex布局,如下:.box{display:flex;}or.box{display:inline-flex;}点这里查看CSS中flex和inline-flex的区别Flexbox默认存在两轴:水平主轴和垂直交叉轴。主轴的起始位置(与边框的交点)称为mainstart,结束位置称为mainend;交叉轴的起始位置称为crossstart,结束位置称为crossend,如下图:1.2FlexibleBox子项居中对齐在Flexbox布局模块中,将其子项居中对齐(flexitems)居中(水平方向和垂直方向都居中),如下图1-1所示:1.2.1实现方式只设置flex容器的属性如图1-1中,只需要将justify-content和align-items的值设置为以flex容器为中心,就可以让元素在flex容器中水平和垂直居中,如下代码所示清单1-2所示:/*代码清单1-2*/

/*Flex容器*/.flex__container{显示:柔性;证明内容:居中;对齐项目:居中;宽度:300px;高度:300px;背景色:灰色;}/*Flex子项目*/.flex__item{width:100px;高度:100px;justify-content用于设置水平居中,如下图1-3:align-items用于限制垂直居中,如下图1-4:如下图1-2中的child将Flex容器的Item数增加到4个,该方法设置的居中效果仍然有效。图1-2中对应的代码如下:/*代码清单1-3*/
/*Flex容器*/.flex__container{display:flex;证明内容:居中;对齐项目:居中;/*flex-direction:column;*//*display:inline-flex;*/width:300px;高度:300px;背景色:灰色;}/*Flex子项目*/.flex__item{width:50px;高度:50px;左边距:10px;顶部边距:10px;背景色:浅绿色;}1.2.2实现方法2同时设置Flex容器及其子Item的属性/*Flexcontainer*/.flex__container{display:flex;证明内容:居中;}/*Flex子项*/.flex__item{align-self:center;}对应的Html层代码如下:1.2.3设置margin:flex容器中子项自动设置如果flex容器中只有一个子项,可以显式设置margin的值在itemtoauto中,也可以实现水平和垂直居中的效果,如下图1-5所示:2.Grid布局中的水平和垂直居中Css中的Grid布局可以称为CSSGridLayoutModule,它是一个CSS为布局添加的新模块。简单理解就是网格布局,也就是网络布局。任何容器都可以指定为网格布局,如下图:-items可以直接配置为center,如下图1-6所示:/*Gridcontainer*/.flex__container{/*或者inline-grid*/display:grid;放置项目:中心;}完成的