display:inline-block的深入理解

在使用CSS实现表现的时候,会经常接触到display:inline-block这一属性,无论是初接触Web标准还是接触标准已久的朋友,大都会对这一属性感觉很迷惑和模糊。

display:inline-block

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

但对于这个属性不是所有浏览器都识别。

支持的浏览器有:Opera、Safari

但很遗憾,最流行的IE和Firefox却不支持这个属性(据说下一版本的Firefox将会支持display:inline-block)。不过Firefox下却有私有属性-moz-inline-box和inline-block形似,为什么是“形似”而不是“神似”呢?这是因为使用-moz-inline-box会带来很多意想不到的后遗症,比如使用这一属性后,text-align有时候就会有问题,还得改用Firefox的私有属性-moz-box-align来解决(谢谢aoao提供案例)。

建议:最好不要使用Firefox私有属性-moz-inline-box。

或许有朋友会对上面所说的IE也不支持display:inline-block属性,表示疑问或者反对。说:“我在IE中对a或者span等内联元素使用display:inline-block一直是有效的”。

其实不然,在IE中对内联元素使用display:inline-block,IE是不识别的,但使用display:inline-block在IE下会触发layout(如果你对layout感觉到陌生,可以参看old9翻译的《On having 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;...}

转载于:https://www.cnblogs.com/zixing/archive/2011/09/14/2176765.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu下安装nfs服务

From: http://blog.csdn.net/shawnrong/article/details/1656668 1. sudo apt-get install nfs-kernel-server 会自动安装nfs-common和portmap 2. 配置portmap: 2.1. 编辑/etc/default/portmap, 将 -i 127.0.0.1 去掉. 2.2. 配置/etc/hosts.deny,禁止任何…

业务逻辑 : forex mlm

业务逻辑 公司通过mlm的制度和顾客进行签约来收取资金,再把资金给第三方公司进行投资,再把所投资的回报给分配给公司和顾客。 公司的资金来自投资者,公司的营销策略来自mlm的制度,由市场人员来创建mlm。 投资者可以投资不同的配…

STMF4x 固件库V1.25.0

https://www.st.com/en/embedded-software/stm32cubef4.html

[react] 写出React动态改变class切换组件样式

[react] 写出React动态改变class切换组件样式 export default memo(function Demo(){const [clsName,setClsName] useState("active")const handleClick () > {setClsName(clsName "active"?"unactive":"active")}return (<…

初读CLR Via C# 之 IL、CTS、CLS

本章将对CLR中的IL、CTS和CLS进行一个大概的总结。下章将开始第二章的内容。 IL我们称之为高级汇编语言或者中间语言&#xff0c;在我们编写基于.NET框架下的程序&#xff08;不论是C#、VB或者J#等&#xff09;在被编译成本地CPU指令前&#xff0c;都将被编译成IL语言&#xff…

Ubuntu安装Samba实现跟windows文件共享

From: http://js8.in/526.html 为了开发项目的方便&#xff0c;要实现Ubuntu跟windows文件共享&#xff0c;需要在Ubuntu下搭建samba服务器&#xff0c;下面来说说Ubuntu下安装、配置Samba的详细步骤~ Ubuntu下安装Samba 可以使用新立得来搜索Samba安装~没有请更新软件源&…

POJ1182--带权并查集

带权并查集就是除了维护一个fa数组以外&#xff0c;维护一个rank数组&#xff0c;有两层含义&#xff0c;一个是路径压缩时边的权值&#xff0c;&#xff0c;再一个是当前点与根节点的相对关系。这个题很明显考察的是 根节点与当前节点的一种相对关系&#xff0c;让rank【x】 …

Qt MQTT使用

一、创建对象并绑定信号槽 m_client new QMqttClient(this); connect(m_client, &QMqttClient::stateChanged, this, &MainWindow::updateLogStateChange); connect(m_client, &QMqttClient::disconnected, this, &MainWindow::brokerDisconnected); connect…

20231222给NanoPC-T4(RK3399)开发板的适配Android11的挖掘机方案并跑通AP6398SV

20231222给NanoPC-T4(RK3399)开发板的适配Android11的挖掘机方案并跑通AP6398SV 2023/12/22 7:54 简略步骤&#xff1a;rootrootrootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2 rootrootrootroot-X99-Turbo:~/3TB$ tar jxvf Android11.0.tar.…

Web服务器捉虫速记

一服务器疑似被挂马&#xff0c;现象是从百度搜该站点&#xff0c;出来的结果大部分为色情网站。 马上登录服务器&#xff08;半夜好困啊&#xff09;。执行如下的步骤&#xff1a;<!--[if !supportLists]-->1、 <!--[endif]-->检查系统帐号&#xff0c;看有没有异…

KEIL5 编译器导致的程序异常

STM32F407写程序过程中发现了一个KEIL5 ARM编译器导致的BUG&#xff0c;记录如下。 源代码比较简单&#xff0c;分别打印两个标志量的值&#xff0c;采用了volatile 声明&#xff0c;避免被优化。 代码功能不用多说&#xff0c;看一下输出结果&#xff1a; 两个标志量都被编译…

C++笔记(1)explicit构造函数

From: http://www.cnblogs.com/cutepig/archive/2009/01/14/1375917.html 按照默认规定&#xff0c;只有一个参数的构造函数也定义了一个隐式转换&#xff0c;将该构造函数对应数据类型的数据转换为该类对象&#xff0c;如下面所示&#xff1a;class String {String ( const …

高级软件工程课程第一次作业的小结

成果&#xff1a; 1&#xff09;各位同学按要求建立了自己博客&#xff0c;完善并反馈的相关信息 2&#xff09;对各自本科设计进行了分析&#xff0c;有的同学也写得比较详细&#xff0c;如曾秀、李文华、吴文兵等 存在的问题&#xff1a; 1&#xff09;对软件工程的认识较基础…

Windows中添加svnserve作为系统服务

安装subversion后&#xff0c;其安装目录中有svnserve程序。 采用windows系统的sc命令将其添加为自动启动的系统服务&#xff1a; sc create MySVNServer binpath "D:\Program Files\Subversion\bin\svnserve.exe --service -r G:\Repositories" displayname "S…

[react] 在React中如何引入图片?哪种方式更好?

[react] 在React中如何引入图片&#xff1f;哪种方式更好&#xff1f; 第一种导入&#xff1a; import Img from "./images/1.png" 第二种直接获取图片&#xff1a; <img src{require("./images/1.png")} alt""/> 个人简介 我是歌谣&a…

STM32F407控制AD7606 采用HAL库的TIM和SPI

前言 本文介绍基于STM32F407的AD7606 8通道同步采集控制方式&#xff0c;总体思路&#xff1a;PWM驱动AD7606完成模数转换&#xff0c;AD7606转换完成后其BUSY引脚给出下降沿&#xff0c;STM32捕获外部中断并在中断服务程序中调用SPI串口读取AD7606数据&#xff0c;工程采用cu…

(转)二分图最大匹配的König定理及其证明

出处:http://www.matrix67.com/blog/archives/116 二分图最大匹配的Knig定理及其证明 如果你看不清楚第二个字母&#xff0c;下面有一个大号字体版本&#xff1a;二分图最大匹配的Knig定理及其证明 本文将是这一系列里最短的一篇&#xff0c;因为我只打算把Knig定理证了&…

如何使用struts2对集合参数进行验证

上一节介绍了struts2可以支持批量表单参数提交&#xff0c;那么提交到后台时如何利用strust2的validation框架对这个集合做验证&#xff1f; struts2提供了一个vistor校验器&#xff0c;可以实现这个需求 还是采用上一节中批量添加书籍的例子 1.jsp文件 <% taglib prefix&qu…

关于__attribute__ ((packed))

#include <iostream>using namespace std;typedef struct {unsigned char ver;unsigned char cmd;unsigned short id;unsigned short retcode; }__attribute__ ((packed)) ACKPACK_CMD;struct my {char ch; int a; }__attribute__ ((packed)); // 取消结构在编译过程中…