`

布局居中 (转)

阅读更多

   我相信所有的前端菜鸟在刚开始工作的时候都会和我一样,收到实现居中的需求。

网上的CSS居中帖子不胜枚举,但大多都没有很好的总结(或者有好的但是我没运气碰到)

今天就自己写一个吧,也算是对之前工作的总结。

 

一、水平居中

1.将元素水平居中

        div.h_align{
            border: 1px solid black;
            
            /*key code:*/
            margin-left: auto;
            margin-right: auto;
            width: 300px;/*必须指定宽度*/
        }

 html code:

<div class="h_align">我是div!come on 求水平居中!</div>

summary:

(1)以上方法在无文档类型或文档类型是HTML4时,对IE无效,因为此时IE将此文档解析为HTML而不是XHTML或HTML5

(2)使用上述方法水平居中,必须指定宽度

 

2.将元素水平居中(use absolute position & width)

css code:

        section{
            border: 1px solid red;
            
            /*key code:*/
            position: absolute;
            left: 50%;
            width: 300px;
            margin-left: -150px;
        }

html code:

<section>我是section!同求水平居中!</section>

summary:

(1)这个方法的思想是,利用绝对定位 left 50%以后,使负外边距的值为元素宽度的一半,从而实现居中(这个思路也可以用在垂直居中上)

 

二、垂直居中

1.单行文本垂直居中

css code:

        p.single_line{
            border: 1px solid green;

            /*key code:*/
            height: 4em;
            line-height: 4em;
            overflow: hidden;
        } 

 

html code:

<p class="single_line">我是单行文本!我有100px高,我要垂直居中!</p>

 

summary:

(1)key:令行距和元素高度相同,这样就限定了容器内只能容纳一行文本内容,于是文本就居中了

(2)设定height和line-height时,推荐使用相对单位em,这样能够在字体非常大的时候,依然保持居中

(3)overflow:hidden是必须的,理由同上,也是为了保持居中

(4)优点:块元素和行内元素均适用此方法,并且在主流浏览器中适用

(5)缺点:文本长度有限(最多只能一行),且对于非文本的元素无效

 

2.无固定高度的多行文本垂直居中

css code:

        p.multi_line{
            border: 1px solid gray;
            width: 100px;

            /*key code:*/
            padding-top: 30px;
            padding-bottom: 30px;
        }

 

html code:

<p class="multi_line">我是多行文本!我宽100px但是没有固定高度!跪求垂直居中!</p>

 

summary:

(1)key:令上内边距和下内边距相等。值是多少无所谓,相等即可,使用上下外边距相等也可

(2)优点:块元素和行内元素均适用此方法,非文本元素也可以使用,并且在主流浏览器中适用

(3)缺点:无法设置高度

 

3.将固定高度的容器模拟表格布局实现垂直居中

css code:

        div.wrap1{
            border: 1px solid black;

            /*key code:*/
            display:table;
            height:300px;
        }
        div.wrap2{
            /*key code:*/
            display:table-row;
        }
        div.wrap3{
            /*key code:*/
            display:table-cell;
            vertical-align:middle;
        }
        div.maincontent{
            width:350px;
            background-color:black;
            color: white;

            /*key code:*/
            height:90px;/* less than wrap1.height */            
        }

 

html code:

    <div class="wrap1">
        <div class="wrap2">
            <div class="wrap3">
                <div class="maincontent">我老爸高300px,我自己是350 X 90 px,我也可以居中啦哇哈哈,可是别在IE6/7下看我噢</div>
                <!-- other content -->
            </div>
        </div> 
    </div>

 

summary:

(1)key:使用display属性中的table、table-row、table-cell来将元素模拟成表格布局。处于wrap3中的所有元素都会垂直居中,但是它们的高度总和不能超过wrap1的高度

(2)使用display:table-cell的时候必须同时在祖先元素使用display:table

(3)缺点:不能在IE6/7下实现

 

4.IE7及以下的解决办法

css code:

        div.IE7wrap1{
            border: 1px solid pink;

            /*key code:*/
            height: 300px;
            position: relative;
        }
        div.IE7wrap2{
            /*key code:*/
            position: absolute;
            top: 50%;
            left: 0;
        }
        div.IE7maincontent{
            width:350px;
            background-color:black;
            color: white;
            height: 90px;

            /*key code:*/
            position: relative;
            top:-50%;
            left: 0;
        }

 

html code:

    <div class="IE7wrap1">
        <div class="IE7wrap2">
            <div class="IE7maincontent">嘿哥们,我是IE6/7的解决方案,要看我就要用IE6/7,不然我丑爆了</div>
        </div>
    </div>

 

summary:

(1)算是一个css hack,服务于IE6/7

 

三、总结

工作时积累下来的经验,以及摘抄网上的资料,总结成这一篇博文,如果对您有帮助,请您推荐。

共勉。

分享到:
评论

相关推荐

    DIV+CSS DIV居中布局

    本篇文章将深入探讨如何利用`DIV+CSS`实现`DIV`的居中布局。 首先,我们要理解`&lt;div&gt;`元素。`&lt;div&gt;`是“division”的缩写,代表一个区域或区块,在HTML中用于组合其他元素,是构建网页布局的基础。通过设置`&lt;div&gt;`...

    CSS网页布局DIV水平居中的各种方法

    CSS 网页布局 DIV 水平居中的各种方法 在现代浏览器中,实现 DIV 的水平居中是一件非常简单的事情。下面我们将详细介绍几种常见的方法。 方法一:使用 margin:auto 这种方法是最简单的,直接将 DIV 的 margin ...

    Flutter:Center(居中布局),Padding(填充布局),Align(对齐布局)

    文章目录Center (居中布局)Padding (填充布局)Align (对齐布局) Center (居中布局) 在Center布局中,子元素处于水平和垂直方向的中间位置。代码如下: void main() =&gt; runApp(MyApp()); class MyApp extends...

    Div+CSS布局居中.pdf

    【Div+CSS布局居中】是网页设计中一个常见的需求,本文主要介绍了四种使用CSS让元素水平居中的方法。这些方法适用于不同的浏览器环境,包括一些早期版本的IE浏览器,以及现代浏览器。 1. **自动外边距实现居中**: ...

    Div+CSS布局居中

    ### Div+CSS布局居中的实现方法 在网页设计与开发过程中,经常遇到的一个问题是如何让一个元素(如图片、文本块或容器等)在页面上水平居中显示。特别是当涉及到跨浏览器兼容性时,这一问题变得更加复杂。本文将...

    Android布局居中的几种做法

    在Android开发中,布局居中是一项常见的需求,无论是为了实现美观的设计还是为了提供良好的用户体验。本文将详细探讨三种主要的Android布局居中方法:`android:layout_gravity`、`android:gravity`以及`android:...

    Div+CSS布局居中.docx

    【Div+CSS布局居中】是网页设计中常见的需求,主要涉及到CSS的布局技术,特别是元素的居中对齐方式。以下将详细讲解几种常见的CSS居中方法。 1. **使用自动外边距实现居中** 这是CSS中推荐的让元素水平居中的方法...

    10种经典布局和5种居中布局

    在本文中,我们将深入探讨10种经典布局和5种居中布局策略,帮助开发者解决在不同分辨率下实现界面兼容的问题。 1. **流式布局**:流式布局是最基础的响应式方法,通过百分比设置宽度,使元素随浏览器窗口大小变化而...

    DIV+CSS中让布局居中.docx

    本文主要探讨如何使用CSS使布局在页面中居中。 首先,要实现整个布局的居中,我们需要设置页面的最外层容器,通常是`body`元素。在CSS中,可以使用`text-align:center;`属性来使内部的内容居中对齐。例如: ```css...

    css布局居中和CSS内容居中区别和对应DIV CSS代码.docx

    - **布局居中案例**:可以参考相关的CSS布局居中教程,学习如何实现单个或多个div的水平居中,包括一列和多列布局的居中方法。 - **内容居中案例**:探索更多关于HTML文本、div内字体和元素垂直居中的CSS技巧,以...

    css三角形、居中、圣杯布局

    css三角形、居中、圣杯布局

    unigui元素在父界面内居中.rar

    本教程将深入探讨如何在Unigui中使元素在父界面内居中,这是一个常见的布局需求,特别是在设计用户友好的界面时。 首先,了解Unigui的基本概念是必要的。Unigui的主要组件包括按钮、标签、编辑框、表格等,它们都...

    DIV+CSS上下左右绝对居中

    在网页设计中,"DIV+CSS上下左右绝对居中"是一个常见的布局需求,尤其是在构建响应式网站时。这个主题涉及到CSS(层叠样式表)的布局技巧,它可以帮助元素在不同屏幕尺寸下都能保持在容器的中心位置。下面将详细探讨...

    div水平居中的方法

    CSS网页布局DIV水平居中的各种方法 CSS网页布局DIV水平居中的各种方法 CSS网页布局DIV水平居中的各种方法 CSS网页布局DIV水平居中的各种方法 CSS网页布局DIV水平居中的各种方法CSS网页布局DIV水平居中的各种方法

    应用帧布局管理器居中显示层叠的正方形

    应用帧布局管理器居中显示层叠的正方形 在 Android 开发中,FrameLayout 是一个常用的布局管理器,用于管理屏幕上的控件布局。今天,我们将学习如何使用 FrameLayout 实现居中的显示层叠的正方形实验。 知识点一:...

Global site tag (gtag.js) - Google Analytics