css水平居中的小小探讨

水平居中是常用的几种布局方式之一。主要分为行内元素的居中,块元素的居中。块元素的居中还分为固定宽度的居中,不定宽度的居中。

行内元素的居中,使用text-align:center就可以实现,已知宽度的块元素的居中,使用绝对定位以及设置margin为宽的一半的负值就可以实现。

但是不定宽度的居中比起上面两种更常用,也更复杂,我们常常需要在分页的页码展示等地方用到不定宽居中,使用起来更方便,下面来研究下

常用的几种块元素的水平居中。

1.标签嵌套偏移

实现原理:

联想到固定宽度的居中的实现:先偏移到屏幕中央,在设置其margin方向偏移宽的一半。那么能不能想到一种方法,借用这种思路,先偏移50%到屏幕的右半部分,然后在反方向偏移回来?实现起来比较困难的点是不知道这个宽度是多少。又想到只要让其父宽度和子宽度相等,然后用百分数就可以解决。那么怎么让其父宽度和字宽度一样呢?巧借float具有的包裹性:父元素如果漂浮了,并且没有设置宽高,那么将尽量包裹子元素。

实现代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>不定宽度水平居中</title>
    <style>
        body{
            background-color: #e5da31;
        }
        .container{
            position: absolute;   /*脱离文档流,其宽度将由子元素的宽度决定*/
            left:50%;
        }
        .content{
            position: absolute;
            left:-50%;
            background-color: #2ecc71;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="content">标签嵌套</div>
</div>
</body>
</html>

实现效果:

优点与缺点:

缺点很明显,需要自己写和文档内容无关的标签,多打了那么几行代码

兼容性良好,在ie6+浏览器上查看没有问题

2.flex-box布局

实现原理:

先定义一个flex容器,然后设置其内容对齐方式为中间对齐

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>不定宽度水平居中</title>
    <style>
        body {
            background-color: #e5da31;
        }
        .container {
            display: flex;  /*定义一个flex容器*/
            justify-content: center;  /*定义容器的空间没有被全部占用时,内容的对其方式*/
        }
        .content{
            background-color: #2ecc71;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="content">标签嵌套</div>
</div>
</body>
</html>

实现效果:

优缺点分析:

实现起来最简单,但是呢,因为flex的兼容性不好,当要兼容低阶浏览器时慎重使用。

3.内联布局

实现原理:

text-align:center可以让行内元素水平居中,如果改变块元素为行内元素,在使用text-align就可以实现水平居中。

实现代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>不定宽度水平居中</title>
    <style>
        body{
            background-color: #e5da31;
        }
        .container{
          text-align:center;
        }
        .content{
        display: inline;
            background-color: #2ecc71;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="content">标签嵌套</div>
</div>
</body>
</html>

实现效果:

优缺点分析:

用本来是修饰文字对齐方式的text-align来实现水平居中总感觉有点别扭,这块外面的container也先多余,但是为了不影响body内其他元素的局部,暂且如此。另外兼容性不错,在ie6+可以正常显示。

时间: 2024-08-26 00:11:56

css水平居中的小小探讨的相关文章

css水平居中那点事

昨晚深夜写了css垂直居中那点事,今晚该写他的兄弟篇:css水平居中那点事了..…^^ 其实本来这两个可以连在一起写,可是为了不要搞混,为了让思路更清晰,最后决定还是分开来些比较好...这样以后也有利于自己重温~~ 一,text-align 为什么要第一个写text-align呢? 其实也没有为什么.....(别打我) 但text-align是一个很神奇的东西,在ie6中使用text-align会有惊喜 text-align是文本居中的意思,是使一个块级元素的行内内容对齐,所以正常来说,text

CSS水平居中

这里指的水平居中当然是说通过CSS来自动控制的,而不是说计算之后,设置一个位置来指定居中的. 一般情况下有三种实现方式: 在实现方式中,我们定义两个名词来方便后面的解说:out--包含需要被居中元素的那个容器,in--需要居中的元素. 1. text-align: center 设置out的text-align: center 保证in的display为inline 2. margin-left : auto; margin-right: auto 设置in的margin-left : auto

css水平居中,竖直居中技巧(二)

css水平居中,竖直居中技巧(二)===### 1.效果 ### 2.代码#### 2.1.index.html <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-C

css水平居中的各种方法

说到水平居中,大家可能觉得很简单啊,text-align:center 就OK了. 但是,有时候会发现这样写了也没出效果.原因是什么呢?  请往下看. 水平居中:分为块级元素居中和行元素居中 行内元素: 行内元素就是内联元素.例如<span>.<a>.<label>.<em>.<img>等.. 直接构建一个具有 ”text-align:center“样式的容器,那么里面包含的行内元素就会都居中了. <div style="text

CSS 水平居中和垂直居中

转自:http://www.cnblogs.com/fu277/archive/2012/09/13/2400118.html 1.水平居中 (1) 文本.图片等行内元素的水平居中 给父元素设置text-align:center可以实现文本.图片等行内元素的水平居中. (2) 确定宽度的块级元素的水平居中 通过设置margin-left:auto;和margin-right:auto;来实现的. (3) 不确定宽度的块级元素的水平居中 方法一: 使用table标签,table本身并不是块级元素,

css水平居中和垂直居中

水平居中:内联元素:text-align:center;相对于父级居中显示块级元素:margin:0 auto;但是需要同时width,否则无法看到效果多个块级元素居中:在此想要探讨一下display:inline-block;和display:flex;方法1:在父级上设置text-align:center;在元素上设置:display:inline-block;同时为了使文字向左显示,设置了text-align:left;在浏览器中的显示为,子元素高度自适应,底部对齐.方法2:在子元素上设置

CSS水平居中和垂直居中解决方案

一.CSS 居中 — 水平居中 DIV等标签本身没有定义自己居中的属性,网上很多的方法都是介绍用上级的text-align: center,然后嵌套一层DIV来解决问题.可是这个方法有时候完全不起作用,而且对于布局是非常不科学的方法.正确的的设置写法如下(对页面构造没有影响):div {margin-left: auto; margin-right: auto; }这句CSS居中的意思就是让div自己调整左右margin间隔的距离以达到水平居中的效果.有时候我们还可以简写为 div { marg

CSS 水平居中总结

水平居中设置-行内元素 我们在实际工作中常会遇到需要设置水平居中场景,今天我们就来看看怎么设置水平居中的. 如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的.如下代码: html代码: <body> <div class="txtCenter">我是文本,哈哈,我想要在父容器中水平居中显示.</div> </body> css代码: <style> div.txt

CSS 水平居中

水平居中:行内元素解决方案 居中元素:文字.链接以及其它行内元素(inline或inline-*类型的元素,如inline-block,inline-table,inline-flex)解决方案:将inline元素包裹在一个display属性为block的父级元素中,如div.nav,设置父级元素属性text-align:center属性即可. HTML <div>文字元素</div> <nav>  <a href="">链接元素01&l