多种居中方法

1、快标签自身水平居中:

当一个有宽度的块标签设置margin:0 auto时将实现自身的水平居中,示例脚本如下

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>float</title>
        <style type="text/css">
            #container {
                margin: 0 auto;
                width: 90%;
                background: lightblue;
                height: 200px;
            }
        </style>
    </head>
    <body>
        <div id="container">
        </div>
    </body>
</html>

运行结果:

2、快标签内对其

text-align:start | end | left | right | center | justify | match-parent | justify-all
默认值:start
适用于:块标签
left: 内容左对齐。 
center: 内容居中对齐。 
right: 内容右对齐。 
justify: 内容两端对齐,但对于强制打断的行(被打断的这一行)及最后一行(包括仅有一行文本的情况,因为它既是第一行也是最后一行)不做处理。(CSS3) 
start: 内容对齐开始边界。(CSS3) 
end: 内容对齐结束边界。(CSS3) 
match-parent: 这个值和 inherit 表现一致,只是该值继承的 start 或 end 关键字是针对父母的 <‘ direction ‘> 值并计算的,计算值可以是 left 和 right 。(CSS3) 
justify-all: 效果等同于 justify,但还会让最后一行也两端对齐。(CSS3)

示例代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>float</title>
        <style type="text/css">
            #container {
                margin: 0 auto;
                width: 90%;
                background: lightblue;
                height: 200px;
                text-align: center;
            }
            #div1{
                width: 100px;
                height: 100px;
                background: lightgreen;
            }
        </style>
    </head>
    <body>
        <div id="container">
            <div id="div1">div1</div>
            Hello Center
        </div>
    </body>
</html> 

运行结果:

这种对齐方式只针对块标签内的行内标签(inline box)与行内块标签(inline block)有将,对块标签是无效的因为块标签默认总是占整行。如果将示例中div1的显示方式修改为行内块标签(display: inline-block;),则效果如下所示:

3、垂直居中方法一

当一个设置了定位的元素所有的偏移为0且margin为auto时将水平,垂直都居中,且父元素自身的高度可动态变化。

示例代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            html,body{
                height: 100%;
            }
            #div0{
                width: 80%;
                height: 90%;
                border: 2px solid orange;
                margin: 0 auto;
                position: relative;/*如果父元素不设置定位,则是相对body居中*/
            }
            #div1{
                width: 200px;
                height: 150px;
                background: greenyellow;
                position: absolute;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
                margin: auto;
            }
        </style>
    </head>
    <body>
        <div id="div0">
            <div id="div1"></div>
        </div>
    </body>
</html>

运行结果:

4、垂直居中方法二

如果是单行文本,行高如块的高度一样时将居中,只一行,行高和元素一样高,居中。

line-height: 120px;
height: 120px;

注:只可以是文字等一些行内标签,图片不行

示例代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #div1{
                height: 100px;
                background: yellow;
                /*text-align: center;*/
                line-height: 100px;
            }
        </style>
    </head>
    <body>
        <div id="div1">
            只可以是文字等一些行内标签,图片不行
        </div>
    </body>
</html>

运行结果:

把line-height:100px 换成是font:20px/100px "microsoft yahei" 也是一样的效果(20表示字体大小,100表示行高)

5、垂直居中方法三

让元素相对父元素定位,偏移左50%,上50%,把自身向左移半个宽度,向上移半个高度,同时完成了水平与垂直方向的居中

(个人理解的是,让元素相对父元素定位,偏移左50%,上50%后,只是元素的左顶点居中了,把自身向左移半个宽度,向上移半个高度后,则是考虑了自身高度和宽度的影响)

示例代码:

首先只是让元素相对父元素定位,偏移左50%,上50%:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #div1{
                width: 80%;
                height: 600px;
                position: relative;
                background: yellow;
                margin: 0 auto;
            }
            #div2{
                width:300px;
                height: 200px;
                position: absolute;
                background: lawngreen;
                left: 50%;
                top: 50%;
            }
        </style>
    </head>
    <body>
        <div id="div1">
            <div id="div2"></div>
        </div>
    </body>
</html>

运行结果:

把自身向左移半个宽度,向上移半个高度后:即加上下面两句代码:

margin-left: -150px;
margin-top: -100px;

运行结果:

6、垂直居中方法四

在CSS有一个属性应该欺骗过很多开发者,一直认为使用了他就可以垂直居中了,但不行,这个属性就是:

语法:vertical-align:baseline | sub | super | top | text-top | middle | bottom | text-bottom | <percentage> | <length>

默认值:baseline

作用:设置或检索内联元素在行框内的垂直对其方式
适用于:内联级与 table-cell 元素
baseline: 把当前盒的基线与父级盒的基线对齐。如果该盒没有基线,就将底部外边距的边界和父级的基线对齐 
sub: 把当前盒的基线降低到合适的位置作为父级盒的下标(该值不影响该元素文本的字体大小) 
super: 把当前盒的基线提升到合适的位置作为父级盒的上标(该值不影响该元素文本的字体大小) 
text-top: 把当前盒的top和父级的内容区的top对齐 
text-bottom: 把当前盒的bottom和父级的内容区的bottom对齐 
middle: 把当前盒的垂直中心和父级盒的基线加上父级的半x-height对齐 
top: 把当前盒的top与行盒的top对齐 
bottom: 把当前盒的bottom与行盒的bottom对齐 
<percentage>: 把当前盒提升(正值)或者降低(负值)这个距离,百分比相对line-height计算。当值为0%时等同于baseline。 
<length>: 把当前盒提升(正值)或者降低(负值)这个距离。当值为0时等同于baseline。(CSS2) 说明:
设置或检索内联元素在行框内的垂直对其方式。 
对应的脚本特性为verticalAlign。

不能实现对齐的主要原因是:vertical-align这个属性的特点,它是相对兄弟级行高(line-height)来定位

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #div1{
                width: 60%;
                height: 500px;
                background: lawngreen;
                position: relative;
                margin: 0 auto;
                text-align: center;
            }
            #img1{
                width:150px;
                height: 150px;
                vertical-align: middle;
            }
            span{
                line-height: 500px;
            }
        </style>
    </head>
    <body>
        <div id="div1">
            <img src="img/bgc.jpg" id="img1" /><span>span1</span>
        </div>
    </body>
</html>

运行结果:

7、使用表格特性居中

示例代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #div0{
                width: 60%;
                height: 500px;
                background: lawngreen;
                margin: 0 auto;
                display: table;/*类似让div0为一个table*/
            }
            #div1{
                display: table-cell;/*类似table中的td*/
                vertical-align: middle;/*垂直居中*/
                text-align: center;
            }
        </style>
    </head>
    <body>
        <div id="div0">
            <div id="div1">
                <img src="img/bgc.jpg" id="img1" />
            </div>
        </div>
    </body>
</html>

运行结果:

test:使用div构造一个表格:

示例代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .dtable{
                display: table;
                width: 50%;
                margin: 0 auto;
            }
            .dtr{
                display: table-row;
            }
            .dtd{
                display: table-cell;
                border: 1px solid gray;
                text-align: center;
            }
        </style>
    </head>
    <body>
        <div class="dtable">
            <div class="dtr">
                <div class="dtd">td11</div>
                <div class="dtd">td12</div>
            </div>
            <div class="dtr">
                <div class="dtd">td21</div>
                <div class="dtd">td22</div>
            </div>
        </div>
    </body>
</html>

运行结果:

8、垂直居中方法六

在某些时候需要将小图片与文字对齐,可以使用对齐的属性absmiddle(绝对居中),示例如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">

            .div1{
                border: 1px solid lawngreen;
            }

        </style>
    </head>
    <body>

        <div class="div1">
            <img src="img/bla.png" align="absmiddle"/>和谐的美景
        </div>
    </body>
</html>

运行结果:

在IE8中浏览效果一样

9、垂直居中方法七

方法与4.5非常类似,但是4.5要求知道居中元素自身的高度与宽度,这样会有一定的局限,CSS3中可以使用transform移动元素自身的宽度与高度,示例代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            /*.dtable{
                display: table;
                width: 50%;
                margin: 0 auto;
            }
            .dtr{
                display: table-row;
            }
            .dtd{
                display: table-cell;
                border: 1px solid gray;
                text-align: center;
            }*/

            html,body{
                margin: 0;
                padding: 0;
                height: 100%;
            }
            .div1{
                width: 80%;
                height: 70%;
                background: lawngreen;
                margin: 0 auto;
                position: relative;
            }
            #img1{
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%,-50%);
            }
        </style>
    </head>
    <body>
        <!--<div class="dtable">
            <div class="dtr">
                <div class="dtd">td11</div>
                <div class="dtd">td12</div>
            </div>
            <div class="dtr">
                <div class="dtd">td21</div>
                <div class="dtd">td22</div>
            </div>
        </div>-->

        <div class="div1">
            <img src="img/bla.png" id="img1"/>
        </div>
    </body>
</html>

运行结果:

transform用于设置或检索对象的转换,参数translate()指定对象的2D translation(2D平移)。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则默认值为0

时间: 2024-10-12 14:56:45

多种居中方法的相关文章

(前端)html与css css 13、多种居中方法

一.文字居中 1.水平方向居中: text-align: center; 2.垂直方向: ①:单行文本居中,行高等于盒子高↓ line-height: 200px; 完整代码.效果图 ↓ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmln

居中方法

在css3中有一种居中方法 父元素 display:-webkit-box      -webkit-box-pack:center:表示垂直居中       -weblit-box-align:center:表示水平居中 单独使用可以实现单独的水平或垂直居中,两个结合可以实现完全居中 完全居中方法:父元素设置display:flexed    子元素设置   margin:auto (b),子元素 position:absolute  , top:0: bottom:0:  left:0:  

[51单片机学习笔记ONE]-----LED灯的多种使用方法

一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间间隔1s 3 实验时间: 2014年12月2日 4 ******************************************************/ 5 6 #include <reg51.h> 7 8 void delay(unsigned char a); 9 10 void m

HTML布局居中方法

居中方法 1.固定值居中: 需要居中的内容在父级盒子内设置固定的margin或 padding值使内容居中 缺点:若父级宽度改变将不会居中 2.自适应居中 1. left:50%; top:50%; margin-left:50%;/*本身内容宽度的一半*/ margin-top:50% 2.(万能居中法) left:0; right:0; bottom:0; top:0; margin:auto; ###(初学者)若有错误请大家联系我QQ907668044

css常见居中方法

在css布局中,居中占着很关键的作用,如果不能很好的运用居中,就会导致整个页面的混乱. 在实际页面布局中,居中的方法有很多,有很多简单实用的方法,也有老实的方法.刚开始写页面的时候,我比较喜欢用老实的方法去写,因为不会错,但我们也应该掌握常见的居中方法. 常见居中方法: text-align:center 在父容器里水平居中 inline文字,或inline元素. vertical-ailgn:middle 垂直居中 inline文字,inline元素,配合display:table,displ

A标签触发onclick事件而不跳转的多种解决方法

A标签触发onclick事件而不跳转的多种解决方法 一个标签仅仅是要触发onclick行为,遇到了A标签触发onclick事件时不执行跳转: 在web页面开发时,我们经常会遇到下列情况: 1.一个标签仅仅是要触发onclick行为: 2.表现上要有鼠标的pointer指针显示,或者其他类似a标签的视觉效果. 比如执行删除操作时,为了避免误操作,我们要弹出对话框让用户确定是否删除.因此我们经常会用链接<a></a>形式代替<button> 触发onclick事件. <

freemarker空值的多种处理方法

默认情况下,freemarker的变量必须有值,如果没有被赋值的变量在页面上使用就会抛出异常,出错的信息都会显示在页面上. 解决办法: 方法一.我们可以在页面上使用freemarker变量时 以 ${xxx?if_exists} 来处理空值的情况,或采用默认值的方法避免此类问题.但每个freemarker变量都这样处理确实比较让人心烦,请看以下方法. 方法二.在类路径下 加入 freemarker.properties 文件,里面配置 classic_compatible=true. 方法三.通

Servlet、SPringMVC、Struts等防止表单重复提交的多种处理方法

第一种处理方法(非拦截器): 目前这种方法不建议,因为JSP规范不建议写JAVA代码.这种可以方便第二种处理方法的理解,第二种方法引入拦截器的思想,原理基本一样,模仿Struts的Token机制. 1.在需要防止重复的jsp中加入下面的java代码, <%@page import="java.util.Random"%> <%@page import="java.util.Set"%> <%@page import="java

Servlet、SPringMVC、Struts等防止表单反复提交的多种处理方法

第一种处理方法(非拦截器): 眼下这样的方法不建议,由于JSP规范不建议写JAVA代码.这样的能够方便另外一种处理方法的理解,另外一种方法引入拦截器的思想,原理基本一样,模仿Struts的Token机制. 1.在须要防止反复的jsp中添?以下的java代码, <%@page import="java.util.Random"%> <%@page import="java.util.Set"%> <%@page import="