CSS学习笔记——CSS中定位的浮动float

昨天在解决了盒模型的问题之后又出现了新的知识模糊点:浮动和绝对定位?今天先解决浮动相关的问题,首先列举出想要解决的问题:

1.浮动到底是怎么样的?

2.浮动对元素的影响有什么?

3.浮动主要用来干什么?

第一个问题:浮动到底是怎么样的?

W3CSCHOOL对浮动属性的解释:浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。所以浮动也有left、right、none三种。

我个人的理解是:HTML
文件就像是一个方形的水槽,它在浏览器中加载的过程就好比是向水槽中放水,而这些水就代表的是页面中的各个元素,他们都是有顺序的进入水槽(文档流的顺序
和我们写字一样,从上到下从左到右)。当出现了一个具有浮动属性(float)的元素时,就好像是水流中多了一块泡沫,它会浮在水面上(也就是说明元素脱
离了文档流)。在水流停止后(页面加载完毕),这个元素会停靠在水槽的边缘或者停靠在别的泡沫边缘(浮动元素会处于包含框的边缘或者另一个浮动元素的边
缘)。

对于浮动元素是否脱离了文档流,这个我刚开始也很迷糊,因为在看教学视频的时候一个老师说没有,另一个老师说有。于是就自己敲了代码做了点实验:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    #div1{

        height: 100px;
        background-color: #e13b00;
        float: left;
        clear: both;
    }

</style>
<body>
    <div id="div1">
        div1div1d
    </div>
    <p>1234567890
    </p>
    <p>1234567890
    </p>
</body>
</html>

上面代码的效果如下:


红色背景的Div是设置了左浮动的元素,根据浮动的定义它应该是脱离文档流的,具体表现如下图:

当我们审查第二个p标签时发现这个标签其实是覆盖了DIV块的,还是独自占据一行,并不是从DIV块的边缘开始的。这就说明:

设置的浮动的元素其实是脱离的文档流的,但是这个元素的内容还是会在视觉上占据空间,不会覆盖其他元素或者被其他元素覆盖。

2.浮动的元素对其他元素的影响有什么?

浮动元素对其他元素的影响就如同上面的例子显示的,浮动的元素会根据自己内容的大小把他之后的元素的内容挤到后面(特别注意,这里说的是内容!是内容!是内容!)。

这里特别说明一下:有些视频教学里说浮动的影响只会作用在紧邻在它后面的元素,这个说法还是有问题的,我上面举得那个例子就说明了红色的DIV块浮动影响的是它后面的两个p元素,而浮动的元素到底会影响多大范围是根据浮动的元素它的内容的大小决定的。

清除浮动带来的影响主要是通过两种方式:

第一种:给不想受到影响的元素增加属性clear:both/right/left. 这个属性的意思并不是清除什么,而是应该理解为拥有这个属性的元素左边或者右边不允许存在浮动元素的内容。

例如我们给第一个p标签增加了clear:left;这样一个属性,那么它就会从DIV块下面开始出现,同时会把第二个p标签也带下来(因为他们是按照顺序显示的)。而我们给第二个p标签增加clear:left,第一个p标签还是受到浮动的影响的。

第二种:给不想受到影响的元素增加属性width:100%;overflow:hidden;   这个方法也是有效的。

3.浮动主要用来干什么?

其实浮动的作用还是很重要的,我们可以利用它实现很常见的两列或者多列的网页布局,下面举个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    *{margin: 0px;padding: 0px}
    #div{
        width: 70%;
        margin: auto;
    }
    #header{
        height: 200px;
        background-color: darkslategrey;
    }
    #main{
        height: 300px;
        padding: 2%;
        background-color: #bfbfbf;
    }
    #left{
        float: left;
        width: 30%;
        height: 300px;
        background-color: #0044aa;
    }
    #right{
        float: right;
        width: 65%;
        height: 300px;
        background-color: yellow;
    }
    #footer{
        height: 200px;
        background-color: rosybrown;
    }

</style>
<body>
    <div id="div">
        <div id="header">
        </div>
        <div id="main">
            <div id="left"></div>
            <div id="right"></div>
        </div>
        <div id="footer">
        </div>
    </div>

</body>
</html>

效果如下:

这就是我们经常看到的一种网页布局,当然我这个例子有点简陋,其实也可以把中间的部分换成三列或是更复杂的形式。

对浮动的学习就到这里了,今天有一种感受就是:学习知识的过程中还是要多敲代码多实验,不能只看书中怎么做或者视频里面老师怎么做,他们思想也并不是就是完全正确。对于疑惑的问题不能马虎带过。当然不仅仅只是学习,在任何时候都该保持有自己的想法。

明天解决绝对定位的问题。

2016年01月09日

不积跬步,无以至千里

PS:我查阅的大部分资料都是来自于网络,如有侵权,请联系我删除

时间: 2024-10-10 20:30:06

CSS学习笔记——CSS中定位的浮动float的相关文章

CSS学习笔记——CSS中定位的浮动float(20171129002)

昨天在解决了盒模型的问题之后又出现了新的知识模糊点:浮动和绝对定位?今天先解决浮动相关的问题,首先列举出想要解决的问题: 1.浮动到底是怎么样的? 2.浮动对元素的影响有什么? 3.浮动主要用来干什么? 第一个问题:浮动到底是怎么样的? W3CSCHOOL对浮动属性的解释:浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止.所以浮动也有left.right.none三种. 我个人的理解是:HTML 文件就像是一个方形的水槽,它在浏览器中加载的过程就好比是向水槽中放水,而

Head First HTML与CSS学习笔记-CSS

要为HTML直接增加CSS样式,需要在<head>元素中增加开始和结束style标记; 要为多个元素编写一个规则,只需要在选择器之间加上逗号,如"h1,h2". h1,h2 { font-famliy: sans-serif; color: gray; } 下划线:使用border-bottom: 1px solid black延伸,这条线会延伸到页面边缘.而使用text-decoration: underline时,下划线只出现在文本下面,不会延伸到页面边缘.

html+css学习笔记 4[定位]

如何让图1中的div2移动到如图2上的位置: 思路:哪些css命令能够影响盒子显示的位置呢? relative相对定位/定位偏移量 position:relative;  相对定位         a.不影响元素本身的特性: b.不使元素脱离文档流: c.如果没有定位偏移量,对元素本身没有任何影响: 定位元素位置控制         top/right/bottom/left  定位元素偏移量. absolute绝对定位/定位层级 osition:absolute;  绝对定位 a.使元素完全脱

html+css学习笔记 3[浮动]

inline-block/float(浮动) 回顾:inline-block 特性:      1.块在一排显示 2.内联支持宽高 3.默认内容撑开宽度 4.标签之间的换行间隙被解析(问题) 5.ie6 ie7不支持块属性标签的inline-block(问题) float浮动: 1.块在一排显示     2.内联支持宽高     3.默认内容撑开宽度      4.脱离文档流     5.提升层级半层 文本流 float:left | right | none | inherit; 文档流是文档

CSS学习笔记08 浮动

从CSS学习笔记05 display属性一文中,我们知道div是块元素,会独占一行,即使div的宽度很小,像下面这样 应用display属性的inline属性可以让div与div共享一行,除了这种方法外,还有没有其他方法可以实现这种效果呢,答案是肯定的,那就是下面要介绍的CSS的浮动特性,浮动从字面意思上来看,就是浮起来,动起来,那么是谁浮起来,又是谁动起来呢?往下看,很快就会知道答案了. 元素的浮动是指设置了浮动属性的元素会脱离标准文档流的控制,漂浮在标准流之上.元素浮动后,虽然脱离标准流,但

CSS学习笔记09 简单理解BFC

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>BFC</title> 6 <style type="text/css"> 7 .div1 {background-color: #FCE38A; width: 200px; height: 100px;}

css 学习笔记 一

 css学习笔记1 1.选择特定元素的选择符: 上下文选择符 标签1 标签2 {声明}      其中标签2是要选择的目标,而只有在标签1是其祖先元素(不一定是父元素)的情况下才会被选中.     css代码: body代码: 理解:section标签 article标签就属于上下文的关系,即article为section的后代,只有应用了section的样式,才能应用article的样式.注意:继承关系中的空格问题,有空格的表示祖先与后代的关系,css写法,body的代码为,说明页面样式表文件

CSS学习笔记总结和技巧

跟叶老师说项目,他叫我写一个静态首页,看起来挺简单的,但是下手才发现在真的不会怎么下手啊,什么模型啊模块啊都不懂,写毛线啊!! 如图:页面下拉还有侧栏,中间内容等. 可是答应跟老师做了,不能怂啊,于是硬着头皮,花两三天看在慕课网上学习Bootstrap(讲得挺好的,建议大白去看一下),其实我刚看完不久,里面很多东西其实作者都总结得很不错,还有演示. 收获很多,打算再看一下HTML的div+css布局,花一两天时间就可以写完那个界面.就是这么自信,哈哈哈~ 不逼自己一把,你永远不知道自己有多优秀.

css学习笔记四

广州天气变冷了,css学习笔记还是要总结. 总结: 1:几米页面静态页面主要是一列结构头部banner图,mainbody部分放文字内容和图书图片,底部是页面的版权信息 2:腾讯软件中心静态页面制作(二列浮动布局) 3:w3cschool静态页面制作 4:垂直菜单,水平菜单(li设置float),圆角菜单(利用背景图片), 鼠标移上去菜单高度变化(margin-top以及line-height), 鼠标移上去菜单宽度变化 (用jq写是利用hover和hide,用原生js写是文档加载完,遍历li里