关于margin-top/bottom在non-Replaced inline元素上(如span)不起作用的解释
2010-06-02 16:12
375 查看
margin-top/bottom have no effect on non-replaced inline elements。(参见css2.1规范)
但是为什么就不支持呢?
本人觉得可以这样解释:
像这样一个结构
<span class=”a”>xxxxxxxxxxxxxxxx</span><span class=”b”>——————</span>
效果大概如下
xxxxxxxxxxxxxxx————-
假如inline元素支持margin-top,而margin-top的参照基准是前一个元素(当然,考虑复杂情况的话,这么说是不正确的,比如
前一元素是脱离文档流的元素,或者根本没有前一元素而只有上级元素,等等)。那么给b相对a的设置一个margin-top值,这个效果会是怎么呢?
这样?
xxxxxxxxxxxxxxx
————-
还是这样?
xxxxxxxxxxxxxxx
————-
但不管是怎样,这都和inline元素的定义相悖。inline元素,从字面上就可以理解,他是在(in)一行(line)上的!
这就是为什么inline元素当初设计的时候不让它支持margin-top/bottom。
同样他(非可置换inline元素)也不支持height(和width)。取而代之的是line-height,意思就是行高。因为inline
元素是一行行的,定一个height的话,那这到底是整段inline元素的高呢?还是inline元素一行的高呢?都说不过去啊!
所以统一都给每行定一
个高,这就是line-height了。
但是为什么就不支持呢?
本人觉得可以这样解释:
像这样一个结构
<span class=”a”>xxxxxxxxxxxxxxxx</span><span class=”b”>——————</span>
效果大概如下
xxxxxxxxxxxxxxx————-
假如inline元素支持margin-top,而margin-top的参照基准是前一个元素(当然,考虑复杂情况的话,这么说是不正确的,比如
前一元素是脱离文档流的元素,或者根本没有前一元素而只有上级元素,等等)。那么给b相对a的设置一个margin-top值,这个效果会是怎么呢?
这样?
xxxxxxxxxxxxxxx
————-
还是这样?
xxxxxxxxxxxxxxx
————-
但不管是怎样,这都和inline元素的定义相悖。inline元素,从字面上就可以理解,他是在(in)一行(line)上的!
这就是为什么inline元素当初设计的时候不让它支持margin-top/bottom。
同样他(非可置换inline元素)也不支持height(和width)。取而代之的是line-height,意思就是行高。因为inline
元素是一行行的,定一个height的话,那这到底是整段inline元素的高呢?还是inline元素一行的高呢?都说不过去啊!
所以统一都给每行定一
个高,这就是line-height了。
相关文章推荐
- 关于margin-top/bottom在non-Replaced inline元素上不起作用的解释
- 关于Android中android:marginBottom不起作用以及android:signleLine对文字的影响
- 对行内元素设置margin-top和margin-bottom是否起作用
- CSS:span元素margin-top无效的根源
- 关于margin-top溢出父节点元素的处理方法
- 子元素用margin-top 为什么反而作用在父元素上?对使用margin-top 的元素本身不起作用?
- 关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding
- 关于子元素的margin-top属性会传给父元素的问题
- 关于display:inline-block的元素不在同一水平线
- 关于内层DIV设置margin-top不起作用的解决方案
- 关于input元素 和display:inline-block 的元素不在一水平线上的一点发现
- Div嵌套引起子元素的margin-top不起作用
- 关于内层DIV设置margin-top不起作用的解决方案
- CSS:span元素margin-top无效的根源
- 关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding
- 关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3
- 关于子元素margin-top影响父元素位置问题
- 关于margin-top和margin-bottom的问题
- 为什么给行内块级元素inline-block添加margin-top为负值的时候不起作用?
- 关于子元素的margin-top属性会传给父元素的问题