元素水平居中的几个方法

1、行内元素的居中

例如想设置文本、图片等行内元素水平居中时,可以通过父元素设置 text-align:center 来实现,即给需要设置的元素添加一个父元素的容器,然后设置这个父元素(容器)的text-align属性即可。方法简单,原理也很容易理解,需要注意的是只能针对行内元素;

<!-- <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #box1{
            text-align:center;
        }
    </style>
</head>
<body>
    <div id="box1">
        <span>想让行内元素居中显示</span>
    </div>

</body>
</html> -->

效果图:

2、宽度一定的块状元素居中

因为是块状元素,所以就没办法运用第一种方法的text-align属性了,这次我们是通过对需要设置的元素的“左右margin”值为“auto”来实现,margin的上下值可以根据需求随意设置,但是左右一定要为”auto”!需要注意的是,在设置 margin:20px auto 之前,一定要先设置width的值,即最后的设置样例为: 
div { border:2px solid red; width:100px; margin:20px auto; } 
即2个像素宽的红色实体边框,整个div元素的宽度为100像素,上下距离浏览器的空白边距为20像素,左右根据内容自动调整,这样就实现了块状元素的居中显示,别忘了,要先设置width:宽度值!宽度值!宽度值!这种方法优点是简单易懂,兼容性也强,但是扩展性比较差,无法自适应未知宽度的元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .nj{
            width:600px;
            margin: 0 auto;
            border:1px solid black;
        }
    </style>
</head>
<body>
    <div id="box2">
        <div class="nj">想让行内元素居中显示</div>
    </div>

</body>
</html>

效果图:

3、宽度不确定块状元素的居中显示。

这里大概也可以分为三个方法:

1)运用table标签;2)设置display:inline;3)设置position:relative和left:50%。

3.1、运用table标签。第一步:在需要设置的元素外面加上一个table标签(包括,是不是有点类似设置行内元素时添加一个父元素的容器呢?)。第二步:给这个table设置”左右margin居中”(这里又和设置定宽块状元素的方法一样了)。

1)运用table标签;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        table {margin: 0 auto;}
    </style>
</head>
<body>
    <table>
        <tbody>
            <tr><td>
                <a href="#">Prev</a>
                <a href="#">1</a>
                <a href="#">2</a>
                <a href="#">3</a>
                <a href="#">4</a>
                <a href="#">5</a>
                <a href="#">Next</a>
            </td></tr>
        </tbody>
    </table>
</body>
</html>

总结:就是将需要进行居中的元素,用一个大表格将其围起来(而且这个表格只有这一个单元格哦),然后设置表格的属性(如第2条方法)居中就行。不过缺点是加了不少的无用标签,代码看起来比较臃肿。

3.2)、改变块级元素的display为inline类型,然后设置text-align:center来实现居中效果。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .container {text-align: center;}
        .container li {display: inline;}
    </style>
</head>
<body>
    <div class="container">
        <ul>
            <li><a href="#">fewe</a></li>
            <li><a href="#">fewa</a></li>
            <li><a href="#">d</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">dwedfe</a></li>
            <li><a href="#">5</a></li>
            <li><a href="#">Next</a></li>
        </ul>
    </div>
</html>

总结:首先将需要居中的块级元素的display属性设置为inline,这样的目的是先把块级元素变为行内元素,可以在一行内显示,然后将这些元素的父级元素text-align设置为:center即可。大概原理就是:块级->行内->居中(参照第1条方法),不过缺点也很明显,块级元素的一些特点没有了,例如高度、宽度设置等。

3.3)、运用float属性,主要的思想也就是将所需要居中的元素先float到左边,这样就能在一行内显示,然后将整个列表float到父元素左边,然后设置left来设置居中。怎么设置呢?先设置父元素:left:50%,这样整个父元素就往右便宜50%,然后设置列表:right:50%,这样列表的东西再往左走父元素的50%,这样就达到了居中的目的。 
代码样例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .container {
            float:left;
            position: relative;
            left: 50%;
        }
        .container ul {
            /*float: left;*/
            position: relative;
            right: 50%;
            padding:0;
            margin: 0;
        }
        .container li {
            /*float: left;*/
            position: relative;
            display: inline;
        }
        .container a {
            padding: 0 20px;
        }

    </style>
</head>
     <div class="container">
        <ul>
            <li><a href="#">Prev</a></li>
            <li><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4</a></li>
            <li><a href="#">5</a></li>
            <li><a href="#">Next</a></li>
        </ul>
    </div>
</html>

总结:基本思想也就是将父元素(容器)先往右偏移父容器宽度的50%,然后再将列表的元素向左相对偏移50%,就可以得到居中的效果。(这个方法不理解的话可以看下边W3C博客,那里边介绍的详细,具体链接见下边叙述。)不过我当时在测试这一点的时候,有个问题,就是ul的padding和margin没有清零,然后导致一直不太居中,后来清零就好了。

时间: 2024-11-13 09:10:10

元素水平居中的几个方法的相关文章

块级元素水平居中的两个方法

块级元素水平居中的两个方法: 1.text-align:center; 注意:text-align是仅用于块级元素,且作用于本身,而非其内部元素. 2.margin:0px auto; 注意:块级元素水平居中布局需要两个条件1)首先要是块级元素 2)其次要设置宽度 才能用margin:0px auto;来实现水平居中.

CSS中元素水平居中和垂直居中的方法

#CSS中水平居中和垂直居中的方法 一. 水平居中 1.行内元素(文本,图片等) 如果被设置元素为文本.图片等行内元素时,可以通过给父元素设置` text-align:center;` 来实现 2.定宽块级元素 可以通过设置“左右margin”值为“auto”来实现居中 常用的有 `margin:0 auto; ` 也可以写成`margin-left:auto;margin-right:auto;` 3.不定宽块级元素 有三种实现方法: * 加入 table 标签   为需要设置的居中的元素外面

&lt;转载&gt;使CSS文字图片div元素居中方法之水平居中的几个方法

文字居中,文字垂直居中水平居中,图片居中,图片水平居中垂直居中,块元素垂直居中?当我们在做前端开发是时候关于css居中的问题是很常见的.情 况有很多种,不同的情况又有不同的解决方式.水平居中的方式解决的时候相对来说通过css比较容易设置,垂直居中相对比较棘手. 先来说一下水平居中的不同情况与不同解决方法吧. 1文本,图片等行内元素的水平居中方法呢比较简单.直接给父元素设置一个text-align:centent属性就可以实现元素的水平居中了. 2 确定宽度的块级元素水平居中怎么设置呢?设置方法也

元素水平居中和垂直居中的几种简单方法

一.如何使元素在水平方向上居中 1. 使用text-align:center. 在父级元素的CSS样式设置text-align:center.把内部嵌套一个div把它当作文本来对待,不过这个方法有时候是不管用的. 2.在需要居中的元素设置margin:0 auto.     这句CSS的意思为:设置margin-left和margin-right为自动适应父级元素宽度.所以可以使元素水平居中,不过记得设置其width. 二.如何使元素在垂直方向上居中 1.使图片在垂直方向上居中. div{bac

六种实现元素水平居中

转载自:https://www.w3cplus.com/css/elements-horizontally-center-with-css.html 居中效果在CSS中很是普通的效果,平时大家所看到的居中效果主要分为三大类:水平居中.垂直居中和水平垂直居中.而其中水平居中相对于后两者来说要简单得多.早期总结了一下互联网上有关于水平垂直居中的几种实现方案,比如说<CSS制作水平垂直居中对齐>中介绍了八中实现水平垂直的方案,而在<CSS制作图片水平垂直居中>一文介绍了四种实现图片垂直居

css 使元素水平居中

css使元素水平居中 1.对于行内元素的水平居中 给父元素设置text-align:center <div style="text-align:center;">居中显示</div> 2.定宽块状元素水平居中 <div style="width:200px;margin:20px auto;";>居中显示</div> 注:对于以上情况可以灵活应用 可以将元素设置 display:inline ,将其变为行内元素,再按照

inline-block元素水平居中问题

今天做项目的时候碰到了不固定元素个数,需要水平居中的问题,原来的确定宽度下margin:0 auto等方法木有用了.想起来之前看过display:inline-block的文章, 果断用这个. 之前很少用这个属性..印象里麻烦比较多..好了不多说了,上代码. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <titl

css如何让浮动元素水平居中

对于定宽的非浮动元素我们可以在CSS中用 margin:0 auto 进行水平居中,对于不定宽的浮动元素我们也有一个常用的技巧解决它的水平居中问题.解决水平居中问题有很多种方法,下面先给大家分享一下三种方法,希望能帮助到大家. 方法一: 1.HTML 部分: <div class="box"> <p>我是浮动的</p> <p>我也是居中的</p></div> 2.CSS 部分: .box{ float:left;

使用CSS完成元素居中的七种方法

在网页布局中元素水平居中比元素垂直居中要简单不少,同时实现水平居中和垂直居中往往是最难的.现在是响应式设计的时代,我们很难确切的知道元素的准确高度和宽度,所以一些方案不大适用.据我所知, 在CSS中至少有六种实现居中的方法.我将使用下面的HTML结构从简单到复杂开始讲解: <div class="center">  <img src="jimmy-choo-shoe.jpg" alt></div> 鞋子图片会改变,但是他们都会保持