Css深入理解之浮动_慕课网课程笔记

时间:2022-06-11 07:54:18

前言

这篇是在慕课网上跟着张鑫旭重走CSS之路的第三篇学习笔记了,主要是学习float属性,闲话少说,下面进入正文.

float的历史

要想了解一个东西,我们还是需要从本质去了解它,那么我们就需要问一个直抵本质的问题:float被设计出来是干嘛的? 答案是:实现文字环绕效果.对,就是这么简单因为这个属性是在很久很久以前就有了,那个时候是没有那么多炫酷的CSS效果的,所以这个属性设计的初衷很简单,就是实现文字环绕.

float的特性

我们知道float的特性有两个,一个是包裹,一个就是破坏.下面就主要讲讲这两个特性

包裹

包括有以下三种行为,收缩/坚挺/隔绝,简而言之就是把一个元素包裹起来,类似在外面套一个盒子一样,将其与其它页面元素隔离开来.又成BFC(块级格式化上下文)

破坏

所谓的破坏性是指,当一个子元素应用浮动属性后,可能会导致父元素高度塌陷,这个就是我们常说的浮动的破坏性.

另外需要强调的是,这种特性不是bug,而是CSS规范,这是因为浮动的只是为了实现文字环绕效果,当初设计的时候,就是应用了破坏性,当元素应用浮动时,包裹它的元素因破坏性塌陷,从而导致文字环绕到元素周围.

清除浮动

清除浮动主要是从以下两方面入手:

  • 在父元素底部插入 有 clear:both声明的元素;
  • 依然与外部元素有连接,比如,依然有margin重叠.

常用形式有以下两种:

l  HTML block水平元素底部插入

这样会导致很多无意义的div元素

l  CSS after 伪类元素底部生成

对低版本的IE浏览器不友好.

父元素 BFC(高级浏览器)或者haslayout(IE)

相当于将元素与其它元素完全隔绝开来.

这个方法也是无法实现多浏览器支持的.低版本的IE浏览器可以使用 zoom:1.

针对清楚浮动,比较合理的做法是

高版本浏览器使用

.clearfix{ display;block;height:0,clear:both;overflow:hidden}或者

.clearfix :after{display : table; clear:both}

IE6/7可以使用

.clearfix{ *zomm:1}

Tips:clearfix 只应该应用在包含浮动子元素的父级元素上,乱用的话可能会导致低版本的浏览器效果无法预知

浮动的应用

浮动元素的block块状化

破坏性造成的紧密排列特性(去空格)

以上两个特性是我们可以在日常的写CSS的时候加以利用的特性,比如,利用这个特性和用户写一些需要紧密排列的元素的页面布局.

缺点:

1 容错性很差,无法自试用布局

2.无法重用,因为需要设置固定的宽度高度,所以重用性很差

浮动与流体布局

1.单侧固定

左侧固定元素应用 :width+float

右侧文字应用padding-left/margin-left

这个是最基本的浮动应用了,标准的浮动,相当于文字样式margin/padding:0 样式,当给环绕元素加上padding/margin时,那么环绕元素将不会继续在浮动元素下面展示,而是在其一侧对齐

2.右边固定,左侧自适应

基本可以跟上面所说的描述相反即可,但是需要注意的是,浮动在右边的元素是需要在页面中放到左边元素的前面,这个是跟我直观感受相反的一点.

那怎么样才能在页面元素前后顺序一致的时候实现右侧固定左侧自适应布局呢?这里就要用到我们上面刚刚说过的浮动的块状化和紧密排列特性了.具体来说就是.左侧环绕元素和固定宽度元素都使用flat:left布局,然后左侧宽度100%这个时候会把固定布局的元素挤到下一行去,这个时候我们需要给固定布局的元素叫一个负值的margin,让它回到我们希望的位置.这个时候环绕的问文字右侧浮动元素遮挡,那我们可以使用一个子元素包裹所有环绕文字,并给它加一个margin/padding.

简而言之,就是:

环绕父 元素: width:100%+float

环绕子元素: padding/margin

右侧固定元素 width+float+marginf负值

3.智能自适应

固定套路

一侧浮动,另一侧使用display:table-cell(ie8+)/inline-block(ie7)

兼容性

主要是IE7上的一些问题了,表示已放弃IE7,只当是思路学习了.

外链:

http://www.imooc.com/learn/121

Css深入理解之浮动_慕课网课程笔记的更多相关文章

  1. Css定位之relative_慕课网课程笔记

    前言 最近在慕课网上跟着张鑫旭大神重新学习一遍CSS相关的知识,以下是学习的笔记以及个人一些理解 relative对绝对定位的限制 1.限制绝对定位 绝对定位的top.left.right和botto ...

  2. Float浮动(慕课网学习笔记)

    float浮动 属性:值 意义 float:left 左浮动 float:right 右浮动 float:none 不浮动 float:inherit 继承父元素浮动属性,若父元素没有浮动属性则失效 ...

  3. Css定位之absolute_慕课网课程笔记

    absolute和float 绝对定位和浮动有相似之处,即都有破坏性和包裹性,破坏性是指其会导致包裹自身的复原塌陷,包裹性是float的天赋技能,对于绝对定位来说,其会包括子元素 越独立越强大 1.去 ...

  4. 网站优化之-SEO在网页制作中的应用(信息来自慕课网课程笔记)

    一.SEO基本介绍. 1.搜索引擎工作原理. 2.seo简介:SEarch Engine Optimization,搜索引擎优化.为了提升网页在搜索引擎自然搜索结果中的收录数量及排序位置而做的优化行为 ...

  5. Node.js爬虫-爬取慕课网课程信息

    第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让 ...

  6. PHP消息队列实现及应用_慕课网学习

    https://blog.csdn.net/d_g_h/article/details/79643714 https://blog.csdn.net/tTU1EvLDeLFq5btqiK/articl ...

  7. 安卓开发_慕课网_Fragment实现Tab(App主界面)

    学习内容来自“慕课网” 这里用Fragment来实现APP主界面 思路: 底部横向排列4个LinearLayout,每个LinearLayout包含一个图片按钮和一个文字 1.默认显示第一个功能(微信 ...

  8. 安卓开发_慕课网_ViewPager与FragmentPagerAdapter实现Tab实现Tab(App主界面)

    学习内容来自“慕课网” ViewPager与FragmentPagerAdapter实现Tab 将这两种实现Tab的方法结合起来.效果就是可以拖动内容区域来改变相应的功能图标亮暗 思路: Fragme ...

  9. 安卓开发_慕课网_ViewPager实现Tab(App主界面)

    学习内容来自“慕课网” 网站上一共有4种方法来实现APP主界面的TAB方法 这里学习第一种 ViewPager实现Tab 布局文件有7个, 主界面acitivity.layout <Linear ...

随机推荐

  1. HTML插入地图的方法

    方法/步骤 1.打开"百度地图生成器"的网址:http://api.map.baidu.com/lbsapi/creatmap/index.html 如下图: 2.在"1 ...

  2. Codeforces 418d Big Problems for Organizers &lbrack;树形dp&rsqb;&lbrack;倍增lca&rsqb;

    题意: 给你一棵有n个节点的树,树的边权都是1. 有m次询问,每次询问输出树上所有节点离其较近结点距离的最大值. 思路: 1.首先是按照常规树形dp的思路维护一个子树节点中距离该点的最大值son_di ...

  3. 验证Android用户输入日期

    如何验证用户输入的日期是有效还是无效? private Pattern pattern; private Matcher matcher; private static final String DA ...

  4. &lbrack;原&rsqb;Unity3D深入浅出 - Shader基础开发

    概述 简单来讲,shader是为渲染管线中的特定处理截断提供算法的一段代码.Shader是伴随着可编程渲染管线出现的,开发者可使用Shader对渲染过程加以控制,拥有更大的创作控件,因此Shader的 ...

  5. NetWorker常用术语

    术语 描述 active group 每24小时至少计划备份一次的备份组. Advanced File Type Device (AFTD) 为大容量磁盘设备和并发操作设计的磁盘备份设备配置选项. A ...

  6. PHP中Get&lpar;&rpar;和Post&lpar;&rpar;用法详解

    作为一个计算机系统,输入输出设备作为非核心设备却是不可或缺的,硬件如此,软件亦是如此.试想一台功能强劲的计算机,如果没有输入输出设备,它与一块只能耗电并且发出嗡嗡噪音的废铁有何不同.应用程序的道理也是 ...

  7. c&plus;&plus;builder 重载WindowProc、WndProc 截获消息(比Delphi多一个Message Map方法)

    c++builder 重载WindowProc.WndProc 截获消息 方法一WindowProc void __fastcall  myWindowProc(Messages::TMessage ...

  8. 高效 Java Web 开发框架 JessMA v3&period;2&period;3 beta-1 发布

    JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...

  9. LDA主题模型学习笔记3&period;5:变分參数推导

    如今来推导一下得到变分參数更新式的过程.这一部分是在论文的附录中,为避免陷入过多细节而影响总体理解.能够在刚開始学习LDA的时候先不关注求解细节.首先要把L写成关于γ,ϕ\gamma,\phi函数.依 ...

  10. JUnit介绍

    8.1.1  JUnit简介 JUnit主要用来帮助开发人员进行Java的单元测试,其设计非常小巧,但功能却非常强 大. 下面是JUnit一些特性的总结: — 提供的API可以让开发人员写出测试结果明 ...