目录
前面的话
思路一:在父元素中设置text-align:center实现行内元素水平居中
思路二:在本身元素设置margin: 0 auto实现块级元素水平居中
思路三: 通过绝对定位的偏移属性实现水平居中
思路四: 使用弹性盒模型flex实现水平居中
首页 web前端 html教程 CSS实现水平居中的4种思路_html/css_WEB-ITnose

CSS实现水平居中的4种思路_html/css_WEB-ITnose

Jun 24, 2016 am 11:19 AM

× 目录 [1]text-align [2]margin [3]absolute [4]flex

前面的话

  水平居中是经常遇到的问题。看似方法较多,条条大路通罗马。但系统梳理下,其实都围绕着几个思路展开。本文将介绍关于水平居中的4种思路

 

思路一:在父元素中设置text-align:center实现行内元素水平居中

  将子元素的display设置为inline-block,使子元素变成行内元素

  [注意]若要兼容IE7-浏览器,可使用display:inline;zoom:1;来达到inline-block的效果

<style>.parent{text-align: center;}    .child{display: inline-block;}</style>
登录后复制

<div class="parent" style="background-color: gray;">  <div class="child" style="background-color: lightblue;">DEMO</div></div>
登录后复制
登录后复制

思路二:在本身元素设置margin: 0 auto实现块级元素水平居中

【1】将子元素的display为table,使子元素成为块级元素,同时table还具有包裹性,宽度由内容撑开

  [注意]若要兼容IE7-浏览器,可把child的结构换成

DEMO

<style>.child{    display: table;    margin: 0 auto;}</style>
登录后复制

<div class="parent" style="background-color: gray;">  <div class="child" style="background-color: lightblue;">DEMO</div></div>
登录后复制
登录后复制

【2】若子元素定宽,则可以使用绝对定位的盒模型属性,实现居中效果;若不设置宽度时,子元素被拉伸

<style>.parent{  position: relative;}.child{ position: absolute; left: 0; right: 0; margin: 0 auto; width: 50px;}</style>
登录后复制

<div class="parent" style="background-color: gray;height: 20px;">    <div class="child" style="background-color: lightblue;">DEMO</div>   </div>
登录后复制

思路三: 通过绝对定位的偏移属性实现水平居中

【1】配合translate()位移函数

  translate函数的百分比是相对于自身宽度的,所以left:50%配合translateX(-50%)可实现居中效果

  [注意]IE9-浏览器不支持

<style>.parent{  position: relative;}.child{  position: absolute;  left: 50%;  transform:translateX(-50%);}</style>
登录后复制

<div class="parent" style="background-color: gray;height: 20px;">  <div class="child" style="background-color: lightblue;">DEMO</div></div>
登录后复制

【2】配合relative

  relative的偏移属性是相对于自身的,因为子元素已经被设置为absolute,所以若使用relative,则需要增加一层

结构,使其宽度与子元素宽度相同

  [注意]该方法全兼容,但是增加了html结构

<style>.parent{  position: relative;}.childWrap{  position: absolute;  left: 50%;}.child{  position: relative;  left: -50%;}</style>
登录后复制

<div class="parent" style="background-color: gray;height: 20px;">  <div class="childWrap">    <div class="child" style="background-color: lightblue;">DEMO</div>   </div>   </div>
登录后复制
登录后复制

【3】配合负margin

  margin的百分比是相对于包含块的,所以需要增加一层

结构。由于宽度width的默认值是auto,当设置负margin时,width也会随着变大。所以此时需要定宽处理

  [注意]虽然全兼容,但需要增加页面结构及定宽处理,所以限制了应用场景

<style>.parent{  position: relative;}.childWrap{  position: absolute;  left: 50%;}.child{  width:50px;  margin-left:-50%;}</style>
登录后复制

<div class="parent" style="background-color: gray;height: 20px;">  <div class="childWrap">    <div class="child" style="background-color: lightblue;">DEMO</div>   </div>   </div>
登录后复制
登录后复制

思路四: 使用弹性盒模型flex实现水平居中

  [注意]IE9-浏览器不支持

【1】在伸缩容器上设置主轴对齐方式jusify-content:center

<style>.parent{  display: flex;  justify-content: center;}</style>
登录后复制

<div class="parent" style="background-color: gray;">    <div class="child" style="background-color: lightblue;">DEMO</div>   </div>
登录后复制
登录后复制

【2】在伸缩项目上设置margin: 0 auto

<style>.parent{display: flex;}.child{margin: 0 auto;}</style>
登录后复制

<div class="parent" style="background-color: gray;">    <div class="child" style="background-color: lightblue;">DEMO</div>   </div>
登录后复制
登录后复制

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

&gt; gt;的目的是什么 元素? &gt; gt;的目的是什么 元素? Mar 21, 2025 pm 12:34 PM

本文讨论了HTML&lt; Progress&gt;元素,其目的,样式和与&lt; meter&gt;元素。主要重点是使用&lt; progress&gt;为了完成任务和LT;仪表&gt;对于stati

&lt; datalist&gt;的目的是什么。 元素? &lt; datalist&gt;的目的是什么。 元素? Mar 21, 2025 pm 12:33 PM

本文讨论了html&lt; datalist&gt;元素,通过提供自动完整建议,改善用户体验并减少错误来增强表格。Character计数:159

&lt; meter&gt;的目的是什么。 元素? &lt; meter&gt;的目的是什么。 元素? Mar 21, 2025 pm 12:35 PM

本文讨论了HTML&lt; meter&gt;元素,用于在一个范围内显示标量或分数值及其在Web开发中的常见应用。它区分了&lt; meter&gt;从&lt; progress&gt;和前

视口元标签是什么?为什么对响应式设计很重要? 视口元标签是什么?为什么对响应式设计很重要? Mar 20, 2025 pm 05:56 PM

本文讨论了视口元标签,这对于移动设备上的响应式Web设计至关重要。它解释了如何正确使用确保最佳的内容缩放和用户交互,而滥用可能会导致设计和可访问性问题。

&lt; iframe&gt;的目的是什么。 标签?使用时的安全考虑是什么? &lt; iframe&gt;的目的是什么。 标签?使用时的安全考虑是什么? Mar 20, 2025 pm 06:05 PM

本文讨论了&lt; iframe&gt;将外部内容嵌入网页,其常见用途,安全风险以及诸如对象标签和API等替代方案的目的。

HTML容易为初学者学习吗? HTML容易为初学者学习吗? Apr 07, 2025 am 12:11 AM

HTML适合初学者学习,因为它简单易学且能快速看到成果。1)HTML的学习曲线平缓,易于上手。2)只需掌握基本标签即可开始创建网页。3)灵活性高,可与CSS和JavaScript结合使用。4)丰富的学习资源和现代工具支持学习过程。

HTML,CSS和JavaScript的角色:核心职责 HTML,CSS和JavaScript的角色:核心职责 Apr 08, 2025 pm 07:05 PM

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

HTML中起始标签的示例是什么? HTML中起始标签的示例是什么? Apr 06, 2025 am 12:04 AM

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

See all articles