CSS布局对齐方式--水平居中、垂直居中_SinceSpringOnU的博客-程序员秘密

一、水平居中

情况一:行内元素的水平居中

如果被设置的元素为文本、图片等行内元素时,在父元素 中设置text-align:center实现行内元素水平居中,将子元素的设置为display:inline-block,使子元素变成行内元素;

html

<div class="one">
  <div class="two">11111</div>
 </div>

css

.one{
    
   text-align: center;
   background-color: grey;
  }
  .two{
    
   display: inline-block;
   background-color: yellow;
  }

在这里插入图片描述

情况二:块状元素水平居中(不定定宽)

因为宽度不一定,所以我们不能通过限制宽度来限制他的弹性。
可以直接给补丁款的块级元素text-align:center;来实现,也可以给父级元素加text-align:center;来实现居中效果。
当不定宽元素的宽度不要占一行时,可以设置display:inline/inline-block(设置为行内元素或者行内块元素)。

display:block将元素显示为块级元素,从而可以更好地操控元素的宽高,以及内外边距,每一个块级元素都是从新的一行开始

display : inline将元素显示为行内元素,高度,行高以及底边距不可改变,高度就是内容文字或者图片的宽度,不可以改变。多个相邻的行内元素排在同一行里,知道页面一行排列不下,才会换新的一行。

display:inline-block看上去值名inline-block是一个混合产物,实际上确是如此,将元素显示为行内块状元素,设置该属性后,其他的行内块级元素会排列在同一行。比如我们li元素一个inline-block,使其既有block的宽度高度特性,又有inline的同行特性,在同一行内有不同高度内容的元素时,通常要设置对齐方式如vertical-align: top;来使元素顶部对齐。

html

<div class="one">
  <ul>
   <li><a href="#">1</a></li>
   <li><a href="#">2</a></li>
   <li><a href="#">3</a></li>
  </ul>
 </div>

css

 div{
    
   text-align: center;
   background-color: beige;
  }
  div ul{
    
   list-style: none;
   margin: 0;
   padding: 0;
   display: inline-block;
  }
  div ul li{
    
   margin-right: 8px;
   display: inline-block;
  }

在这里插入图片描述

二、垂直居中

/
垂直居中的前提:
父元素是盒子容器且高度已经设定。

/

情况1.子元素是行内元素,高度是由其内容撑开的。

此时需要通过设定父元素的line-height为其高度来使得子元素垂直居中。
html

<div class="one">
   <span class="span">11111</span>
</div>

css

 .span{
    
  background-color: red;
  }
   .one{
    
   width: 200px;
   height: 300px;
   line-height: 2000%;
   border:2px solid #ccc;
  }

在这里插入图片描述

情况2.子元素是块级元素,但是子元素高度没有设定,在这种情况下,实际上是不知道子元素高度的,无法通过计算得到padding或者margin来调整。

此时,可以通过给父元素设定

display:table-cell; 
                  //让标签元素以表格单元格的形式呈现,使元素类似于td标签
vertical-align:middle;
		 //设置元素内容的垂直对齐方式

来解决。

display:table-cell 指让标签元素以【表格单元格】的形式呈现,使元素类似于td标签。IE8+及现代版本的浏览器都支持此属性,IE6/7不支持(可用其他方法实现类似效果)。同样,display:table-cell属性也会被float,position:absolute等属性破坏效果,应避免同时使用。

verical-align属性:
设置元素内容的垂直对齐方式
只对行内元素span生效,对块状文本样式p、div不起作用。

在本代码中,display:table-cell将块状元素div转化为表格单元格td的形式,就可以用verical-align属性了

html

<div class="one">
  <div class="two">11111</div>
 </div>

css

.two{
    
   background: green;
  }
  .one{
    
   width: 200px;
   height: 300px;
   border:2px solid #ccc;
   display: table-cell;
   vertical-align: middle;
  }

在这里插入图片描述

情况3.子元素是块状元素且高度已经设定

计算子元素margin-topmargin-bottom,计算方法为(父元素高度-子元素高度)/ 2;
html

<div class="one">
  <div class="two">11111</div>
 </div>

css

.one{
    
   width: 200px;
   height: 300px;
   border:2px solid #ccc;
  }
  .two{
    
   width: 100px;
   height: 100px;
   margin-top: 100px;
   background-color: lightblue;
  }

在这里插入图片描述

三、水平垂直居中

情况1:水平对齐+行高

text-align + line-height实现单行文本水平垂直居中
html

<div class="one">123</div>

css

.one{
    
   text-align: center;
   line-height: 100px;
   width: 200px;
   background-color: lightblue;
  }

在这里插入图片描述

情况2:水平+垂直对齐

1.在父元素设置text-alignvertical-align,并将父元素设置为table-cell元素,子元素设置为inline-block元素。

html

<div class="one">
  <div class="two">123</div>
 </div>

css

.one{
    
   width: 200px;
   height: 200px;
   display: table-cell;
   text-align: center;
   vertical-align: middle;
   background-color: grey;
  }
  .two{
    
   display: inline-block;
   background-color: red;
  }

text-align:设置元素内文本的水平对齐方式,只对块状区域起作用。可以在图片外部嵌套块状元素< div >< /div >
vertical-align:设置元素内容的垂直对齐方式,只对行内元素span生效,对块状文本样式p、div不起作用
在这里插入图片描述

2.若子元素是图像,可不使用table-cell,而是其父元素用行高代替高度,且字体大小设为0。子元素本身设置vertical-align:middle;

html

<div class="one">
  <img class="two" src="wow.jpg"/>
 </div>

css

.one{
     
   text-align: center;
   width: 200px;
   line-height: 100px;
   font-size: 0;
   background-color: grey;
  }
  .two{
    
   vertical-align: middle;
   width: 50%;
  }

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/SinceSpringOnU/article/details/104544030

智能推荐

用python3对数据库mysql进行创建库、表、增删改查操作_python mysql 建数据库_Smookey的博客-程序员秘密

import pymysqlimport sys# python mysql 创建库、表增删改查标准语句print('----------------------------')print('载入mysql模块完成')con = pymysql.connect(host='localhost', user='root', passwd='123...

oracle 删除表空间错误 提示:ora-02429:无法删除用于强制唯一/主键的索引_fuqinyijiu的博客-程序员秘密

oracle 删除表空间错误 提示:ora-02429:无法删除用于强制唯一/主键的索引。sql>drop tablespace ksdmora-01549:表空间非空,请使用INCLUDING CONTENTS 选项sql>drop tablespace ksdm INCLUDING CONTENTS and datafiles;ora-00604:递归sql层1

Android : Camera2/HAL3 框架分析_大道一支菜鸟的博客-程序员秘密

sheldon_blogshttps://www.cnblogs.com/blogs-of-lxl/p/10651611.htmlAndroid : Camera2/HAL3 框架分析一、Android O上的Treble机制:  在 Android O 中,系统启动时,会启动一个 CameraProvider 服务,它是从 cameraserver 进程中分离出来,作为一个独立进...

openwrt修改默认主机名_openwrt修改主机名[email protected]的博客-程序员秘密

openwrt默认主机名为【OpenWrt】,透过修改源码方式,修改默认主机名。适用版本openwrt v19.07.4查看etc/config/system,默认[email protected]:/# cat etc/config/systemconfig system option hostname 'OpenWrt' option timezone 'UTC' option ttylogin '0' o.

springboot 打包jar 外部依赖jar包_LLittleKevin的博客-程序员秘密

问题项目是springboot构建的,由于项目中用了一些本地引入的jar包,使用mvn package时,无法将本地引入的jar打到目标jar中.解决 &amp;lt;build&amp;gt; &amp;lt;plugins&amp;gt; &amp;lt;plugin&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt; &amp;lt;artifa...

Javascript实现深拷贝的方法_实现一个深拷贝_Leon_94的博客-程序员秘密

浅拷贝要想理解深拷贝,我们先来看一下浅拷贝,废话不多说,直接上代码var obj = { a:1, arr: [2,3] };var shallowObj = shallowCopy(obj);function shallowCopy(src) { var dst = {}; for (var prop in src) { if (src.hasOwnProperty...

随便推点

数据库第十章习题作业_数据库日志记录例题_liyatjj的博客-程序员秘密

目录4.考虑下图所示的日志记录:(1)如果系统故障发生在14之后,说明哪些事务需要重做,哪些事务需要回滚。(2)如果系统故障发生在10之后,说明哪些事务需要重做,哪些事务需要回滚。(3)如果系统故障发生在9之后,说明哪些事务需要重做,哪些事务需要回滚。(4)如果系统故障发生在7之后,说明哪些事务需要重做,哪些事务需要回滚。5.考虑题4所示的日志记录(1)如果系统故障发生在14之后,写出系统恢复后A、B、C的值;(2)如果系统故障发生在12之后,写出系统恢复后A、B、C的值;(3)如果系统故障发生在10之后,

STM32中用 stop 模式 配合低功耗模式下的自动唤醒(AWU) 能否实现FreeRTOS tickless 模式..._weixin_33911824的博客-程序员秘密

已经实现 ,2018年11月17日11:56:42,具体 如下:第一步 : 修改 void vPortSetupTimerInterrupt( void ) 函数 ,修改原来的 systick 定时器初始化 改为 RTC 初始化 void vPortSetupTimerInterrupt( void ) { NVIC_InitTy...

常用的HTTP请求头与响应头_http响应头_totoroKing的博客-程序员秘密

常用的HTTP请求头与响应头HTTP消息头是指,在超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的那些组件。HTTP消息头用来准确描述正在获取的资源、服务器或者客户端的行为,定义了HTTP事务中的具体操作参数。关于HTTP消息头常用的HTTP请求头常用的HTTP响应头 1. 关于HTTP消息头HT

Linux系统编程20 文件系统 - 空洞文件 分析 st_size,st_blksize,st_blocks_linux st_size_科尔沁第一狠人的博客-程序员秘密

struct stat { dev_t st_dev; /* ID of device containing file */文件所在设备的ID ino_t st_ino; /* inode number */节点号 mode_t st_mode; /* prote...

在openssl申请证书时遇到的问题解决_bss_file.c_cookie大魔王的博客-程序员秘密

关于 can’t open config file: z:/strawberry_libs/build/2013Q3/ssl/openssl.cnf问题解决一开始运行openssl的时候就产生一条WARMING:WARNING: can’t open config file: z:/strawberry_libs/build/2013Q3/ssl/openssl.cnf当时没在意结果产生.c...

spring cloud 的断路器(Hystrix) 依赖添加注意点_勤而思的博客-程序员秘密

最新的Hystrix 依赖都是隶属于netfix下,这样@HystrixCommand 和@EnableHystrixDashboard 才能使用&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-cloud-starter-netf...

推荐文章

热门文章

相关标签