zoukankan      html  css  js  c++  java
  • css中的vertical-align在内联元素中的表现--垂直对齐(带图示)

    基本认识

    (语法和取值都是从css手册上搬过来的内容)

      语法

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

    默认值:baseline

    适用于内联及 table-cell 元素

    继承性:无

    动画性:当值为 <length> 时

    计算值:指定值

      取值

    baseline:将支持valign特性的对象的内容与基线对齐

    sub:垂直对齐文本的下标

    super:垂直对齐文本的上标

    top:将支持valign特性的对象的内容与对象顶端对齐

    text-top:将支持valign特性的对象的文本与对象顶端对齐

    middle:将支持valign特性的对象的内容与对象中部对齐

    bottom:将支持valign特性的对象的文本与对象底端对齐

    text-bottom:将支持valign特性的对象的文本与对象顶端对齐

    <percentage>:使用 "line-height" 属性的百分比值来排列此元素,用百分比指定由基线算起的偏移量。可以为负值。基线对于百分数来说就是0%。

    <length>:用长度值指定由基线算起的偏移量。可以为负值。基线对于数值来说为0。(CSS2)

    ps:valign 属性规定单元格中内容的垂直排列方式

    x-height  -->  baseline到mean line 的高度

    vertical-align家族分类

    按照vertical-align的属性值来分类,可以分为以下4类

    • 线类,如 baseline(默认值)、top、middle、bottom;
    • 文本类,如 text-top、text-bottom;
    • 上标下标类,如 sub、super;
    • 数值百分比类,如 20px、2em、20%等。

      线类

    top和bottom的表现都十分稳定,和当前盒子的顶端或底端对齐

    但是middle的表现就有些迷了,在内联元素中,middle的定义是:元素的垂直中心点和行框盒子基线往上 1/2 x-height 处对齐

    说白了就是元素中部和容器的文本x的交叉点直线对齐

    上图盒子的高度由子元素决定,所以表现的垂直居中效果很正点

    但是如果盒子高度由父元素决定,大多数情况下也是这样

    这个时候middle的表现就不那么好了,只是近似垂直居中

      文本类

     分别对应text-top和text-bottom,这部分就不多说了

     上标、下标类

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vertical-align属性</title>
        <style>
        div{
            font-size: 60px;
            margin-bottom: 20px;
            background-color: #ccc;
        }
        sup,sub{
            background-color: #99cccc;
        }
        span{
            background-color: #ffcccc;
            font-size: 15px;    
        }
        .sup span{
            vertical-align: super;
        }
        .sub span{
            vertical-align: sub;
        }
        </style>
    </head>
    <body>
        <h3>上标、下标类</h3>
        <div class="sup">Sphinx<sup>sup-x</sup><span>spx</span></div>
        <div class="sub">Sphinx<sub>sub-x</sub><span>sbx</span></div>
    </body>
    </html>
    View Code

    sub:内容垂直对齐文本的下标的基线

    super:内容垂直对齐文本的上标的基线

    对于上标、下标在参考手册里的说明是这样的:

    上标文本将会显示在当前文本流中字符高度的一半为基准线的上方,但是与当前文本流中文字的字体和字号都是一样的

    下标文本将会显示在当前文本流中字符高度的一半为基准线的下方,但是与当前文本流中文字的字体和字号都是一样的

    意外的发现他俩的baseline、mean line和text-decoration的中划线表现步伐挺一致的↓↓↓

    其中是不是有什么关联也还要看text-decoration的定义了

      百分比、数值类

     在实例中line-height为20px,基线偏移量为200%的时候,实际上等于偏移40px

     

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vertical-align属性</title>
        <style>
        div{
            font-size: 60px;
            margin-bottom: 20px;
            background-color: #ccc;
        }
        span{
            background-color: #ffcccc;
            font-size: 15px;    
        }
        .z50 span{
            vertical-align: 50%;
        }
        .f50 span{
            vertical-align: -50%;
        }
        .l span{
            vertical-align: 200%;
        }
        .z30 span{
            vertical-align: 30px;
        }
        .f30 span{
            vertical-align: -30px;
        }
        .l2 span{
            vertical-align: 60px;
        }
        </style>
    </head>
    <body>
        <h3>百分比数值类</h3>
        <p>50%</p>
        <div class="z50">Sphinx<span>Sphinx</span></div>
        <p>-50%</p>
        <div class="f50">Sphinx<span>Sphinx</span></div>
        <p>200%</p>
        <div class="l">Sphinx<span>Sphinx</span></div>
    
        <p>30px</p>
        <div class="z30">Sphinx<span>Sphinx</span></div>
        <p>-30px</p>
        <div class="f30">Sphinx<span>Sphinx</span></div>
        <p>60px</p>
        <div class="l2">Sphinx<span>Sphinx</span></div>
    </body>
    </html>
    View Code

    结束

    vertical-algin在table-cell中的表现就先撂着了

  • 相关阅读:
    EChart处理三维数据做图表、多维legend图例处理
    详解Vuex常见问题、深入理解Vuex
    解决vuex在页面刷新后数据丢失的问题
    vue-router路由元信息详解
    修改Nginx与Apache配置参数解决http状态码:413上传文件大小限制问题
    ab.exe使用
    项目经验
    消息队列系列(一):.Net平台下的消息队列介绍
    【转】谈基于SOA的应用系统设计和开发
    2015年12周(2015-03-16~2015-03-22)
  • 原文地址:https://www.cnblogs.com/liangdecha/p/9682056.html
Copyright © 2011-2022 走看看