浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响?、
float CSS属性指定一个元素应沿其容器的左侧或右侧放置,直到它的外边缘碰到包含框或者另一个浮动元素的框的边缘。允许文本和内联元素环绕它。该元素从网页的正常流动中移除,尽管仍然保持部分的流动性(与绝对定位相反)。
- 对父容器:由于float脱离了普通流,无法撑开父容器,会出现父容器高度塌陷问题。
- 对其他浮动元素:如果宽度足够会水平排列; 不足会下移靠左/右移动;直到它的外边缘碰到父容器边框或者另一个浮动元素的框的边缘。
- 普通元素:块级元素会当浮动元素不存在,但文本和内联元素时会‘感知’浮动元素,环绕浮动元素。
清除浮动指什么?如何清除浮动? 两种以上方法。
清除浮动是为解决因float导致的父容器高度坍塌、导致背景不能显示、边框不能撑开、margin padding设置值不能正确显示、影响后续元素位置等等问题。
-
clear: left;
要求该盒的top border边位于源文档中在此之前的元素形成的所有左浮动盒的bottom外边下方
clear: right;
要求该盒的top border边位于源文档中在此之前的元素形成的所有右浮动盒的bottom外边下方
clear属性只对自身有效,只能在自身元素中使用clear。 - 在父容器内添加一个空的块级元素来撑开父元素。(使用伪函数更为推荐)
- BFC(块级格式化上下文)“清理”浮动,对于嵌套元素,子元素浮动会对父容器产生影响,我们可以通过BFC这种方式,令父容器包含浮动子元素。实现BFC有多种方式,(参考MDN、参考W3)。但是使用这种方法也是有影响或者是局限性,例如使用display: inline-block,会缩短父容器长度。
有几种定位方式?分别是如何实现定位的?参考点是什么?使用场景是什么?
静态定位
position: static
默认的布局方式。参考点是文档流中的位置。相对定位
position: relative;
相对默认的布局位置进行定位,参考点为自己原先的位置。相对定位元素扔占有原先的位置。-
绝对定位
positon: absolute;
绝对定位元素脱离正常文档流,元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>
。
定位上下文 Positioning Context
定位上下文就是值绝对定位元素相对哪个元素定位,默认的定位上下文是 <html>。
ps:元素设置绝对定位后,行内元素可以有块级元素的特性,可以添加宽高。固定定位
position: fixed;
相对浏览器窗口进行定位。因此当滚动产生时,固定定位元素依然处于窗口的某个固定位置。生成绝对定位元素,相对于viewport进行定位。粘性定位
position: sticky
是相对定位和固定定位的结合。默认情况下表现为相对定位,当浏览器窗口顶端与元素的距离等于 top 属性的值时,转变为固定定位。
ps:由于兼容性,固定导航条一般用js来实现。
z-index 有什么作用? 如何使用?
z-index
属性指定了一个元素及其子元素的 z-order。 当元素之间重叠的时候,z-order 决定哪一个元素覆盖在其余元素的上方显示。 通常来说 z-index 较大的元素会覆盖较小的一个。
对于一个已经定位的元素(即position属性值是非static的元素),z-index
属性指定:
- 元素在当前堆叠上下文中的堆叠层级。
- 元素是否创建一个新的本地堆叠上下文。
需要注意的是一个元素值大,它的所有子元素都会在其它元素上方。