display:inline-block间隙问题
display:inline-block 是让块级元素变成行内元素 在一行显示,
然而不幸的是,它并没有得到所有浏览器的支持,比如ie6、7和古老一点的firefox完全无视它,由于firefox的老版本几乎已经从市场中消失,所以名义上firefox是支持display:inline-block的,除此之外,伟大的chrome、Opera、Safari都能很好地支持。尽管如此,依然还是可以通过hack的手段让ie6、7两位难兄难弟变得温顺,
看段代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.box{ width: 500px; background: #cacaca; margin: 10px auto;}
.box ul{
width: 100%;
margin: 0;
padding: 0;
list-style: none;
}
.box ul li{
width: 16.6%;
display: inline-block;
*display:inline;
*zoom:1;
text-align: center;
background: #cf2d28;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div class="box">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
</body>
</html>
很简单 想也能想到出现什么布局,需要解释的是,display:inline-block在IE下仅仅是触发了layout,而它本是行布局,触发后,块元素依然还是行布局。所以需让块元素呈递为内联对象,display:inline则起到了这一作用(*号只被ie6、7所识别),然后再通过zoom:1触发layout。即可实现所谓的inline-block。看下和我们想的是不是一样,
纳尼,按照想的应该全部紧密的排在一行啊,为什么会用空隙;
答案就是:块级元素允许空格出现,换行符在这里包含了换行在内的空格符。
解决方法:1、让代码写在一起,2,在父级元素添加 font-size:0; 然而设置为0后子元素大小都没了,需要在子元素再重新设置字体大小font-size:12px;
<style type="text/css">
.box{ width: 500px; background: #cacaca; margin: 10px auto;}
.box ul{
width: 100%;
margin: 0;
padding: 0;
list-style: none;
font-size: 0;
}
.box ul li{
width: 16.6%;
display: inline-block;
*display:inline;
*zoom:1;
text-align: center;
background: #cf2d28;
margin: 0;
padding: 0;
font-size: 12px;
}
</style>
看下效果
perfect,即使右边有一点没有占全,也是在预算之内,因为100/6=26.6666.... 我们只取26.6%,故会有点空隙。
好的这样做在ie 谷歌 ff等浏览器是没问题了 可是在safari中间隙还是存在,为解决此问题 使用letter-spacing:-Npx 来兼容safari
<style type="text/css">
.box{ width: 500px; background: #cacaca; margin: 10px auto;}
.box ul{
width: 100%;
margin: 0;
padding: 0;
list-style: none;
font-size: 0;
letter-spacing: -4px;/*根据不同字号做不同调整*/
word-spacing: -4px;
}
.box ul li{
width: 16.6%;
display: inline-block;
*display:inline;
*zoom:1;
text-align: center;
background: #cf2d28;
margin: 0;
padding: 0;
font-size: 14px;
letter-spacing:normal;
word-spacing:normal;
}
</style>
OK,更多解决方案 请参考文档
display:inline-block间隙问题的更多相关文章
- display:inline block inline-block 的区别
原文地址:http://blog.csdn.net/jly036/article/details/5506182 display:block就是将元素显示为块级元素. block元素的特点是: 总是在 ...
- display:inline、block、inline-block的区别
display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度不设是它的容器的100%,除非设定一个宽度 <div& ...
- display:inline; display:block;
block(块级元素): div .from. p .table. pre.h1~h6. dl .ol .ul等 inline(内联元素): span.a.strong.em.label.input. ...
- display:block、display:inline与displayinline:block的概念和区别
总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...
- display:inline 和display:inline-block和display:block的区别
之前讲过块级元素使用display:block 行内元素使用display:inline 那么今天我们就来区分一下display:inline,display:inline-block和display ...
- 理解display:inline、block、inline-block
要理解display:inline.block.inline-block的区别,需要先了解HTML中的块级(block)元素和行级(inline)元素的特点,行内元素也叫内联元素. 块级元素 总是另起 ...
- display:inline 跟 display:block 跟 display:inline-block区别
我来说句人话吧.display:inline; 内联元素,简单来说就是在同一行显示.display:block; 块级元素,简单来说就是就是有换行,会换到第二行.display:inline-bloc ...
- HTML5 display:inline、block、inline-block的区别--备用
display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...
- display:inline、block、inline-block的区别(转)
display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...
- display:inline,display:inline-block,display:block 区别
之前一直迷惑于display:inline/inline-block/block的异同,在度娘谷哥的帮助下,突然有了一点思路. 按照网上的介绍,inline将对象转化为内联元素,block将对象转化为 ...
随机推荐
- Cocoapods 应用第一部分 - Xcode 创建 .framework 相关
问题的提出: 随着项目的越来越大,可能会出现好几个团队共同维护一个项目的情况,例如:项目组A负责其中的A块,项目组B负责其中的B块.....这几块彼此之间既独立,也相互联系.对于这种情况,可以采用约定 ...
- swift UITextField光标聚焦以及光标颜色修改
光标聚焦闪烁: nick_textField.becomeFirstResponder() 光标颜色修改 nick_textField.tintColor = UIColor.red 备份:http: ...
- NYOJ 128 前缀表达式的计算
前缀式计算 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上括 ...
- LinkStack
//Node.h template<typename ElemType> struct Node { ElemType data; Node<ElemType> *next; ...
- let const 下篇
1.不存在变量提升 在之前的js代码中,声明一个变量或者是函数,会存在变量提升的现象,也就是说变量可以在声明之前使用,值为undefined: es5: console.log(a); //undef ...
- shell 编程之 for while until 循环
shell 的for循环 的格式如下: for 变量 in 列表 do ... done 列表是一组值的序列 每个值通过空格隔开 每循环一次,列表中的下一个值赋给变量 in 列表是可选的,如果不用他 ...
- 【MySQL源码】源码安装和启动mysql
--[MySQL源码]源码安装和启动mysql --------------------------------------2014/08/19 本机环境:ubuntu12.04,fedora-17 ...
- 阅读:RAID5和RAID10,哪种RAID更适合你
阅读:RAID5和RAID10,哪种RAID更适合你-------------------------------------------2013/10/06 存储是目前IT产业发展的一大热点,而RA ...
- C# 调用C++ 结构体示例
C++ 定义 typedef struct Stu{public: int Age; char Name[20];}; typedef struct Num { int N1; int N2; }; ...
- Oracle用户操作
1.超级管理员的身份登录oracle:sqlplus / as sysdba 2.显示当前连接用户SQL> show user 3.新建用户并授权SQL> create user a ...