CSS进阶(八) float

float的本质就是为了实现文字环绕效果

特性

(1)包裹性,即父元素的宽度大于子元素的宽度,最终展现的效果为子元素的宽度

(2)块状化并格式化上下文。display变为block或table

(3)破坏文档流

(4)没有任何margin合并

text-align对块级元素是无效的

float实现一栏固定的多栏布局时,要巧妙的配合margin属性使用

clear属性的自身不能和前面的浮动元素相邻,clear:left和clear:right没有任何使用价值,直接使用clear:both

clear属性只有块级元素才是有效的,再借助伪元素清除浮动时,需要设置display属性

clear属性的本质是让自己不和float元素在一行显示,并不是真正意义上的清除浮动

BFC元素

(1)<html>根元素

(2)float的值部位none

(3)overflow为ayto,scroll,hidden

(4)display为table-cell,table-caption,inline-block

(5)position不为relative,static

BFC 的结界特性最重要的用途其实不是去 margin 重叠或者是清除 float 影响,而是实 现更健壮、更智能的自适应布局。

要想彻底清除浮动的影响,最适合的属性不是 clear 而是 overflow。

overflow 的剪裁或者滚动的边界是 border box 的内边缘,而非 padding box 的内边缘

在实际项目开发的时候,要尽量避免滚动容器设置 padding-bottom 值

overflow-x overflow-y

永远不可能实现一个方向溢出剪裁或滚动,另一方向内容溢出显示的效果。

滚动条

(1)PC端,无论什么浏览器,滚动条均来自<html>

(2)滚动条会占用元素的可用宽高

webkit下常用的滚动条设置属性

::-webkit-scrollbar 血槽宽度

::-webkit-scrollbar-thumb 拖动条

::-webkit-scrollbar-track 背景槽

锚点定位

实现方式

(1)使用a标签的name属性

(2)使用元素的id属性

<a href="#">返回顶部></a> 

触发方式

(1)URL地址中的锚链与锚点元素对应并有交互行为

(2)可focus的锚点元素处于focus状态 (浏览器内置的无障碍访问行为)

本质

锚点定位行为的发生,本质上是通过改变容器滚动高度或者宽度来实现的。

(1)锚点定位也可以发生在普通的容器元素上,而且定位行为的发生是由内而外的。由内而外指先触发容器的锚点定位,再触发外部容器的锚点定位,默认和浏览器上边缘对齐

(2)设置overflow:hidden的元素也是可以滚动的。滚 动依然存在,仅仅滚动条不存在

 实现滚动条应用scrollTop

(1)实现简单,无须做边界判断

(2)可与原生的 scroll 事件天然集成,无缝对接

(3)无须改变子元素的结构。

缺点

(1)无法添加类似 Bounce 回弹这种动效

(2)渲染要比一 般的渲染慢一些

 

posted @ 2018-10-17 12:13  CodingSherlock  阅读(202)  评论(0编辑  收藏  举报