开启辅助访问
帐号登录 |立即注册

对行内元素如span设置宽高,可以设置block或float

 
块元素。 特性:有物理属性,width,height写值起作用,而且要占据一行。
内联元素。 特性:没有物理属性。但是margin,padding值有用。不占据一行,后边可以有兄弟元素。
即是块又是内联,根据兄弟兄弟元素决定。
为什么是float之后才会有物理属性,这就是块与内联元素相互转化的问题。
块元素 -> 内联元素: display:inline;
内联元素 -> 块元素: display:block;

float就是隐性的把内联元素转化为块元素,这是对内部的特性就是有物理特性,但是他不占据一行。对外是内联元素的属性。他有个坏处就是会影响兄弟元素。相当于:display:inline-block;
那为什么不直接display:inline-block;因为这个玩艺在ie6下有几个px的bug。

平时经常给这样的行内元素设置浮动float:left or float:right,浮动了之后还可以给它们设置高度啊宽度啊。这点大家都知道,但是为什么呢?为什么行内元素在浮动之后就可以设置高宽了呢。 引用下曹刘阳写的《编写高质量代码-web前端开发修炼之道》一书中看到的一句话:
position:absolute和float会隐式地改变display类型,不论之前什么类型的元素(display:none除外),只要设置了position:absolute 、 float中任意一个,都会让元素以display:inline-block的方式显示:可以设置长宽,默认宽度并不占满父元素。一旦给元素加上absolute或float就相当于给元素加上了display:block;
这样似乎可以解释的通,元素都隐式地将display变为inline-block,但是ie6\7的css解析器并没有display:inline-block这个属性,只支持display:inline,这样就说不通了。 又想到了,float会触发haslayout,haslayout为true的情况下,元素可以控制自身的布局,但是haslayout是ie专有的,不管其它浏览器什么事情,这个想法应该也不成立。 和群友讨论了一下这个问题,他们平时也没去注意,经过一番激烈的“争论”,我们得出的结论是:行内标签在设置浮动后,会拥有块级元素的部分特性,比如可以设置高宽等,但它实质上还是行内元素,本质不会变。 最后,请教了林小志,翻了css文档,才发现:
当该属性不等于none引起对象浮动时,对象将被视作块对象(block-level),即display属性等于block。也就是说,浮动对象的display特性将被忽略。float在绝对定位和display为none时不会被应用。对应的脚本特性为stylefloat(ie)或cssfloat(非ie)。(注意这里为stylefloat或cssfloat,而不是float)

以上就是本文的全部内容,感谢大家支持!


回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

友情链接
  • 艾Q网

    提供设计文章,教程和分享聚合信息与导航工具,最新音乐,动漫,游戏资讯的网站。