我
'display'、'position'和'float'的相互关系?
难度:
首先我们判断
display
属性是否为none
,如果为none
,则position
和float
属性的值不影响元素最后的表现。然后判断
position
的值是否为absolute
或者fixed
,如果是,则float
属性失效,并且display
的值应该被设置为table
或者block
,具体转换需要看初始转换值。如果
position
的值不为absolute
或者fixed
,则判断float
属性的值是否为none
,如果不是,则display
的值则按上面的规则转换。注意,如果position
的值为relative
并且float
属性的值存在,则relative
相对于浮动后的最终位置定位。如果
float
的值为none
,则判断元素是否为根元素,如果是根元素则display
属性按照上面的规则转换,如果不是,则保持指定的display
属性值不变。
总的来说,可以把它看作是一个类似优先级的机制,position:absolute
和 position:fixed
优先级最高,有它存在的时候,浮动不起作用,display
的值也需要调整;其次,元素的float
特性的值不是"none"
的时候或者它是根元素的时候,调整display
的值;最后,非根元素,并且非浮动元素,并且非绝对定位的元素,display
特性值同设置值。