首先先对行内元素(inline elements,比如span,a,b等。)和块元素(block elements,比如div,h1,p等)进行一下知识回顾.简而言之,它们的区别可以分为下几点

  1. 块元素会自动在末尾加一个换行,而行内元素不会。
  2. 块元素可以定义自身的高度(width)和宽度(height),而行内元素不可以。
  3. 块对象定义的自身垂直边距可以改变行高,而行内元素虽然可以定义但改变不了行高。

在前端开发中,我们遵循结构,表现,行为相分离。所以将修饰型图片利用css的background把它写在表现层中。那最常见的就是icon的应用。如:

去我的flickr相册。这是利用行内元素的左侧内间距(padding-left)实现的icon+文字的组合。

但有时候,我们还需要另外一种表现形式,只是单独的icon而不需要文字或者链接,并且是图文混排。也许你想只要把span里面的文字删除不就可以了么,实际上并非如你所愿。

。如果你现在在ie下,肯定什么也看不到。

原因是行内元素在内容为空的情况下,ie认为它的width为0。

 ,现在在ie下可以看到了。

根据行内元素的特性,并不能为其设置一个宽度来解决,所以只能在里面加一个毫无意义的空格用来占位,来生成一个高度值,但在无css的条件下(在spider的眼里),无法得知它为何物。如下:

<a class="icon-flickr"> </a>

所以这样的解决方案让人无法接受。

使用inline-block就可以解决这个问题

通过将外包元素设置为inline-block,利用有inline的行级特性和block的指定高度和宽度的特性。再通过将内嵌标签中的解释文字隐藏来实现该效果。

你会在这里看到两个并排的icon,它们是“~这里飘过无尽的解释性文字啊!~~这里飘过无尽的解释性文字啊!~”,flick的icon,它和文字在一起。

代码如下:

.icon{
display:inline-block;
/* ie8,firefox3,safari,opera */
display:-moz-inline-stack;
/* firefox2,-moz-inline-box其实也可以,但在某些情况下会有些异常-_-b */
*display:inline;
zoom:1;
/*
ie6,7,在ie中,如果该class应用在行内元素中的时候,
display:inline-block 会触发layout.
从而使该元素拥有inline-block的特性,但为了考虑到通用性,
使其能在块元素中应用,所以使用zoom:1来触发layout
*/
width:20px;
height:20px;
vertical-align:middle; /* 这个用来对opera的hack,使其垂直居中 */
overflow:hidden; /* 针对ie,防止内容溺出,造成的高度及宽度改变 */
background:url("http://l.yimg.com/a/i/ww/sp/trough_1.8.gif") -400px -680px;
}
.icon i{
visibility:hidden; /* 将解释性文字隐藏 */
}
<a href="#" class="icon"><i>~这里飘过无尽的解释性文字啊!~</i></a>

在最后,还要多说几句-moz-inline-stack,在firefox2中它还存在一下小bug.当它所应用的外包装器(wrapper)的display为inline的时候,它所包含的a或button将无法点击或者无法选取。我们需要通过position:relative来hack掉这个bug。Sigh~。

  • 在firefox2里面我终于可点了
  • 我也是a可为什么我却不能点??—_—|||

关于inline-block的详细分析可以参考学鹍的CSS{display:inline-block}或者圆心的display:inline-block的深入理解

相关阅读:
Cross Browser Support for inline-block Styling
display:inline-block的应用两例
Inline formatting context
www.hedgerwow.com

inline-block从入门到精通相关推荐

  1. CUDA从入门到精通(四):加深对设备的认识

    CUDA从入门到精通(四):加深对设备的认识 2013-07-23 13:17 4211人阅读 评论(2) 收藏 举报  分类: GPU(29)  版权声明:本文为卜居原创文章,未经博主允许不得转载. ...

  2. 《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...

    目录 一.Autosar入门篇: 1.1 DBC专题(共9篇) 1.2 ARXML专题(共35篇) 1.2.1 CAN Matrix Arxml(共28篇) 1.2.2 ASWC Arxml(共7篇) ...

  3. 2020-10-21CUDA从入门到精通

    CUDA从入门到精通(零):写在前面 在老板的要求下,本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中,使处理程序加速超过1K,可见基于图形显示器的并行计算对于追 ...

  4. 编程大讲坛、坛坛是佳酿--编程大讲坛:C#核心开发技术从入门到精通

    [书名]编程大讲坛:C#核心开发技术从入门到精通 [作者]管西京 [ISBN] 978-7-121-09043-1 [出版社]电子工业出版社 [出版日期]2009年9月 [定  价]79.80元(含光 ...

  5. GPU 编程入门到精通(五)之 GPU 程序优化进阶

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GP ...

  6. GPU 编程入门到精通(四)之 GPU 程序优化

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GP ...

  7. GPU 编程入门到精通(三)之 第一个 GPU 程序

    博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程.有志同道合的小伙伴 ...

  8. python写cadance skill_《Cadence 16.6电路设计与仿真从入门到精通》——2.4 Design Entry CIS原理图图形界面...

    本节书摘来自异步社区<Cadence 16.6电路设计与仿真从入门到精通>一书中的第2章,第2.4节,作者: 王超 , 胡仁喜等 更多章节内容可以访问云栖社区"异步社区" ...

  9. Kali Linux 从入门到精通(八)-主动信息收集

    Kali Linux 从入门到精通(八)-主动信息收集 基本介绍 直接与目标系统交互通信 无法避免留下访问的痕迹 使用受控的第三方电脑进行探测 使用代理或已经被控制的主机 做好被封杀的准本 使用噪声迷 ...

  10. 《Python入门到精通》Python基础语法

    「作者主页」:士别三日wyx   此文章已录入专栏<Python入门到精通>   2021最新版Python小白教程,针对0基础小白和基础薄弱的伙伴学习 Python基础语法 1. Hel ...

最新文章

  1. java某市出租车_智慧职教mooc的APPJavaEE企业级网站开发章节测验答案
  2. 斩获“卡脖子”领域世界冠军!这支华科战队全网刷屏,平均年龄24岁
  3. 杀毒软件引起的WinCE编译出错问题
  4. 【Linux】一步一步学Linux——sort命令(53)
  5. excel loc() python_总结:像Excel一样使用python进行数据分析
  6. alert获取输入框内容_获取由 AlertDialog 生成的对话框中EditText的文本内容
  7. 浅谈android4.0开发之GridLayout布局
  8. python利用什么写模板_利用python自动生成verilog模块例化模板
  9. 2021年,某云盘最新版不限速下载工具教程,亲测有效!
  10. 【科普视频】信号在时域和频域上的区别
  11. selenium 获取最新页面源代码_Selenium获取网页源码
  12. 阳台做成榻榻米 阳台做成书房
  13. cad指示箭头快捷键命令_CAD箭头引注快捷键是什么?
  14. cad怎么将图层后置_CAD图层遮挡,如何将CAD图形进行前置或者后置?
  15. HTML图片不能上下铺满屏幕_这应该是最最最简单的,职场PPT图片排版方法了!...
  16. 【找出耗电大户进行消灭 电池持久有绝招】
  17. ERP中的MPS与APS间的关系
  18. 学习模式上的记录之统计篇三 置换检验 Permutation Test
  19. word2013删除下载的模板
  20. 怎么利用git管理/备份文件

热门文章

  1. 【语音处理】基于matlab GUI声音信号频谱分析仪【含Matlab源码 325期】
  2. 如何将java项目部署到Linux服务器上
  3. java将一个字符串数组复制到一个字符串_C语言 | 将元音字母复制到另一个字符串中...
  4. Web服务器用户权限设置,Windows系统下WEB服务器权限的设置详解(四)
  5. python怎么提取百度首页链接_python如何获取百度搜索结果的真实URL
  6. linux hdfs授予文件夹权限,修修改hdfs上的文件所属用户、所属组等读写执行控制权限...
  7. c51语言中 位取反指令,C51的几种位操作运算说明
  8. matlab 隶属度计算,基于MATLAB实现的云模型计算隶属度
  9. angular2-swiper的使用
  10. Spring Cloud 与 Dubbo 对比整理(2)