我在上一篇文章里总结了一下块状元素、内联元素、内联-块状元素的区别
三者的一个重要区别在于是不是独占一行以及能不能设置宽高、内外间距。
在这个前提下,我们应该怎么设置元素在水平方向上的居中呢?

行内元素的水平居中设置

行内元素的水平居中有一个通用的方法:通过在其父元素中设置text-align:center来实现:
我们给出一个html文件,写入一个div块状元素,包裹一个span内联元素:

<!DOCTYPE html>
<html>
<head><title>前端试题</title><meta charset="utf-8"><link rel="stylesheet" type="text/css" href="前端试题.css">
</head>
<body><div><span>这是一个行内元素</span></div>
</body>
</html>

父元素div的css样式当中,用text-align: center;对span元素进行“水平居中”设置。
为了突出显示父元素div和子元素span之间的位置关系,设置一下背景颜色:

div{width: 200px;height: 100px;background-color: yellow;text-align: center;
}
span{background-color: orange;
}

块状元素的水平居中

块状元素又分为定宽块状元素 (width值固定)和不定宽块状元素(width的值不固定)。两种情况下有不同的设置水平居中方式:

  • 定宽块状元素:
    设置margin:0 auto,即设置一下上下margin值,然后把左右margin值设置为auto,让这个块状元素的左右margin值自动调整。
<!DOCTYPE html>
<html>
<head><title>前端试题</title><meta charset="utf-8"><link rel="stylesheet" type="text/css" href="前端试题.css">
</head>
<body><div><div id="son">这是一个定宽块状元素</div></div>
</body>
</html>
div{width: 200px;height: 100px;background-color: yellow;text-align: center;
}
#son{margin: 0 auto;width: 160px;height: 30px;background-color: orange;
}


注意:只有同时满足“定宽”和“块状元素”两个条件,才能使用“margin:0 auto”来设置水平居中!

  • 不定宽块状元素

不定宽块状元素的水平居中设置有几种方法:

  1. 使用table标签:
    table法当中,我们在html代码当中让块状元素div成为table->td里的内容,然后再设置table的margin为0 auto,对table进行水平居中设置。
<!DOCTYPE html>
<html>
<head><title>前端试题</title><meta charset="utf-8"><link rel="stylesheet" type="text/css" href="前端试题.css">
</head>
<body><table><tr><td><div id="son">这是一个不定宽块状元素,table标签具有长度自适应性,因此可以看成一个定宽块状元素。然后再利用定宽块状元素的margin:0 auto方法实现水平居中</div></td></tr></table>
</body>
</html>
table{border:1px solid red;margin: 0 auto;
}
#son{background-color: orange;
}


2. 将该元素设置为行内元素,然后再用行内元素的水平居中方法(该元素display:inline;该元素的父元素text-align:center):

<!DOCTYPE html>
<html>
<head><title>前端试题</title><meta charset="utf-8"><link rel="stylesheet" type="text/css" href="前端试题.css">
</head>
<body><div><div id="son">这是一个不定宽块状元素</div></div>
</body>
</html>
div{width: 300px;height: 100px;background-color: blue;text-align: center;/*父元素设置text-align:center*/
}
#son{display: inline;/*子元素设置display:inline;*/height: 30px;background-color: orange;
}


3. 设置该元素的父元素左浮动,并进行定位(float:left;position:relative;left:50%?,
该元素利用相对定位的方式,相对于其自身向左移动50%。
(position:relative; left:-50%)

<!DOCTYPE html>
<html>
<head><title>前端试题</title><meta charset="utf-8"><link rel="stylesheet" type="text/css" href="前端试题.css">
</head>
<body><div id="father"><div id="son">这是一个不定宽块状元素,父元素和子元素的宽度都不确定,用float浮动,再用position定位。</div></div>
</body>
</html>
#father{/*让父元素浮动起来,再定位到body的中线位置*/float: left;position: relative;left: 50%;
}
#son{/*相对于父元素定位,定位到向左偏移50%的位置*/position: relative;left: -50%;background-color: orange;
}

4、将父元素设置为弹性盒(display:flex;)目标元素设置外边距自动(margin:auto)

<!DOCTYPE html>
<html>
<head><title>前端试题</title><meta charset="utf-8"><link rel="stylesheet" type="text/css" href="前端试题.css">
</head>
<body><div id="father"><div id="son">这是一个不定宽块状元素,父元素设置为弹性盒来实现水平居中</div></div>
</body>
</html>
#father{display: flex;background-color: yellow;
}
#son{margin: 10px auto;height: 50px;background-color: orange;
}

行内元素和块状元素的水平居中设置相关推荐

  1. 0428专题:行内元素与块状元素

    专题: 行内元素与块状元素 块状元素 |-特点:默认占一整行.可以自动换行.可以设置大小 |-常见块状元素:div.li 行内元素 |-特点:不能设置宽高,内容有多大,我就有多大:        对m ...

  2. HTML的display属性将行内元素、块状元素、行内块状元素互相转换以及三者的区别

    1.行内元素 查看演示 (1)设置宽高无效 (2)对margin仅设置左右方向有效,上下无效:padding设置上下左右都有效,即会撑大空间 (3)不会自动进行换行 <html> < ...

  3. HTML行内元素、块状元素和行内块状元素的区分

    HTML 5 的常用元素分类 HTML可以将元素分类方式分为行内元素.块状元素和行内块状元素三种,这三者是可以互相转换的,通过display属性可以实现互相转换 (1)display:inline;转 ...

  4. 行内元素、块状元素和行内块元素

    1关于行内元素和块状元素的说明 根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display属 ...

  5. HTML行内元素、块状元素、行内块状元素介绍

    目录 1.行内元素: 1.1.行内元素特征: 1.2.常见行内块元素: 2.块状元素 : 2.1.块状元素特征: 2.2.常见块状元素 : 3.行内块状元素: 3.1.行内块状元素特征: 3.2.常见 ...

  6. 行内和块级元素区别?如何让行内元素设置宽高?

    行内和块级元素区别: 1.行内元素与块级函数可以相互转换,通过修改display属性值来切换块级元素和行内元素,行内元素display:inline,块级元素display:block. 2.行内元素 ...

  7. CSS 5 CSS 内联元素 和 块状元素

    CSS 文章目录 CSS 5 CSS 内联元素 和 块状元素 5.1 内联元素[inline] 5.2 块级元素[block] 5.3 内联元素与块级元素的区别 5.3.1 内联元素 5.3.2 块状 ...

  8. html 块状元素转换,块状元素与内联元素的转换

    在布局页面的时候,HTML标签分成两种,块状元素和内联元素(我们平时用到的标签div和p就是块状元素,链接标签a就是内联元素).它们是很重要的两个概念,既然说到概念就先看看块状元素和内联元素的定义,在 ...

  9. 怎么修改html行内样式表,原生JS获取及设置CSS样式-1.行内样式

    面试中,应该会经常被问到样式的写法以及如何使用原生JS获取及操作样式的问题吧,让我给大家总结一下~ HTML中样式的写法不外乎以下四种方式 行内样式 假装有内容 head内部样式 div { widt ...

最新文章

  1. SAP QM初阶之维护检验计划时可以不用事先创建好检验特性主数据
  2. 10个月产品演化之路-快速试错,快速反应,探索产品成功之道
  3. python直方图均衡化代码_基于matlab的直方图均衡化代码
  4. Android ----中文Api 百度地图
  5. EasyUI 在aspx页面显示高度不正常解决办法
  6. IntelliJ IDEA 2021.2 正式发布
  7. SFB 项目经验-82-Active Directory Replication Status
  8. 十六进制的形式在屏幕中间显示二进制byte类型数据
  9. SpringBoot+kaptcha生成验证码
  10. ai png转矢量图_Boxy SVG for Mac(矢量图编辑器)
  11. vue-cli 打包出来的文件缺少_Vue cli构建 及 项目打包以及出现的问题 (update 2020-05)...
  12. php 同义词词库,php如何实现同义词替换
  13. 视频图像格式YUV详解
  14. 农村三资管理平台app_鑫农三资app下载-鑫农三资app下载安卓版 v1.0.2_手机乐园
  15. VHDL中的行为描述、数据流(RTL)描述和结构描述
  16. C++:高斯坐标,大地坐标转经纬度
  17. 2020年Top 100开发者工具列表汇总
  18. [数值计算-16]:最小二乘法的求解1 - 一元二次方程解析法求解
  19. 快速将PDF图片转成PPT
  20. Ubuntu配置和使用cups打印服务器

热门文章

  1. Java(商城练习)
  2. 2017光量子计算机,2017年5月,世界首台光量子计算机在( )诞生
  3. 三星android文件传输,将数据从三星快速传输到三星的6种方法
  4. OpenSSL密码库算法笔记——第5.3.1章 椭圆曲线点群的算法集
  5. python空间复杂度是指_第16话:算法的空间复杂度
  6. 【数据结构】时间复杂度和空间复杂度
  7. 新的勒索软件在第一个月就有十名受害者
  8. 数组的下标为什么从0开始
  9. win10在Anaconda3下面安装caffe框架(CPU)Python2.7从入门到放弃
  10. 「Python条件结构」if…elif…else身份证长度校验