css布局 : 居中问题

1.水平居中

1.1   margin:auto

把要居中的元素的margin-left和margin-right都设为auto,对浮动元素或绝对定位元素无效

1.2   text-align:center

只能对图片,按钮,文字等行内元素(display为inline或inline-block等)进行水平居中(对ie6.7对任何元素居中)

2.垂直居中

2.1   line-height:

把单行文字的line-height设为文字父容器的高度,适用于只有一行文字的情况

3.使用表格

3.1    用 td(也可能会用到 th)元素的 align="center" 以及 valign="middle" 这两个属性就可以处理它里面内容的水平和垂直居中,而且表格默认的就会对它里面的内容进行               垂直居中。如果想在css中控制表格内容的居中,垂直居中可以使用 vertical-align:middle,至于水平居中,貌似css中是没有相对应的属性的,但是在IE6、7中我们可                 以使用text-align:center来对表格里的元素进行水平居中,IE8+以及谷歌、火狐等浏览器的text-align:center只对行内元素起作用,对块状元素无效。

3.2    display:table-cell 来居中

通过display:table-cell 来把它模拟成一个表格单元格,就可以利用表格那很方便的居中特性了

     <div style="display:table-cell;vertical:middle;text-align:center;width:200px;height:200px; border:1px solid red;">
         <div style="width:50px;height:50px;background:blue;display:inline-block;"></div>
     </div>

4.使用绝对定位和margin负值实现居中

4.1  在已知高度和宽度的元素

绝对定位进行居中的原理是通过把这个绝对定位元素的left或top的属性设为50%,这个时候元素并不是居中的,而是比居中的位置向右或向左偏了这个元素宽度或高度的一半          的距离,所以需要使用一个负的margin-left或margin-top的值来把它拉回到居中的位置,这个负的margin值就取元素宽度或高度的一半。

<head>
   <style>
        body{margin:0;pdding:0;}
       .parent{width:200px;height:200px;border:1px solid red;position:relative}
       .child{width:100px;height:100px;background:blue;position:absolute;
         top:50%;
         left:50%;
         margin-left:-50px;   //元素宽度一半
         margin-top:-50px;   //元素宽度一半           }</style></head> <body>     <div class=parent>          <div class=child></div>    </div></body>

4.2也是在知道宽度和高度的元素中

这里如果不定义元素的宽和高的话,那么他的宽就会由left,right的值来决定,高会由top,bottom的值来决定,所以必须要设置元素的高和宽。同时如果改变left,right ,             top , bottom的值还能让元素向某个方向偏移,大家可以自己去尝试。

<head>
  <style>
      body{margin:0;padding:0}
     .parent{width:200px;height:200px;border:1px solid red;position:relative}       .child{width:100px;height:100px;background:blue;position:absolute;
        top:0;
        right:0;
        bottom:0;
        left:0;
        margin:auto;
       }
  </style>
</head>
<body>
    <div class="parent">
          <div class="child"></div>
    </div>
</body>

5.使用浮动配合相对定位来实现居中

关于浮动元素如何设置居中,,不需要知道需要居中的元素的宽度

浮动居中的原理是:把浮动元素相对定位到父元素宽度50%的地方,但这个时候元素还不是居中的,而是比居中的那个位置多出了自身一半的宽度,这时就需要他里面的子元素      再用一个相对定位,把那多出的自身一半的宽度拉回来,而因为相对定位正是相对于自身来定位的,所以自身一半的宽度只要把left 或 right 设为50%就可以得到了,因而不用      知道自身的实际宽度是多少。

这种使用浮动配合相对定位来居中的方法,优点是不用知道要居中的元素的宽度,即使这个宽度是不断变化的也行;缺点是需要一个多余的元素来包裹要居中的元素。

<head>
     <style>
         body{margin:0;pdding:0}
         .parent{border:1px solid red;height:200px;width:200px;}         .wraper{float:left;position:relative;left:50%;clear:both;}
         .child{border:1px solid blue;position:relative;left:-50%;white-space:nowrap;}        //left:-50%;或者 right:50%
      </style>
</head>
<body>
   <div  class="parent">
        <div class="wraper">
            <div  class="child">水平居中了</div>
        </div>
        <div class="wraper" style="margin-top:20px">
            <div  class="child">宽度不同的</div>
        </div>
        <div class="wraper"style="margin-top:20px">
            <div  class="child">是的哈</div>
        </div>
 </div>
</body>
时间: 2024-10-29 01:08:06

css布局 : 居中问题的相关文章

CSS布局---居中方法

在web页面布局中居中是我们常遇到的情况,而居中分为水平居中与垂直居中 文本的居中 CSS中对文本的居中做的非常友好,我们是需要text-align, line-height 两个属性就可以控制文本的水平以及垂直居中 <head> <style type="text/css"> .text { width: 200px; height: 200px; border: 1px solid green; text-align: center; line-height

上中下结构DIV CSS布局实例

实例布局之上中下结构DIV CSS布局 上中下结构为常见布局结构,一般普通(企业网站)网页我们可以大致分为上(头部).中(内容区).下(底部版权)组成.而这其实是由最简单上下结构CSS布局演变而成,只不过多了一个DIV层结构而且,本质布局方法技巧不变. 一.主要思维   -   TOP 不管多少个上下结构或单一结构,一般主体内容都是居中的,这个使用就需要使用css margin样式(让布局居中兼容各大浏览器),同时一般网页都会固定宽度,也就是要使用css width设置好每个DIV层宽度. 这里

CSS布局之--各种居中

CSS布局奇淫技巧之--各种居中 居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明外,都是兼容IE6+.谷歌.火狐等主流浏览器的. 先来说几种简单的.人畜无害的居中方法 1. 把margin设为auto 具体来说就是把要居中的元素的margin-left和margin-right都设为auto,此方法只能进行水平的居中,且对浮动元素或绝对定位元素

DIV+CSS中让布局居中_背景图片居中_文字内容居中

DIV+CSS中让布局居中_背景图片居中_文字内容居中

典型的DIV+CSS布局——固定宽度且居中的版式

典型的DIV+CSS布局——固定宽度且居中的版式中,运用的是浮动属性:这个实例,则运用了绝对定位属性. 1.在#container中设置“position:relative;”,其作用是使得后面的绝对定位的基准为#container而不是以浏览器为其准. 2.左侧列#left_side和右侧#right_side列采用绝对定位,并且固定这两个div的宽度,而中间列#content由于需要根据浏览器自动调整,因此不设置类似属性. 但由于另外两个块的position属性设置为absolute,此时必

深度理解div+css布局嵌套盒子

1. 网页布局概述 网页布局的概念是把即将出现在网页中的所有元素进行定位,而CSS网页排版技术有别于传统的网页排版方法,它将页面首先在整体上使用<div>标记进行分块,然后对每个快进行CSS定位以及设置显示效果,最后在每个块中添加相应的内容.利用CSS排版方法更容易地控制页面每个元素的效果,更新也更容易,甚至页面的拓扑结构也可以通过修改相应的CSS属性来重新定位.  2. 盒子模型 盒子模型是CSS控制页面元素的一个重要概念,只有掌握了盒子模型,才能让CSS很好地控制页面上每一个元素,达到我们

css布局实践总结(part2)

一.总结: 在第一篇css布局实践心得总结中总结了通过给元素设置position:absolute的方式让元素处在BFC(块级格式化上下文)的环境中,处在BFC环境中的元素是独立的,它和外面其他元素毫无关系. 今天很兴奋的是实践到了通过将元素设置成line-block的方式让元素处在BFC的环境中,让其与外面的元素隔绝关系.还是引用这张图. 问题:如何让一个块级元素在没有采用float或position:absolute的情况下(采用这两种方式布局的元素,元素都会脱离文档流,元素大小由元素里面的

div+css 布局经验 - 最简单的 = 最不变形的(原创技巧)

站酷几年了 一直饱受其恩泽 尤为感激 一直想奉献些什么 但是苦于水平 苦于奔波 今天静下心来 为大家奉献下 自己的div+css 经验 ,以下观点只代表 深海个人立场 希望为初学者提供一条"捷径". 希望广大网友提出宝贵意见 同时不希望将初学的您 带入走火入魔的状态! 1 :css (cascading style sheet): 初学者可以下载一本css 2.0 手册 大概48小时的时间可以看完 试完.至于样式手册上的单词(属性和取值) 多久能背完取决你的努力和英语基础,请注意 无论

div css布局兼容性问题

在strict mode中:width是内容宽度 ,也就是说,元素真正的宽度 = margin-left + border-left-width + padding-left + width + padding-right + border-right-width + margin-right; 在quirks mode中:width则是元素的实际宽度 ,内容宽度 = width – (margin-left + margin-right + padding-left + padding-rig

(转)CSS布局-负边距-margin

css中的负边距(negative margin)是布局中的一个常用技巧,只要运用得合理常常会有意想不到的效果.很多特殊的css布局方法都依赖于负边距,所以掌握它的用法对于前端的同学来说,那是必须的.本文非常基础,老鸟可以略过. 负边距在普通文档流中的作用和效果 那些没有脱离文档流的元素(指不是浮动元素也不是绝对定位.固定定位的元素等),其在页面中的位置是跟随者文档流的变化而变化的.看下面这幅图: 负边距对这些由文档流控制的元素的作用是,会使它们在文档流中的位置发生偏移,但这种偏移不同于相对定位