zoukankan      html  css  js  c++  java
  • 深入理解css之float

    1.float的历史
    float的设计的初衷:文字环绕效果
    2.包裹与破坏
    增强浮动的感性认知
    包裹:1.收缩 2.坚挺 3.隔绝 里面的布局和外面一点关系都没有
    包裹的特性就是BFC block formatting context-块级格式化上下文
    具有包裹性的其他元素
    display:inline-block/table-cell
    position:absolute/fixed/sticky
    破坏:容器被破坏,父级元素的高度坍塌
    其他具有破坏性的元素
    display:none
    position:absolute(近亲)/fixed/sticky
    3.浮动是魔鬼——无宽度、无图片、无浮动(新三无)
    为何浮动要带来破坏——置之死地而后生
    被误解的float
    浮动具有破坏性,会让父元素高度塌陷
    如何解决让父元素高度塌陷的bug?这个不是bug,而是标准 浮动的原本作用是仅仅是为了实现文字环绕效果
    结论:浮动的破坏性知识单纯为了实现文字环绕效果而已,因此 父容器高度塌陷不是bug,特性使然。
    4.清除浮动
    清除浮动带来的影响
    方法一,在脚底插入一个clear:both的元素
    方法二,父元素BFC IE8+或haslayoutIE6、7
    方法差异 clear,好像在桥梁,在两端搭建一个桥梁,有margin重叠等等特性
    BFC像是一个封闭的通道,和外面是隔绝的,保护里面的任何声明不对外面有任何的影响。
    clear通常应用形式,1.HTML block水平元素底部走起


    2.CSS after伪元素底部走起
    不足:第一种div元素-裸露的div元素看起来影响观瞻
    第二种在IE6、7中兼容性问题。
    BFC/haslayout通常声明
    .float:left/right
    .position:absolute/fixed
    .overflow:hidden/scroll(IE7)
    .dispaly:inline-block/table-cell(IE8+)
    .width/height/zoome:1/...(IE67)
    不足:无法“一方通行”,不可能所有元素都浮动,都绝对定位
    你我相逢不相识zoom:1,兼容性很好,但是绝大多浏览器是不认识的。
    权衡后的策略
    .clearfix:after{
    content:'';display:block;height:0;overflow:hidden;clar:both;
    }
    .clearfix{zoom:1;}
    更好的方法
    .clearfix:after{content:''; dispaly:table;clear:both;}
    .clearfix{
    zoom:1;}
    切勿滥用!clearfix 应用在包含浮动子元素的父级元素上。乱入的haslayout往往会让IE6、7做出出格的事情
    浮动也会触发haslayout 所以,浮动在ie67下更显魔性
    5.float的滥用——不在其职而谋其政
    1.元素block块状化
    2.破坏性造成的紧密排列特性(去空格化)
    6.float与流体布局
    文字环绕衍生-单侧固定
    width+float
    padding-left/margin-left
    DOM与显示位置匹配的单侧固定布局
    100% + float
    padding-left/margin-left
    width+float+margin负值
    智能自适应布局
    float
    display:table-cell IE+
    display:inline-block IE7
    float与兼容性
    IE7的浮动问题
    1.含clear的浮动元素包裹不正确的问题;
    2.浮动元素倒数2个莫名垂直间距问题
    3.浮动元素最后一个字符重复问题
    4.浮动元素楼梯排列问题
    5.浮动元素和文本不在同一行的问题

    		合理使用浮动,且用且珍惜。。。--------
  • 相关阅读:
    jQuery中时间戳和日期的相互转换
    jquery append 方法应用
    MySQL中实现连续日期内数据统计,缺省天数0补全
    jQuery通过ajax请求php遍历json数组到table中的代码
    sql相同表不同查询条件合并显示
    paginate()出来的数据怎样循环插入数据?
    使用paginate分页后数据处理
    ThinkPhp3.2.3 使用phpExcel导入数据
    判断时间戳是星期几
    英文加数字升序/降序
  • 原文地址:https://www.cnblogs.com/zhongke/p/6592409.html
Copyright © 2011-2022 走看看