Heim > Web-Frontend > HTML-Tutorial > CSS实现元素水平居中_html/css_WEB-ITnose

CSS实现元素水平居中_html/css_WEB-ITnose

WBOY
Freigeben: 2016-06-24 11:38:28
Original
1007 Leute haben es durchsucht

CSS实现元素水平居中

元素主要分为块级元素和行内元素,所以对元素进行水平居中也分这两种情况来讨论,另外块级元素的实现比较复杂,将分情况讨论。

一、行内元素

常用行内元素为a/img/input/span 等,标签内的HTML文本也属于此类。对于此类情况,水平居中是通过给父元素设置 text-align:center来实现的。
HTML结构:

<body>  <div class="txtCenter">    Hello World!!!  </div></body>
Nach dem Login kopieren

CSS样式:

<style>  div.txtCenter{    text-align:center;  }</style>
Nach dem Login kopieren

二、块级元素

常用块级元素为div/table/ul/dl/form/h1/p等。根据应用场景不同又分为定宽块级与不定宽块级两种情况,分别讨论。

1.定宽块级元素

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

<body>  <div>    Hello World!!!  </div></body>
Nach dem Login kopieren

CSS样式:

<style>  div{    border:1px solid red;/*为了显示居中效果明显为 div 设置了边框*/    width:500px;/*定宽*/    margin:20px auto;/* margin-left 与 margin-right 设置为 auto */  }</style>
Nach dem Login kopieren

2.不定宽块级元素

我们经常会遇到不定宽度块级元素的使用,如分页导航,因为分页的数目不定,所以不能用宽度限制住。此时对元素进行水平居中主要有三种方式:

  • 加入 table 标签

  • 设置 display;inline 方法

  • 设置 position:relative 和 left:50%;

2.1加入 table 标签

第一步:为需要设置的居中的元素外面加入一个 table 标签 ( 包括 、、 )。

第二步:为这个 table 设置“左右 margin:auto”(这个和定宽块状元素的方法一样)。
HTML结构:

<div>  <table>    <tbody>      <tr><td>        <ul>          <li><a href="#">1</a></li>          <li><a href="#">2</a></li>          <li><a href="#">3</a></li>        </ul>      </td></tr>    </tbody>  </table></div>
Nach dem Login kopieren

CSS样式:

<style>  table{    margin:0 auto;  }  ul{list-style:none;margin:0;padding:0;}  li{float:left;display:inline;margin-right:8px;}</style>
Nach dem Login kopieren

**这种方法的缺点是增加了无语义的HTML标签,增加了嵌套深度

2.2设置 display;inline 方法

改变块级元素的 dispaly 为 inline 类型,然后使用 text-align:center 来实现居中效果。
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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

这种方法的缺点是将块级元素的display设置为inline,于是少了很多功能,比如盒子模型

2.3设置 position:relative 和 left:50%;

通过给父元素设置 float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left:-50% 来实现水平居中。
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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

这种方法可以保留块状元素仍以 display:block 的形式显示,优点不添加无语议表标签,不增加嵌套深度,但它的缺点是设置了 position:relative,带来了一定的副作用。

三种方式各有利弊,根据实际情况相应选用。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage