ie对行高line-height的诡异解释
切 游戏页面真地是要求太精细了,做按钮的时候我犯了一个错误,居然用span的内联元素的行高和padding来控制,虽然有很多好处,但是IE对 line-height的解释导致按钮经常下边会缺一小部分,也就是说,实际上居中的文本距离顶部和底部的距离会差2个像素左右,一般情况看不出问题,但 在精细的场合就没办法了。所以最好用块元素的PADDING来做按钮,而且高度最好为偶数值。
先写个height、line-height都为25px,背景为红色的元素,设置文字为12px。然后量下,文字上面是6像素,文字下面是8像
素。。同时增加或者减少height、line-height
1px发现如果当前值是奇数那1px会加到文字和底部空间里而减少时减掉的是文字和顶部空间的1px(加下减上);为偶数时刚好相反:加上减下。当我们给
文字加下划线的时候发现文字的垂直位置并没变,这能说明什么呢?还不太肯定,继续同时减小heighe、line-height直到一个合适的
值:14px,这时候我们可以看到文字和下划线都是完整的,继续减小1px。这时IE已经不按我们刚才发现的规矩办事了,文字上面被截去1px,这样看来
14px应该是IE认为的一个临界点,此时整体高低减去文字高度刚好为3px。会不会?。。。因为这时文字是顶这上边界的,我们把文字增加到2行,发现了
吧,第二行的文字不是顶这第一行的下划线的,而是有1px的距离。3px果然是下划线的高度。
其实这里还有一点特殊的地方就是如果我们一开始把height、line-height都设为30px那这时2px会变为3px。这个可以用我们上面得出
的“偶数情况加上减下的结论”解释:heighe、line-height同为30px的时候上下空白区域高度差是3px,然后height、line-
height同时加1px(就是31px),这1px应该是加到上部空间里,所以3pxbug会变成2pxbug。
IE6-IE8都有这个问题,firefox,Opera,Safari也都存在这个问题,
<div
style="height:25px;line-height:25px;background:red;color:#FFFFFF;font-
size:12px;">文字字</div>
文字上面是6像素,文字下面是8像素
<div
style="height:30px;line-height:30px;background:red;color:#FFFFFF;font-
size:12px;">文字字</div>
ie下:文字上面是8像素,文字下面是11像素;firefox,Opera,Safari下:文字上面是9像素,文字下面是10像素
算一下我们就可以知道,其实没带下划线的12px文字在显示的时候都是11像素。
有2个相对解决方案;
方案1、加padding-top:
<div style="height:22px;line-height:22px;
padding-top:3px;background:red;color:#FFFFFF;font-size:12px;">文字
字</div>
方案2、加overflow:hidden:
<div
style="height:25px;line-height:28px;background:red;color:#FFFFFF;font-
size:12px;
overflow:hidden">文字字</div>
ie对行高line-height的诡异解释的更多相关文章
- 深入了解css的行高Line Height属性
什么是行间距? 古时候我们使用印刷机来出来文字.印刷出来的每个字,都位于独立的一个块中. 行间距,即传说中控制两行文字垂直距离的东东.在CSS中,line-height被用来控制行与行之间垂直距离. ...
- css - 行高
css - 行高 line-height行高 取值:px | em | rem | 百分比 | 纯数字 | normal | inherit 设置给:块.行内.行内块 应用给:文本 继承:块.行内.被 ...
- easyui datagird 解决行高不一致问题!
<style>.datagrid-btable .datagrid-cell {padding: 6px 4px;overflow: hidden;text-overflow: ellip ...
- wpf datagrid row height 行高自动计算使每行行高自适应文本
wpf 的datagrid的行高 要么是Auto,要么是定值:但会带来麻烦就是每行行高都一样. 当需要按内容(主要是wrap 换行的textbox或textblock)来动态调整行高的时候,需要用到d ...
- css中line-height行高的深入学习
之前对css中行高line-height的理解还是有些肤浅,深入后才发觉里面包罗万象.学习行高line-height,首先从基本原理开始 (标注该文章转载 http://www.cnblogs.com ...
- 第2月第24天 coretext 行高
1.NSMutableAttributedString 行高 NSMutableAttributedString *attributedString = [[NSMutableAttributedSt ...
- CSS行高——line-height
初入前端的时候觉得CSS知道display.position.float就可以在布局上游刃有余了,随着以后工作问题层出不穷,才逐渐了解到CSS并不是几个style属性那么简单,最近看了一些关于行高的知 ...
- CSS行高line-height的理解
一.行高的字面意思 “行高“顾名思义指一行文子的高度.具体来说是指两行文子间基线间的距离. 基线是在英文字母中用到的一个概念,我们刚学英语的时候使用到的那个英语本子每行有4条线,其中底部第二条线就是基 ...
- 深入理解 CSS 中的行高与基线
1.基本概念 1. 基线.底线.顶线.中线 注意:基线(base line)并不是汉字文字的下端沿,而是英文字母“x”的下端沿. 2. 内容区 内容区是指底线和顶线包裹的区域(行内元素display ...
随机推荐
- DP:LCS(最长公共子串、最长公共子序列)
1. 两者区别 约定:在本文中用 LCStr 表示最长公共子串(Longest Common Substring),LCSeq 表示最长公共子序列(Longest Common Subsequence ...
- oracle触发器详解(转)
触发器是许多关系数据库系统都提供的一项技术.在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块. 8.1 触发器类型 触发器在数据库里以独立的对象存储,它与存储过 ...
- untiy 插件工具: 游戏中 策划数据Excel 导出到项目中
https://github.com/zhutaorun/Excel2Unity,这个项目是直接下载就可以用的, 其中原理和相关的解释 http://blog.csdn.net/neil3d/arti ...
- JavaEE5种常见的设计模式
1.工厂模式:比如你写了个应用,里面用到了数据库的封装,你的应用可以今后需要在不同的数据库环境下运行,可能是oracle,db2,sql server等, 那么连接数据库的代码是不一样的,你用传统的方 ...
- pymongo 例子
import pymongo class dbUtil(object): def __init__(self, tablename='functional_testing'): con = pymon ...
- Django admin的一些有用定制
Model实例,myapp/models.py: from django.db import models class Blog(models.Model): name = models.CharFi ...
- php命令行用法简介
Php是一个非常流行的web服务端脚本语言.其实,php不仅仅可以在web服务器中充当重要角色.在命令行一样可以执行. 本文中,笔者为各位介绍下php在命令行中的使用方法. 1. 查看php的版本. ...
- Ubuntu链接ubuntu服务器
以前在windows下用ssh工具putty连接 linux服务器, 很简单,在linux下要连接linux的服务器, 找了下,果然putty在linux中也行1,sudo apt-get insta ...
- BZOJ 2004 Bus 公交线路(矩阵)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2004 题意:小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依 ...
- 信号量及PV原语
操作系统中进程互斥和同步的实现的一个最基本的方方是使用信号量和PV原语. 信号量S的物理意义:当S≥0的时候表示,某个资源可以使用的数量,当S<0的时候,其绝对值表示等待某个资源的进程数. 一般 ...