display:block就是将元素显示为块级元素.

block元素的特点是:
总是在新行上开始;
高度,行高以及顶和底边距都可控制;
宽度缺省是它的容器的100%,除非设定一个宽度
<div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子。

display:inline就是将元素显示为行内元素.

inline元素的特点是:
和其他元素都在一行上;
高,行高及顶和底边距不可改变;
宽度就是它的文字或图片的宽度,不可改变。
<span>, <a>, <label>, <input>, <img>, <strong> 和<em>是inline元素的例子。

inline和block可以控制一个元素的行宽高等特性,需要切换的情况如下:

让一个inline元素从新行开始;
让块元素和其他元素保持在一行上;
控制inline元素的宽度(对导航条特别有用);
控制inline元素的高度;
无须设定宽度即可为一个块元素设定与文字同宽的背景色。

display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。

inline-block的元素特点:

将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。(准确地说,应用此特性的元素呈现为内联对象,周围元素保持在同一行,但可以设置宽度和高度地块元素的属性)

并不是所有浏览器都支持此属性,目前支持的浏览器有:Opera、Safari在IE中对内联元素使用display:inline-block,IE是不识别的,但使用display:inline-block在IE下会触发layout,从而使内联元素拥有了display:inline-block属性的表症。从上面的这个分析,也不难理解为什么IE下,对块元素设置display:inline-block属性无法实现inline-block的效果。这时块元素仅仅是被display:inline-block触发了layout,而它本就是行布局,所以触发后,块元素依然还是行布局,而不会如Opera中块元素呈递为内联对象。

IE下块元素如何实现display:inline-block的效果?

有两种方法:
1、先使用display:inline-block属性触发块元素,然后再定义display:inline,让块元素呈递为内联对象(两个display要先后放在两个CSS声明中才有效果,这是IE的一个经典bug,如果先定义了display:inline-block,然后再将display设回inline或block,layout不会消失)。代码如下(...为省略的其他属性内容):

div {display:inline-block;...}
div {display:inline;}

2、直接让块元素设置为内联对象呈递(设置属性display:inline),然后触发块元素的layout(如:zoom:1等)。代码如下:

div {display:inline; zoom:1;...}

http://www.cnblogs.com/trendline/articles/1500716.html

转载于:https://www.cnblogs.com/hushuan/archive/2009/09/16/1567724.html

详解display:inline | block |inline-block的区别(转)相关推荐

  1. [CSS]详解display:inline | block |inline-block的区别

    2019独角兽企业重金招聘Python工程师标准>>> [CSS]详解display:inline | block |inline-block的区别[点评网站][发布新闻][申请专栏 ...

  2. Java implement意思_详解JAVA中implement和extends的区别

    详解JAVA中implement和extends的区别 发布于 2020-4-14| 复制链接 摘记: 详解JAVA中implement和extends的区别extends是继承父类,只要那个类不是声 ...

  3. java中implement_详解JAVA中implement和extends的区别

    详解JAVA中implement和extends的区别 extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,Java中不支持多重继承,但是可以用接口来实 ...

  4. vlan标签详解 access、trunk和hybrid的区别

    vlan标签详解 access.trunk和hybrid的区别 我们知道,不同网段间需要通过路由转发才能通信: 那在同一网段不同vlan之间的PC,是不能互相通信的.其实这并不是绝对的.了解vlan的 ...

  5. c语言中的fscanf是啥意思,详解C语言中fgets和fscanf区别

    fscanf函数是C语言的文件格式读取函数的方法之一,它使用空格.制表符和回车来分割不同的单词,这样可以让我们使用起来更方便,下面就让爱站技术频道小编带你来学习详解C语言中fgets和fscanf区别 ...

  6. 详解Javascript本地存储的方式、区别及应用场景

    详解Javascript本地存储的方式.区别及应用场景 一.方式 javaScript本地缓存的方法我们主要讲述以下四种: cookie sessionStorage localStorage ind ...

  7. 详解python正则\b和\B的区别

    不知道你会不会出现这种错误, print(re.findall('er\b','never')) 输出结果却为空? 如果你出现这种问题,说明你没有转义,试着输入以下语句 print(re.findal ...

  8. 代理模式详解(静态代理和动态代理的区别以及联系)

    原文链接:https://www.cnblogs.com/takumicx/p/9285230.html 1. 前言 代理模式可以说是生活中处处可见.比如说在携程上定火车票,携程在这里就起到了一个代理 ...

  9. 详解http和https的作用与区别

    PS: https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密.防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名.另外是加密,加密需要一个密钥交换算法, ...

  10. IP协议详解及IPv4与IPv6协议的区别

    IP协议是在TCP/IP协议模型中的重要组成部分,目前我们使用最多的是IPv4协议,IPv6协议的用户量也在慢慢增加,苹果在几年之前就已经开始支持IPv6协议了.我们先来了解一下IPv4和IPv6协议 ...

最新文章

  1. python检测英文拼写错误
  2. 【vijos】P1448 校门外的树
  3. 不用光驱软驱与U盘,看我如何在IBM X3500 M2服务器上用PE安装Win2K3
  4. Spring Boot导出jar包发布
  5. [git]git相关
  6. mac mysql 初始密码_mac下mysql安装后修改默认密码
  7. 前端javascript经典面试题集合(2020年最新)
  8. java int ==_Java 位运算符和 int 类型的实现
  9. Vue使用Axios Ajax封装渲染页面
  10. 管理与决策这属于计算机在什么方面的应用,闽高校计算机一级考试选择题题库...
  11. net安装包的制作[包括卸载模块](图解)
  12. ACM PKU 1251 Jungle Roads http://poj.org/problem?id=1251
  13. Ubuntu锐捷校园网连接不上问题,认证成功但是上不去网。
  14. 一阶惯性加纯滞后模型matlab代码,一种镇定一阶惯性加纯滞后系统的线性自抗扰控制器设计方法与流程...
  15. 第一章 简介和古典密码(粗略版) - 现代密码学导论 Introduction to Modern Cryptography
  16. 性能退化评估 matlab,LED驱动电源性能退化参数监测及寿命预测方法研究
  17. Unity与Android权限设置
  18. 2023中职网络安全竞赛Web安全应用任务解析答案
  19. 国税局计算机硬件,国家税务总局辽宁省税务局 工作动态 【盘税稽查】积极开展计算机兼容改造专项工作...
  20. linux+scrtopic.exe,!截图

热门文章

  1. VC 2010 Express下安装OpenCV2.4.4 遇到的问题
  2. Html5 video 标签中视频有声音没画面问题解决过程
  3. iOS底层探索之LLVM(二)——自定义Clang插件(上)
  4. 探讨专线与家用宽带的区别
  5. 我在试验Memcached,你的项目怎么处理缓存?
  6. 为什么Docker不能解决云上的所有问题
  7. CentOS 6.X配置 NFS以及启动和mount挂载
  8. 对象 复制构造函数
  9. Navicat for MySQL 64位官方中文版
  10. centos 6.5 搭建svn