• 多种居中方法


    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>
    View Code

    运行结果:

    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> 
    View Code

    运行结果:

    这种对齐方式只针对块标签内的行内标签(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>
    View Code

    运行结果:

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

    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>
    View Code

    运行结果:

    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;
                     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>
    View Code

    运行结果:

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

  • 相关阅读:
    ICON 收集
    vs2015with_update_3
    文件大全,以后就从这些格式入手fuzz
    诗词
    tools URL 收集
    (四)ORBSLAM运动估计
    (三)ORB特征匹配
    (二)ORB描述子提取源码思路与实现
    (一)ORB描述子提取
    双目立体匹配——归一化互相关(NCC)
  • 原文地址:https://www.cnblogs.com/lcy-house/p/6114228.html
Copyright © 2020-2023  润新知