- 浏览: 672759 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
zhouyicang:
为嘛人气不够,这么好的文章,我找了几十篇博客,才找到这篇解惑了 ...
HTML 块级元素/内联元素 -
young7:
不错,解惑了
HTML 块级元素/内联元素 -
lvjin948:
获取浏览器语言的完美方案。http://blog.csdn.n ...
JavaScript获取浏览器语言类型 -
tarena_hhh:
我用了css优化工具,发现他的顺序有很大不一样?????
CSS属性书写顺序及命名规则 -
deng131:
谢谢你的提醒,是有个地方写错了
javascript事件绑定addEventListener,attachEvent
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;…}
以下用个例子来说明三者的区别和用法:
<style>div,span{background-color:green;margin:5px;border:1px solid #333;padding:5px;height:52px;color:#fff;}.b{display:block;}.i{display:inline;}div.ib{display:inline-block;}div.ib{display:inline;}a.ib{display:inline-block;}a.ib{display:block;}span.v{padding:0;margin:0;border:0;vertical-align:middle;height:100%}</style><div>div display:block</div><div class=”i”>div display:inline</div><div class=”ib”>div display:inline-block</div><span>span display:inline</span><span class=”b”>span display:block</span><span><a class=”ib”>a display:block</a></span><br /><div><span class=”v”></span>vertical-align:middle</div>
[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]
参考:
Blank:display:inline-block的深入理解
首先先对行内元素(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的深入理解
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;…}
以下用个例子来说明三者的区别和用法:
<style>div,span{background-color:green;margin:5px;border:1px solid #333;padding:5px;height:52px;color:#fff;}.b{display:block;}.i{display:inline;}div.ib{display:inline-block;}div.ib{display:inline;}a.ib{display:inline-block;}a.ib{display:block;}span.v{padding:0;margin:0;border:0;vertical-align:middle;height:100%}</style><div>div display:block</div><div class=”i”>div display:inline</div><div class=”ib”>div display:inline-block</div><span>span display:inline</span><span class=”b”>span display:block</span><span><a class=”ib”>a display:block</a></span><br /><div><span class=”v”></span>vertical-align:middle</div>
[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]
参考:
Blank:display:inline-block的深入理解
首先先对行内元素(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的深入理解
发表评论
-
IE浏览器stylesheets加载资源限制问题
2015-03-08 20:30 1067@import url()做一下总结: 1:@import ... -
理解Javascript原型及继承
2012-08-15 22:13 1345js初次使用起来觉得很简单但是在使用一段时间后很不深入的理解原 ... -
JS判断IE浏览器支持版本
2012-02-01 19:00 2965/* * @description 判断是否是IE,返回具体 ... -
jsonp动态创建script方式IE9问题
2012-02-01 16:28 2379在IE9浏览器创建一个script元素,然后指定其src属性u ... -
IE9下使用jsonp方式调用问题
2012-01-31 19:03 22891. 如果JSONP返回的Content-Type不符合规范, ... -
JavaScript获取浏览器语言类型
2011-12-31 18:24 7804获取浏览器语言: IE: navigator.browser ... -
IE Security Comprehensive Protection
2011-12-19 20:14 1762IE浏览器安全方面的处理,本人英文不好建议大家直接看英文: ... -
javaScript 中比较数字字符串问题
2011-10-10 21:49 4672在实现前端页面排序功能过程中遇到的问题,由于自己的粗心导致了生 ... -
javascript设置label标签 for属性
2011-09-11 10:36 3605js创建label标签的for属性用来增加操作响应区域。 v ... -
javascript事件绑定addEventListener,attachEvent
2011-07-31 18:55 3518为了考虑浏览器的兼容性问题,都需要对浏览器进行类型检测。 f ... -
readyState五种状态详解
2011-07-24 14:15 1608(0) UNINITIALIZED 未初始化 The obje ... -
getElementByTagName 与 querySelectorAll
2011-07-14 11:29 1478虽然网上有中文翻译但是还是直接看英文有感觉。getElemen ... -
拖放 Drag and drop 方法
2011-07-10 18:55 1524虽然网上又很多实现方法,但是还是需要理解拖放原理。通过绑定on ... -
闭包传入参数 window & undefined
2011-07-03 08:53 2301大家在前端开发中对闭包应该和熟悉了,也就是几种常见的闭包方式: ... -
textarea光标位置插入文字
2011-06-18 18:14 2126各浏览器TextArea获得焦点后的光标位置情况: text ... -
IE6上Array不支持indexOf方法
2011-06-06 10:17 2250在IE6不支持Array上indexOf方法,又是可恶的ie, ... -
处理不支持JavaScript脚本情况
2011-05-26 10:24 1337现在主流的浏览器都支持javascrip, 但还是有小部分不支 ... -
动态创建iframe设置属性name问题
2011-04-20 13:54 2727通常iframe的name可以是link或者form的targ ... -
WebSocket and Socket.IO
2011-04-06 15:39 3462WebSocket API是下一代客户端-服务器的异步通信方法 ... -
Preload CSS/JavaScript预加载
2011-04-06 10:20 1468希望达到效果是页面第一次载入以后,如果在次刷新页或者进入下一个 ...
相关推荐
在这个详解中,我们将深入讨论`display`属性中的`inline`、`block`以及`inline-block`值,以及它们在实际布局中的应用。 1. **`display: inline`** `inline`值使得元素作为行内元素显示,这意味着元素会与其他...
#### 二、display:inline-block详解 `display:inline-block`是一个非常有用的值,它结合了`inline`和`block`两种元素的特点: - **像块级元素一样**:元素会独占一行空间,可以设置宽度和高度。 - **像内联元素一样...
【CSS属性`display:flow-root`详解】 在CSS布局中,`display:flow-root`是一个相对新的属性声明,它的引入为网页设计者提供了更精细的布局控制能力。这个属性最初可能由于兼容性问题而不被广泛使用,但随着浏览器对...
子元素`.box1`通过`display: inline-block`变为行内块元素,然后结合`text-align: center`使其在父元素中水平居中。 最后,我们讨论一种特殊情况:让导航中的文字靠底部对齐。这可以通过使用`vertical-align: ...
最近做移动端页面时,经常会用到inline-block元素来布局,但无可避免都会遇到一个问题,就是inline-block元素之间的间隙。这些间隙会导致一些布局上的问题,需要把间隙去掉。对于inline-block元素及去掉间隙的方法,...
在标题“详解css中inline-block的最小宽度值”中,主要探讨的是当设置`width`为0时,行内块元素仍然会有一定的最小宽度,这个宽度是由元素内的内容决定的。 在描述中提到,《css世界》这本书提到了这样一个现象:...
### Display Inline 的应用详解 在前端开发中,我们经常需要对网页布局进行调整,而`display`属性就是其中非常重要的一项工具。本篇文章将详细介绍如何利用`display inline`这一特性来改变元素的显示方式,使原本...
- **`display:inline-block`不支持**:IE6-7不支持`display:inline-block`,可使用`zoom:1`和`display:inline`来模拟。 - **图片默认间距**:IE浏览器中图片之间有默认间距,可以设置`img{display:block;}`来消除...
- IE6和IE7存在一个经典的bug,即如果先定义了 `display: inline-block;`,再设置为 `display: inline;` 或 `display: block;`,布局可能会失效。 - 示例代码片段未完全给出,但按照上述逻辑,可以通过特定的CSS声明...
1. **块级元素与行内元素的转换**:通过设置`display`属性为`block`或`inline`来转换元素的行为。 2. **控制块级元素排在同一行**:使用`display: inline-block`可以让多个块级元素在同一行显示,而不会独占一行。 3...
display: inline-flex; background-color: gray; } <!-- Flex 容器 --> <!-- Flex 容器中的子Item --> <div class="flex__item"></div> <div class="flex__item"></div> <div class="flex__item"></...
复制代码代码如下: display:inline; list-style:none outside none; white-space:nowrap 首先看下 list-style 的用法: 我以前只用到 list-style:none; 这种方式,原以为也只这种方式呢,这个方式只
首先,所有主流浏览器都支持 display 属性。...那么,display:inline、display:block和display:inline-block有什么区别呢? 复制代码代码如下:<style>.inline{display:inline; width:100px; height:100px;
同时,通过`display: inline-block`让圆点水平排列。例如: ```css .dot { width: 10px; height: 10px; border-radius: 50%; background-color: #333; display: inline-block; } ``` ### 4. 动画应用与延迟 ...
4. `display`属性可以转换元素的类型,例如将块元素变为行内元素使用`display:inline`,反之则使用`display:block`。 5. `background-image`属性用于将图像设置为网页元素的背景。 二、概念辨析 1. 行内元素可以...
如果想要让多个`<div>`元素在同一行中居中对齐,可以将它们的`display`设置为`inline-block`,并设置`vertical-align`为`middle`。需要注意的是,当使用`vertical-align: middle`时,通常还需要配合`line-height`...
`或`display: inline-block;`),则在恢复其原始块级显示状态时,就需要使用`display: block;`。 `display: block;`还有其他用途,例如在创建自定义布局时,它可以用来使原本是内联元素的标签(如`<img>`、`...
在元素上设置该属性,可使其子代排列在同一水平上,类似display:inline-block;。 二、可在其子代设置如下属性 前提:使用如下属性,必须在父代设置display:box; 1.box-flex:number; 1)占父级元素宽度的...
display: inline-block; background-color: #0EA9FF; border-width: 5px; border-style: solid; border-color: #5daf34; transition-property: width, height, background-color, border-width; transition-...