css虽然没有算法,但还是很神奇的,踩到坑都不知道到底是哪里?看到张鑫旭大佬的博客讲的超级好https://www.zhangxinxu.com

行高line-height用到的频率极高,指一行文字的高度(两行文字间基线的距离)就像英文本子里的 倒数第二条线。

line-height与line boxes高度

css中起着高度作用的heigh以及line-height,如果一个便签没有定义height属性,那么最终表现的高度一定是line-height起作用。

一个空的<div></div>,没有设置高度,但在元素内添加文字,这个div就有了高度,我一直以为就是文字把div撑起来了啊,但事实并非如此。真正撑起高度的是line-height。

<div class="test1">测试</div>
<div class="test2">测试</div>
css:
.test1{ font-size: 20px;   border: 1px solid #ccc;   background: #eee;   line-height: 0px; }
 
.test2{ font-size: 0px;    border: 1px solid #ccc;   background: #eee;   line-height: 20px; }

有图有真相的证明了真正撑起div的高度的不是文字内容,而是line-height。

那到底line-height行高是怎么产生高低的?在inline box 模型中。有个lineboxes(是看不见的,作用就是包裹文字),一行文字一个line boxes(每行文字都有一个line boxes包裹)。line boxes并没有什么特性,就高度。所以一个没有设置height属性的div的高度就是由一个个line boxes 的高度堆积而成的。

但line boxes的高度真正取决于里面的inline boxes。图片,文字,<span>便签等带inline属性的标签。他看哪个inline boxes的实际line-height值最高,最高个的那个line-height值作为line boxes的高度

行高的垂直居中性

上面那张测试的图,证明,无论你文字是大还是小,其占据空间都是文字内容的公共水平中垂线。即使line boxes的高度为0,但他的文字的水平中垂线对称分布,这一特性可以实现文字或图片的垂直居中对齐。

文字或图片垂直居中对齐问题
单行文字垂直居中:设置line-height。
一直一来我们记得但文本居中的方法height与line-height等高,但其实直接设置line-height就可以,那个height是多余的。
多文本垂直居中:
p{
  line-height: 150px;
  border: 1px dashed #ccc;
}
span{
  display: inline-block;       /*将多行文本当一行处理*/
  line-height: 1.4em;         /*line-height具有继承性,需要重新设置*/
  vertical-align: middle;     /*中间线对齐*/
}
<p>
  <span>line-height为150px,font-size:12px<br>这里是第二行用来测试多行的显示效果</span>
</p>

多图片垂直居中

因为多图片,但img不支持浮动,所有外面在套一层

方法1     图片北京定位法:background-position:center:

ul li {
  width: 1em; /*根据font-size*/
  height: 1em;
  padding: 0.1em;
  margin: 0 0.1em 0 0;
  font-size: 128px;
  float: left;
  border: 1px solid #beceeb;
}
ul li img {
  display: block;
  width: 100%;
  height: 100%;
  background-repeat: no-repeat;
  background-position: center;
}

方法2    display:table-cell法

ul li {
  float: left;
  margin-right: 13px;
}
ul li div {
  display: table-cell;
  width: 144px;
  height: 144px;
  border: 1px solid #beceeb;
  font-size: 118px;
  text-align: center;
}
ul li div img {
  vertical-align: middle;
  width: 100px;
  height: 100px;
}
<ul>
  <li>
    <div>
      <img src="background.png" />
    </div>
  </li>
</ul>
方法3:inline-block垂直对齐    此方法只使用与多种图片对齐,如果只有一张图片,那就只能与空格对齐了
 
a{

display: inline-block;

width: 200px;

text-align: center;

vertical-align: center;

border: 1px solid peru;

}
img{
vertical-align: middle;
border: 1px solid red;
}
.one{
width: 100px;
height: 50px;
}
.two{
width: 100px;
height: 100px;
}
<div>
  <a href="#"><img class="one" src="1.jpg" alt=""></a>
  <a href="#"><img class="two" src="2.jpg" alt=""></a>
</div>

css之line-height及图片文字垂直居中的更多相关文章

  1. css 图片文字垂直居中

    先来看张图片 相信很多css新手遇到过这种问题,就是当图片和文本显示在一行的时候,效果很奇葩,文字和图片没法对齐, 这时我们需要做的是: 1,先给块级元素设置 display: inline-bloc ...

  2. UIButton 设置图片文字垂直居中排列

    #pragma mark 按钮图片文字垂直居中排列 -(void)setButtonContentCenter:(UIButton *)button { CGSize imgViewSize,titl ...

  3. css实现固定高度及未知高度文字垂直居中的完美解决方案

    在工作当中我们经常碰到类似于"固定高度文字垂直居中及未知高度垂直居中问题",或者 "图片垂直居中问题",而我们最容易会想到使用表格来垂直居中,或者如果是单行文字 ...

  4. css 单行图片文字水平垂直居中汇总

    (1) 水平居中 a. 行内元素水平居中 因为img是行内元素(行内块级元素也一样)父级元素设置text-align:center即可,例如: <div style="width: 6 ...

  5. 用CSS如何实现单行图片与文字垂直居中

    图片样式为 以下为引用的内容:.style img{vertical-align:middle;.....} 如果STYLE中有其它如INPUT或其它内联元素可写成 以下为引用的内容:.style i ...

  6. CSS一个属性,让图片后的文字垂直居中,效果看得见

    困扰我多年的疑难,终于解决了.哈哈哈,太爽了 背景 页面经常遇到,图片后面的文字显示在图片的中间部位,也就是说文字图片垂直居中. <div class="banner"> ...

  7. [HTML]DIV+CSS 文字垂直居中

    在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...

  8. div+css文字垂直居中 解决左侧头像右侧姓名,姓名多换行后相对于头像仍居中显示

    在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...

  9. CSS制作图片水平垂直居中 亲测推荐

    空白标签实现图片的垂直居中 这种方法很有意思,也很有独特之处,我的思路也是来自于张鑫旭-鑫空间-鑫生活写的<大小不固定的图片.多行文字的水平垂直居中>一文中的使用空白图片实现垂直对齐.他主 ...

随机推荐

  1. jquery 之ajax cache

    最近在做一个企业通讯录的功能,功能很简单,我的本意是做数据存储并且做同步更新,时间原因以及服务端的同事更倾向于简单点的方式,呵呵,于是我们就采取了实时查询的方式. 由于get请求有点多,由于页面的生命 ...

  2. greenplum中to_date函数注意点

    今天协助排查异常数据,发现是如下类似代码产生的: to_date(col_name,'yyyymmdd'),其中col_name是date类型. 这个代码运行后,结果是:2018-11-16的date ...

  3. python 绑定方法

    一.绑定方法与非绑定方法 1.绑定方法''' 绑定方法:绑定给谁就是给谁用的 1.凡是类中的方法和函数,都是绑定给对象使用的: 2.绑定方法都有自动传值的功能.传递进去的值,就是对象本身. 3.如果类 ...

  4. redis学习——redis应用场景

    毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象 ...

  5. tensorflow (七) k-means

    tensorflow基础暂不介绍 Python 相关库的安装 在进入正式聚类实验之前,我们还需要配置计算及画图需要用到相关支持包. 安装 seaborn: pip install seaborn 安装 ...

  6. [Leetcode easy]存些水题34、20、700

    leetcode 34 最早出现和最后出现 class Solution { public int[] searchRange(int[] nums, int target) { int []ans= ...

  7. 软工作业(JAVA)

    github传送门:https://github.com/hhg52516/WC.git 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序 ...

  8. 如何用EFCore Lazy Loading实现Entity Split

    α角 与 β角 支持 现实生活 的 计算机系统,总有着两大偏差,第一个是 现实生活 与 计算机系统 的α角,另外一个是计算机系统的 逻辑设计 与 物理设计 的β角.举个栗子: α角:假设某个公司的商业 ...

  9. MySql5.5安装详细说明

      双击MySql5.5安装文件开始: next 打勾,Next 选Custom,原因如下面所述: Typical(典型安装) Installs the most common program fea ...

  10. 基于react的MQ管理系统遇到的问题以及解决办法

    跟一般的管理系统差不多 一.需求 1.新增申请和修改的弹窗里面的部门跟应用组改成下拉框,并调取后台接口获取到相应的值.1.1相应的代码 // 获取部门 getDepartment = () => ...