元素自动居中显示

我们在写页面时经常会遇到让一个元素自动居中显示的需求,这个元素有可能是块级元素,有可能是行内元素,也可能是文字等等,而居中的需求有可能是水平居中,垂直居中或者两者同时居中。

据我目前了解,居中有四种方式:1. 利用table表格特性; 2. 使用table-cell属性以table方式渲染; 3. margin自动居中; 4. 使用absolute配合margin负值居中;以下逐个讲解:

1. 利用table表格特性


种方式可以让内容垂直居中(valign="middle")和水平居中(align="center"),无论是行内元素还是块级元素都可以垂直居中
(inline,inline-block,block),但是水平居中只支持带有行内属性的元素(inline,inline-block),图示如
下:

示例:

css:

td {
        width: 300px;
        height: 150px;
        border: 1px solid #d9d9d9;
    }
    td p {
        width: 150px;
        height: 75px;
        background: #e5e5e5;
    }

html:

<table>
        <tr>
            <td valign="middle" align="center">

<p></p>

</td>
        </tr>
    </table>

2. 使用table-cell属性以table方式渲染

这种方式使得元素表现的像td或th一样。图示如下:

示例:

css:

#table {
        width: 300px;
        height: 150px;
        display: table-cell;
        vertical-align: middle;
        text-align: center;
        border: 1px solid #d9d9d9;
    }
    #table p {
        width: 150px;
        height: 75px;
        display: inline-block;
        background: #e5e5e5;
    }

html:

<div id="table">
        <p></p>
    </div>

3. margin自动居中

这种方式会自动计算,但是只支持水平居中,不支持垂直居中,所以一般都会设置margin: o auto;图示如下:

示例:

css:

#mg {
        width: 535px;
        height: 185px;
        border: 1px solid #d9d9d9;
    }
    #mg p {
        width: 190px;
        height: 100px;
        background: #e6e6e6;
        margin: 0 auto;
    }

html:

<div id="mg">
        <p></p>
    </div>

4. 使用absolute配合margin负值居中

这种方式利用了百分比及精确计算,支持水平居中和垂直居中。这个需要讲解下,我们前面讲过绝对定位(关于position定位及z-index的理解),
它是脱离文档流的,所以,如果你是针对浏览器居中,父元素不用另外设属性,否则的话,父元素要设置relative或者absolute。我们要想让一个
元素居中显示(暂以水平居中为例,垂直原理相同),需要将它的中线(灰色虚线)与父元素的中线(蓝色虚线)重合,当我们让一个元素绝对定位,并且left
值设置50%的时候,这个元素的最左边就会始终与父元素的中线(蓝色虚线)对齐,我们要做的就是让它在这个基础上向左再移回去一部分,这一部分是多少呢?
从图上可以看出,父元素的中线(蓝色虚线)与灰色方块最左边对齐,两个中线之间的距离刚好是灰色区域宽度的一半。所以我们可以利用margin可以取负值
的特性,让margin-left向左移动灰色区域宽度的一半,就可以居中显示了。垂直同理。图示如下:

示例:

css:

#pa {
        width: 535px;
        height: 185px;
        border: 1px solid #d9d9d9;
        position: relative;
    }
    #pa p {
        width: 190px;
        height: 100px;
        background: #e6e6e6;
        position: absolute;
        top: 50%;
        left: 50%;
        margin: -50px 0 0 -95px;
    }

html:

<div id="pa">
        <p></p>
    </div>

时间: 2024-10-27 19:53:45

元素自动居中显示的相关文章

页面小模块排列不计数目(最多一行3列),自动居中显示

今天做了一个项目中,要求页面的小模块居中显示,并且最多一行显示3列.这里我研究出了一种做法,不管小模块的数目为1或者2或者3.都可以居中显示. html部分 <div class='content'> <div class='content-inner'> <div class='item'></div> <div class='item'></div> <div class='item'></div> <

html实战代码:浮动元素横排居中显示的实现

在进行web前端开发项目http://www.maiziedu.com/course/web/的时候,经常会遇到这样的页面布局:在一排显示几个不同的区域内容,但它们相对于页面是居中对齐的.注意这些区域内容不只是文字,也许还有图片或者其它元素混合而成.一般这样的布局我们很容易想到要用浮动float,但是怎么样居中对齐而又兼容低端浏览器哪?请接着往下看.首先看html代码:<div class="webFooter">  <div class="wrap&quo

浮动元素横排居中显示及浏览器兼容性处理

经常会遇到这样的页面布局:在一排显示几个不同的区域内容,但它们相对于页面是居中对齐的.注意这些区域内容不只是文字,也许还有图片或者其它元素混合而成.一般这样的布局我们很容易想到要用浮动float,但是怎么样居中对齐而又兼容低端浏览器哪?请接着往下看. 首先看html代码: <div class="webFooter"> <div class="wrap"> <div class="tabs"> <ul&g

CSS如何让浮动导航栏元素居中显示

CSS如何让浮动导航栏元素居中显示:制作导航栏是最为基础的布局技能之一,当然对于稍有经验的人员来说没有任何问题,不过对于初学者可能会有一定的困扰.普通的导航栏一般具有一下几个特点,整个导航栏居中,导航栏目具有,并且能够均匀分布,下面就是一个这样的简单代码实例.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author"

浅谈css中一个元素如何在其父元素居中显示

css如何垂直居中一个元素的问题已经是一个老生常谈的问题了.不管对于一个新手或者老手,在面试过程中是经常被问到的.前两天在看一个flex的视频教程,当中提到了有关元素的居中问题,所以今天小编就来扒一扒几种常见的方式.不足之处请大家批评指正(所有的代码都是自己亲手敲过可用的) 1.水平居中(margin:0 auto;) 关于这个,大家应该是最不陌生的,不管是在培训班还是自己自学的话 .这个应该是老师讲的第一个方法了(水平方向上),但是其有一个前提,就是被包裹的元素不能有浮动的属性.否则的话这个属

图片大小不改动,根据屏幕大小自动把图片居中显示

background属性 background-image: url('../img/1_1.jpg'); <!-- 背景图片路径 --> background-repeat: no-repeat; <!-- 背景图片是否重复显示 --> background-position: center; <!-- 若背景图片小于div,则居中显示 --> background-attachment: fixed; <!-- 背景图片固定,不随scroll拖动而变动 --&

css绝对定位元素实现居中的几个方法

一:CSS绝对定位元素left设为50%实现水平居中 绝对定位的元素left设为50%时,是已左上角为原点的,所以只要再使用margin属性添加负值补偿回来即可.示例:[css]代码如下: #board{ width:60%; padding:3%; background:#09F; position:absolute; top:0px; left:50%; margin-left:-30%; } 这样就能使得一个蓝色区域水平居中   二.绝对定位元素的完全居中实现 如果要问如何CSS实现绝对定

absolute元素,居中

from: zhangxinxu.com 绝对定位元素的居中实现 如果要问如何CSS实现绝对定位元素的居中效果,很多人心里已经有答案了. 兼容性不错的主流用法是: .element { width: 600px; height: 400px; position: absolute; left: 50%; top: 50%; margin-top: -200px; /* 高度的一半 */ margin-left: -300px; /* 宽度的一半 */ } 但,这种方法有一个很明显的不足,就是需要

盒子模型、网页自动居中、float浮动与清除、横向两列布局

1.CSS包含:标准文档流,浮动,绝对定位 标准文档流的特点:从上到下,从左到右,输出文档内容 盒子模型:块级元素(div ui li dl dt p)与行级元素(span strong img input) 盒子模型:边框(border)外边框(margin)内边框(padding)内容(content) 盒子3D模型:border. content+padding .background-img.background-color.margin <html> <head> <