vertical-align 与 line-height

2024-04-28 17:48
文章标签 line align height vertical

本文主要是介绍vertical-align 与 line-height,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

vertical-align 适用范围

  • inline

  • inline-block

  • table - cell (起作用的是 table - cell 本身)
    这里写图片描述
    这里写图片描述

但是有以下条件的,则不适用:

  • display: absolute

  • float 使得该元素变成块级元素

vertical-align 与 line - height 联系

通过百分比实现

这里写图片描述

基线与外边界

vertical-align 的默认参考点是 baseline(基线)

  • 行内元素
    外边界: 与自己行高的上、下边对齐
    基线:字符恰好位于其上的那条线(基线总是穿过字体高度一半以下的某一点)

  • 行内块元素
    外边界:其外边距盒子的上、下两边
    基线:
    (1)有流内内容的行内块元素:基线就正常流中最后内容元素的基线
    (2)无流内内容 或者 有流内内容但overflow属性值不是visible的行内块元素 :基线与行内块元素的下外边界重合

  • 行盒子

外边界:行盒子的顶边与该行中最顶部元素的顶边重合,底边与该行中最底部元素的底边重合。
基线: 围绕基线的是行盒子中的文本盒子, 文本盒子的高度等于其父元素的font-size

Vertical-Align的值

这里写图片描述

这里写图片描述

这里写图片描述

字母’x’在CSS中

  • 基线

line-height 行高的定义就是两基线的间距;
vertical-align的默认值就是基线,
字母x的下边缘(线)就是我们的基线
这里写图片描述

  • x-height

x-height 指的是小写字母 ‘x’ 的高度
vertical-align: middle;指的是基线往上1/2 “x-height”高度,即字母x交叉点那个位置,但并不是绝对的垂直居中对齐,我们平常看到的middle效果只是一种近似的效果,因为不同的字体,其在行内盒子中的位置是不一样的,比方说’微软雅黑’就是一个字符下沉比较明显的字体,所有字符的位置相比其他字体要偏下一点。
这里写图片描述

  • ex

1ex 就是一个x的高度

行内、块状、行内块状元素的特点

  • 行内元素
    不能识别宽高
    不会以新行开始

  • 块状元素
    可以识别宽高
    会新起一行

  • 行内块状元素
    可以识别宽高
    不会以新行开始

line-height

行高:指两行文字间基线之间的距离。

  • 行高的垂直居中性:line-height的最终表现是通过line boxes实现的,而无论line boxes所占据的高度是多少,其占据的空间都是与文字内容公用水平中垂线的

  • 垂直居中的应用

1)单行文字 :把line-height值设置为height一样大小的值可以实现单行文字的垂直居中
2)多行文字
3)图片

  • line boxes盒模型

1) content area:一种围绕文字看不见的box
2) inline boxes: 不会让内容成块显示,而是排成一行,如果外部含inline属性的标签(span,a,cite),则属于inline boxes,如果是个光秃秃的文字,则属于匿名inline boxes
3) line boxes: 一个一个的inline boxes组成了line boxes( 高度是由其内部最高的inline boxes的高度)
4) containing box:包含以上的所有 boxes

目前css中,所有的高度都是由两个css模型产生的,一个是box模型,对css“height+padding+margin”,另一个是line box模型,对象样式为line-height

浮动为什么会使得元素没有高度?

inline boxes的高度直接受line-height控制,而真正的高度等于内部最高的inline box,而没有inline boxes,就没有高度了,而浮动恰恰是将元素的inline boxes破坏了,于是这些元素就没有高度了。

无inline box -> 无line box -> 无高度,但仍然在文档流中

替换元素 与 非替换元素:

  • 替换元素

是浏览器根据其标签的元素与属性来判断显示具体的内容。

比如:<input > <img>、<input>、<textarea>这些元素都没有实际的内容。

  • 非替换元素:

将内容直接告诉浏览器,将其显示出来。

比如<p>wanmei.com</p> 浏览器将把这段内容直接显示出来。

这篇关于vertical-align 与 line-height的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943863

相关文章

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from class path resource [bean1.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineN

line.split(‘ ‘).map(Number)

line.split(' ').map(Number) 是一个常见的 JavaScript 操作,分为两部分来理解: line.split(' '): 这一部分将字符串 line 按照空格 ' ' 分割成一个数组。假设 line 是 "1 2",那么 line.split(' ') 将返回 ["1", "2"],这是一个由字符串组成的数组。 .map(Number): map() 是 Jav

Command line is too long. Shorten command line for DisplayApplication (1) or

微服务项目启动类起不来,如下 解决办法:IEDA开发环境下 找到你的项目下面的.idea\workspace.xml 添加一个property : <property name="dynamic.classpath" value="true" /> 帮同事看的问题,自己测试没问题就关闭了。图片借用网上的。 参考:参考

扫描线Sweep Line算法总结

扫描线算法,推荐还是用标准的模板去写,treemap只适合于求最大的overlap个数的题目,其余的不能用treemap来解,所以推荐还是用event的思想去+1, -1然后排序扫描的方法可以用来解所有的题型; Number of Airplanes in the Sky 思路:经典扫描线算法:把interval起飞和降落做为event,全部打散,按照时间排列,同时时间相等的,按照降落在前面,起

org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: 29 near line 1, column

@SuppressWarnings("unchecked")   public List<Strudent> getStudent(int count) {       String hql = "select top "+count+" from Student";       return (List<Student>)getHibernateTemplate().fin

PHP Warning: File upload error - unable to create a temporary file in Unknown on line 0

服务器突然出现这种提示,无法上传文件和图片,怎么解决? PHP Warning: File upload error - unable to create a temporary file in Unknown on line 0 1.因为php.ini中没有设置上传的临时文件,默认为系统的临时文件地址。 2.如果没有权限去读系统的临时文件目录的话就会产生上述错误。 解决的方法就

Android运行时异常“Binary XML file line # : Error inflating class” 发生的几种情况

在原生Android下编译APK,编译没有问题,但是在运行的时候经常出现如标题所描述的异常,然后整个程序蹦掉......     大部分情况是因为修改了资源文件所引起,大致有以下几种方式来解决:     1. 引用类名问题:自定义了一个View,将他用于布局文件中,假设他的包名叫MyPackage,类名叫MyTestView,这个时候你在XML作为布局元素来布局的话,必须使用完整路径名,

android Binary XML file line #1: Binary XML file line #1: Error inflating class x 问题详解

话不多少,上错误堆栈: Process: com.mci.smagazine, PID: 25065java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mci.smagazine/com.zhangyue.iReader.idea.ActivityImageIdea}: android.view.Infla

C语言中的预处理指令的其中之一——#line

目录 开头1.什么是预处理指令——#line?2.预处理指令——#line的实际应用改__FILE__宏改__LINE__宏改__FILE__宏和__LINE__宏…… 下一篇博客要说的东西 开头 大家好,我叫这是我58。今天,我们要学一下关于C语言中的预处理指令的其中之一——#line的一些知识。 1.什么是预处理指令——#line? 预处理指令——#line,是一个用来

Command line is too long. Shorten command line for IhswfldWebApplication or also for Spring Boot ..

工作中,使用idea启动服务时报错如下图: 解决方法:打开启动配置页,选择 JAR mainfest, 点击 Apply, 点击 OK. 再次启动项目