在div+css布局中,水平、垂直局中是很常用的,但对于像我这样的小白来说,经常会出现有些css设置不起作用,后来就网上搜索一些资料研究了一番,现在总结如下,以后好翻看。
对于行内元素、块状元素,定宽的元素、不定宽的元素,水平、垂直局中的设置都是不一样的。

水平局中

1、行内元素:

当子元素为行内元素,对父元素设置text-align:center;

2、定宽块状元素

当子元素为定宽块状元素,设置左右margin值为auto,如:margin:0 atuo;

3、不定宽块状元素

我们经常会遇到不定宽度块级元素的使用,如分页导航,因为分页的数目不定,所以不能用宽度限制住。此时对元素进行水平居中主要有三种方式:

  • 加入 table 标签
  • 设置 display;inline 方法
  • 设置 position:relative 和 left:50%;

(1)加入 table 标签

第一步:为需要设置的居中的元素外面加入一个 table 标签 ( 包括 、、 )。
第二步:为这个 table 设置“左右 margin:auto”(这个和定宽块状元素的方法一样)。
HTML结构:

<div><table><tbody><tr><td><ul><li><a href="#">1</a></li><li><a href="#">2</a></li><li><a href="#">3</a></li></ul></td></tr></tbody></table>
</div>

css样式

<style>table{margin:0 auto;}ul{list-style:none;margin:0;padding:0;}li{float:left;display:inline;margin-right:8px;}
</style>

缺点:是增加了无语义的HTML标签,增加了嵌套深度

(2)设置 display:inline 方法

改变块级元素的 dispaly 为 inline 类型,然后使用 text-align:center 来实现居中效果。
HTML结构:

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

css样式

<style>.container{text-align:center;}.container ul{list-style:none;margin:0;padding:0;display:inline;}.container li{margin-right:8px;display:inline;}
</style>

缺点:将块级元素的display设置为inline,于是少了很多功能,比如盒子模型

(3)设置 position:relative 和 left:50%;

通过给父元素设置 float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left:-50% 来实现水平居中。
HTML结构:

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

css样式

<style>.container{float:left;position:relative;left:50%}.container ul{list-style:none;margin:0;padding:0;position:relative;left:-50%;}.container li{float:left;display:inline;margin-right:8px;}
</style>

这种方法可以保留块状元素仍以 display:block 的形式显示,优点不添加无语议表标签,不增加嵌套深度。
缺点:设置了 position:relative,带来了一定的副作用。

4、通用方案

flex布局,对父元素设置display:flex;justify-content:center;

这四种方法各有利弊,根据实际情况选用。

垂直居中

1、父元素高度确定的单行文本

设置父元素的height等于行高line-height。注意:如果多行内联文本这样设置就会被切割成几部分,很难看,如下:

2、父元素高度确定的多行文本

3、父元素高度不确定的多行文本

以上有三种情况详解请看:https://segmentfault.com/a/1190000003111071

4、通用方案

flex布局,给父元素设置{display:flex; align-items:center;}。

CSS实现水平局中、垂直局中详解相关推荐

  1. CSS中的BFC BFC详解 BFC可以解决的问题汇总

    CSS中的BFC BFC详解 BFC可以解决的问题汇总 简介 BFC 全称 Block Formatting Context, 名为 "块级格式化上下文"它是CSS2.1规范定义的 ...

  2. css中的position定位详解

    css中的position定位详解 position属性指定了元素的定位类型. position属性的5个值:static,relative,fixed,absolute,sticky; 元素可以使用 ...

  3. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

  4. 计算机硬件图标准画法,机械制图培训中剖视图的画法详解

    机械制图培训中剖视图的画法详解 机械制图是机械工程语言,用图样表示机械产品的结构形状.尺寸大小.工作原理和技术要求,是机械设计与机械制造的基础学科,每一个从事机械行业的人员都应该懂机械制图. 机械CA ...

  5. viewstate 解码 php,.NET_asp.net中ViewState的用法详解,在web窗体控件设置为runat = serv - phpStudy...

    asp.net中ViewState的用法详解 在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了 ...

  6. dapper mysql 预处理_.Net Core中Dapper的使用详解

    Dapper 是一个轻量级ORM框架,在项目中如果对性能比较看中,Dapper是一个不错的选择.接下来我们就来看看如何在项目中使用Dapper. 1.安装Dapper 这里直接使用Nuget安装. 安 ...

  7. 25、react 中使用路由 router 详解

    react 中使用路由 router 详解 今天开始最新的一个模块,也是 react 开发中最重要的一部分,就是路由. SPA 理解 我们使用原生的 HTML + CSS + JavaScript 开 ...

  8. html5代码转换为视频,HTML5中的视频代码详解

    摘要 腾兴网为您分享:HTML5中的视频代码详解,智学网,云闪付,易推广,小红书等软件知识,以及360win10,流量魔盒,fitbit,上港商城,安卓2.3.7,全民惠,五年级下册英语单词表图片,t ...

  9. VMware虚拟机文件夹中各文件作用详解

    VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...

最新文章

  1. visio2007 画流程图杂记
  2. 深度强化学习_深度学习理论与应用第8课 | 深度强化学习
  3. C#:委托和自定义事件
  4. asp.net错误.在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错...
  5. 关于Uncaught SyntaxError: Unexpected identifier
  6. web软件测试 测试报告模板_杭州软件测试培训要多长时间?需要学习什么内容?...
  7. redis启动警告解决
  8. 雷神开机logo更改_九代酷睿i9加持的性能怪兽 雷神911黑武士Ⅱ评测
  9. Learnopengl
  10. 带通滤波器中心频率计算公式中R是哪个值_手把手教系列之IIR数字滤波器设计实现...
  11. python智能写诗的程序_【百度大脑新品体验】智能写诗与智能春联
  12. PreparedStatement 原理
  13. 2019 SWERC
  14. PC-DMIS 圆(环)型平面自动测量子程序
  15. 【爬虫】堆糖图片爬取
  16. Gin源码之gin.Context结构体及其方法
  17. 表单设计:五类表单构成要素设计
  18. 后台提示登录失败----YYC松鼠短视频开源
  19. if函数的语法c语言并列,逻辑函数IF的各种使用方法
  20. warframe星际战甲氏族颜料35种全获取机制和获取流程攻略

热门文章

  1. SVN搭建文件服务器
  2. 201621123028《Java程序设计》第二周学习总结
  3. 移动硬盘插入无显示,不用格式化-修复方法
  4. java 左边补0_java补充0 java数字左侧补零补0 NumberFormat实现数字左侧补0
  5. 青年大学习未看人员名单查询(JAVA)
  6. 以前写的网页游戏辅助工具源码 传奇类的HOOK 封包 按钮
  7. springboot毕设项目社团管理系统7qls9(java+VUE+Mybatis+Maven+Mysql)
  8. 利用360wifi实现树莓派无线上网
  9. 乌鲁木齐地下综合管廊背后的城市智慧
  10. nginx与httpd 优雅重启