zoukankan      html  css  js  c++  java
  • 水平居中——行内元素、定宽块、不定宽块

    声明:来自http://www.imooc.com/learn/9 学习

    行内元素

    如果被设置元素为文本、图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的。

    定宽块状元素

    满足定宽和块状两个条件的元素是可以通过设置“左右margin”值为“auto”来实现居中的。

     1 margin:0 auto; 

    不定宽块状元素

    不定宽度的块状元素有三种方法居中(这三种方法目前使用的都比多):

    1. 加入 table 标签
    2. 设置 display;inline 方法
    3. 设置 position:relative 和 left:50%;

    1.HTML代码:

     1 <div>
     2 <table>
     3   <tbody>
     4     <tr><td>
     5     <ul>
     6         <li><a href="#">1</a></li>
     7         <li><a href="#">2</a></li>
     8         <li><a href="#">3</a></li>
     9     </ul>
    10     </td></tr>
    11   </tbody>
    12 </table>
    13 </div>

      CSS代码:

    1 table{
    2     margin:0 auto;
    3 }
    4 ul{list-style:none;margin:0;padding:0;}
    5 li{float:left;display:inline;margin-right:8px;}

    2.

    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.HTML代码

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

    代码如下:

    <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,带来了一定的副作用。

    这三种方法使用得都非常广泛,各有优缺点,具体选用哪种方法,可以视具体情况而定。

  • 相关阅读:
    函数探幽--引用变量
    函数探幽—内联函数
    我遇到的头文件
    继承的特点
    汇编语言中压栈与入栈
    cin.good(),cin.fail(),cin.clear()
    结构体的处理(以c++primer plus 第六章习题4为例)
    uva508
    uva253 CubePainting
    uva1590
  • 原文地址:https://www.cnblogs.com/cassandra/p/4726957.html
Copyright © 2011-2022 走看看