css-浮动详解(一)

注册博客园也有一段时间了,一直都是看其他大牛的博客,感触颇多,都是我要学习和努力的目标,慢慢的心底也萌生了要写博客的嫩芽,虽然自己也是步入前端这一行业不久的工作者,希望各位大前端行业的前辈多多指教啦!

我写博客的目的呢就是,一呢,总结自己学过和运用的的技术和知识,系统的梳理知识点和原理,加深印象;二呢,报着学习交流的态度,希望大家多多督促,有什么讲的不对的地方欢迎指出啦!当前是为了一份更好的更适合自己的job,find好的工作机会啦!

我相信,一步步的坚持下去,会成为一个优秀的前端程序媛!哈哈!

第一次写博客,虽然接触css许久,也有过许多的HTML+css页面开发的项目经验,但是对float浮动这个原理有时候还是那么是懂非懂得样子,今天我就系统的梳理下浮动相关的知识,献丑啦!

了解float之前先简单的了解下什么是文档流。

文档流:文档流是文档中可显示对象在排列中所占用的位置。通俗的说,将窗体自上而下分成一行一行,并在每行中按从左到右挨次排放元素,即为文档流。

比如网页的div标签它默认占用的宽度位置是一整行,p标签默认占用宽度也是一整行,因为div标签和p标签是块状对象。网页中大部分对象默认是占用文档流,也有一些对象是不占用文档流的,比如表单中的隐藏域。

浮动的定义:

float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。

由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。---《w3c》,通俗的说,就是浮动元素漂浮的普通流之上。

CSS 中所有的float属性

属性 描述 CSS
clear 指定不允许元素周围有浮动元素。 left
right
both
none
inherit
1
float 指定一个盒子(元素)是否可以浮动。 left
right
none
inherit
1

CSS的float特征(简洁的总结了一下):

1:使块元素在一行显示;

2:使内嵌元素支持宽高;

3:不设置宽度的时候宽度由内容撑开;

4:脱离文档流

5:提升层级半层

 下面详细分解float:

demo1:设置元素float:left

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>css_float</title>
    </head>
    <style type="text/css">
        body{
            margin:0;
            font-family: "微软雅黑";
            font-size: 20px;
        }
        #wrap{
            margin: 0 auto;
            width: 800px;
            border: 2px dashed black;
            height: 600px;
        }
        .div1,.div2,span{
            float: left;
        }
        .div1{
            width: 100px;
            height: 100px;
            background-color: cadetblue;
        }
        .div2{
            width: 180px;
            height: 120px;
            background-color: coral;
        }
        .span1{
            width: 220px;
            height: 280px;
            background-color: burlywood;
        }
        .span2{
            width: 280px;
            height: 330px;
            background-color: crimson;
        }
    </style>
    <body>
        <div id="wrap">
            <div class="div1">div1</div>
            <div class="div2">div2</div>
            <span class="span1">span1</span>
            <span class="span2">span2</div>
        </div>
    </body>
</html>

输出结果:

demo2:设置元素float:right

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>css_float</title>
    </head>
    <style type="text/css">
        body{
            margin:0;
            font-family: "微软雅黑";
            font-size: 20px;
        }
        #wrap{
            margin: 0 auto;
            width: 800px;
            border: 2px dashed black;
            height: 600px;
        }
        .div1,.div2,span{
            float: right;
        }
        .div1{
            width: 100px;
            height: 100px;
            background-color: cadetblue;
        }
        .div2{
            width: 180px;
            height: 120px;
            background-color: coral;
        }
        .span1{
            width: 220px;
            height: 280px;
            background-color: burlywood;
        }
        .span2{
            width: 280px;
            height: 330px;
            background-color: crimson;
        }
    </style>
    <body>
        <div id="wrap">
            <div class="div1">div1</div>
            <div class="div2">div2</div>
            <span class="span1">span1</span>
            <span class="span2">span2</div>
        </div>
    </body>
</html>

输出结果:

结论1:

浮动元素会生成块级框,无论这个元素本身是什么,所以浮动元素会使块元素随着浮动指定的方向并列一行显示,浮动元素使内嵌元素支持宽度和高度。

浮动元素的左(或右)外边界不能超出其包含块的左(或右)内边界,也就是说,左浮动的元素左外边界向左只能到其包含块的左内边界,右浮动元素同理

一个浮动元素的顶端不能比其父元素的内顶端更高,从上图显示可以看出,无论是左浮动,还是右浮动;这样避免了浮动元素一直浮动到文档的顶端

 demo3:标准流的块元素div

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>css_float</title>
    </head>
    <style type="text/css">
        body{
            margin:0;
            font-family: "微软雅黑";
            font-size: 20px;
        }
        #wrap{
            margin: 0 auto;
            width: 800px;
            border: 2px dashed black;
            height: 600px;
        }
        .div1{
            width: 100px;
            height: 100px;
            background-color: cadetblue;
        }
        .div2{
            width: 180px;
            height: 120px;
            background-color: coral;
        }
        .div3{
            width: 220px;
            height: 100px;
            background-color: burlywood;
        }
        .div4{
            width: 280px;
            height: 150px;
            background-color: crimson;
        }
    </style>
    <body>
        <div id="wrap">
            <div class="div1">div1</div>
            <div class="div2">div2</div>
            <div class="div3">span1</div>
            <div class="div4">span2</div>
        </div>
    </body>
</html>

输出结果:

demo4:把demo3中的div2设置为float:left,

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>css_float</title>
 6     </head>
 7     <style type="text/css">
 8         body{
 9             margin:0;
10             font-family: "微软雅黑";
11             font-size: 20px;
12         }
13         #wrap{
14             margin: 0 auto;
15             width: 800px;
16             border: 2px dashed black;
17             height: 600px;
18         }
19         .div1{
20             width: 100px;
21             height: 100px;
22             background-color: cadetblue;
23         }
24         .div2{
25             width: 180px;
26             height: 120px;
27             background-color: coral;
28             float: left;
29         }
30         .div3{
31             width: 220px;
32             height: 220px;
33             background-color: burlywood;
34         }
35         .div4{
36             width: 280px;
37             height: 150px;
38             background-color: crimson;
39         }
40     </style>
41     <body>
42         <div id="wrap">
43             <div class="div1">div1</div>
44             <div class="div2">div2</div>
45             <div class="div3">div3</div>
46             <div class="div4">div4</div>
47         </div>
48     </body>
49 </html>

输出结果:

结论2:

当div2 向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到包含框的左边缘。因为它不再处于文档流中,所以它不占据空间,但是div1,div3,div4仍然在普通流中,至上到下依次排列;所以div3会自动上浮,直到上个元素的底端。

demo5:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>css_float</title>
    </head>
    <style type="text/css">
        body{
            margin:0;
            font-family: "微软雅黑";
            font-size: 20px;
        }
        #wrap{
            margin: 0 auto;
            width: 800px;
            border: 2px dashed black;
            height: 600px;
        }
        .div1{
            width: 100px;
            height: 100px;
            background-color: cadetblue;
        }
        .div2{
            width: 180px;
            height: 120px;
            background-color: coral;
            float: left;
        }
        .div3{
            width: 220px;
            height: 220px;
            background-color: burlywood;
            float: right;
        }
        .div4{
            width: 480px;
            height: 150px;
            background-color: crimson;
            /*float: left;*/
        }
    </style>
    <body>
        <div id="wrap">
            <div class="div1">div1</div>
            <div class="div2">div2</div>
            <div class="div3">div3</div>
            <div class="div4">div4</div>
        </div>
    </body>
</html>

输出结果:

结论3:

浮动元素的顶端不能比之前所有的浮动元素或块级元素的顶端更高。

de

 

   

   

                                                       
                             
段落  
字体  
5(18pt)  
       
                                 

mo6:所有div设置做浮动

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>css_float</title>
    </head>
    <style type="text/css">
        body{
            margin:0;
            font-family: "微软雅黑";
            font-size: 20px;
        }
        #wrap{
            margin: 0 auto;
            width: 800px;
            border: 2px dashed black;
            height: 600px;
        }
        .div1{
            width: 100px;
            height: 100px;
            background-color: cadetblue;
            float: left;
        }
        .div2{
            width: 180px;
            height: 120px;
            background-color: coral;
            float: left;
        }
        .div3{
            width: 220px;
            height: 220px;
            background-color: burlywood;
            float: left;
        }
        .div4{
            width: 480px;
            height: 150px;
            background-color: crimson;
            float: left;
        }
    </style>
    <body>
        <div id="wrap">
            <div class="div1">div1</div>
            <div class="div2">div2</div>
            <div class="div3">div3</div>
            <div class="div4">div4</div>
        </div>
    </body>
</html>

输出结果:

结论4:

浮动元素不能超出其包含元素的边界。如果超出了边界,后者的浮动元素就会挤到新行上。如果前面的浮动元素高度不同,那么当它们向下移动时可能被其它浮动元素“卡住”,后者浮动元素的顶端始终与上一个浮动元素的底部对齐
所以因为上图div1,2,3,4元素总体宽度超过了他的父级宽度,div4被挤到一个新行上,顶端与上一个浮动元素div3的底部对齐

时间: 2024-11-18 09:31:17

css-浮动详解(一)的相关文章

彻底理解浮动float CSS浮动详解 清除浮动的方法

我们把网页的常用的布局格式分为以下三种: 1.标准流. 所谓的标准流就是,行内元素自己单独一行,而块级元素是上下显示的. 以前我们学习的都是标准流.   注意:标准流使我们网页布局中最稳定的一种结构 2. 浮动流 使我们学习的脱离标准流的第一种方式.会影响我们标准流的排列.所以,我们布局的时候,能用标准流做的,就不用浮动做. 3. 定位流 定位流也是脱离标准流的一种模式.它完全脱离标准流,不会对标准流有影响. 浮动(float) 我们要浮动的目的: 我们浮动的目的,就是可以把多个块级元素放到想要

CSS选择器详解

CSS选择器详解 选择器是CSS的核心,从最初的元素.class/id选择器,演进到伪元素.伪类,以及CSS3中提供的更丰富的选择器,定位页面上的任意元素开始变得愈发的简单. 1.元素选择器 这是最基本的CSS选择器,HTML文档中的元素本身就是一个选择器: p {line-height:1.5em; margin-bottom:1em;} 2.关系选择器 E F:后代选择器,该选择器定位元素E的后代中所有元素F: ul li {margin-bottom:0.5em;} E > F:子选择器,

CSS优先级详解(权重详解)

CSS选择器权重值的计算 对于Css权重,现在网上很多版本都是这样计算的:内联样式1000点,ID100点,Class.伪类(pseudo-classes)或属性选择器10点,标签元素和伪元素(pseudo-elements)1点:虽然大多数时候是正确的但因为真正的原理并非如此,所以某些情况下会出错. css权重有ABCD四个值,A代表行间样式,B代表选择器中ID的数量,C代表选择器中类, 伪类, 属性选择器的数量,D代表标签元素和伪元素的数量. 具体理解请看例子: * {} A,B,C,D(0

带你走进CSS定位详解

学习CSS相关知识,定位是其中的重点,也是难点之一,如果不了解css定位有时候都不知道怎么用,下面整理了一下关于定位属性的具体理解和应用方案. 一:定位 定位属性列表 position top bottom right left z-index position 基本语法: position:static | absolute | fixed | relative 语法介绍: static:默认值,无特殊定位. absoulte:相对于其最近的一个定位设置的父对象进行绝对定位,可用left,ri

CSS长度单位详解

序言 长度单位可以总体的分为绝对长度单位和相对长度单位.CSS中最为大家熟知的无疑是px和em,但与此同时还存在pt, rem, vw, vh等其他计量单位,使用好它们可以大大增长我们的开发效率.本篇文章试图整理在前端开发中用到的CSS单位和其应用场景. px——像素 px是pixel缩写,是基于像素的单位.在浏览网页过程中,屏幕上的文字.图片等会随屏幕的分辨率变化而变化,一个100px宽度大小的图片,在800×600分辨率下,要占屏幕宽度的1/8,但在1024×768下,则只占约1/10.所以

CSS 计数器详解

在前端开发中总少不了列表项,对于列表项序号,射鸡师一般会列出个1,2,3...序号.在不了解css计数器属性之前,我一般会用精灵图,用类名来区分序列号图片.这样做尽管可以达到目的,但是很不方便,开发过程耗时较长而且维护修改起来较困难.用css counter配合伪类的content完美的解决了这个问题,这里详细介绍下css counter属性 计数器属性介绍 计数器的值通过使用counter-reset 和 counter-increment 操作,在 content 上应用 counter()

css属性详解和浮动

一.CSS属性组成和作用 属性:属性值 1)每个css样式都必须由两部分组成:选择符和声明 注:声明又包括属性和属性值 2)css属性:属性是指定选择符具有的属性,他是css的核心,css2共有150多个属性: 3)css属性值:属性值包括法定属性值和常规的数值加单位或颜色值(colorValue):如(25px) 字体属性 1.font-family: 字体类型; {font-family:字体1,字体2,字体3:}       例:font-family:"微软雅黑","

CSS z-index详解

概念 z-index 属性设置元素的堆叠顺序.拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面. 层级关系的比较 1. 对于同级元素,默认(或position:static)情况下文档流后面的元素会覆盖前面的. 2. 对于同级元素,position不为static且z-index存在的情况下z-index大的元素会覆盖z-index小的元素,即z-index越大优先级越高. 3. IE6/7下position不为static,且z-index不存在时z-index为0,除此之外的浏览器z

CSS3定位和浮动详解

本文为大家分享CSS3定位和浮动的基础概念,与使用方法,供大家参考,具体内容如下 一.定位 1. css定位: 改变元素在页面上的位置 2. css定位机制: 普通流: 浮动: 绝对布局: 3. css定位的属性: position 把元素放在一个静态的,相对的,绝对的,或者固定的位置中 top/left/right/botom 元素向上/左/右/下的偏移量 overflow 设置元素溢出其区域发生的事情 clip 设置元素显示的形状 vertical-align 设置元素显示的对其方式 z-i

css属性详解

一.字体属性 字体 font-family可以把多个字体名称作为一个“回退”系统来保存.如果浏览器不支持第一个字体,则会尝试下一个.浏览器会使用它可识别的第一个值. body { font-family: "Microsoft Yahei", "微软雅黑", "Arial", sans-serif } 大小 可以通过font-size来说设置字体大小的像素值,如果设置成inherit表示继承父元素的字体大小值. p { font-size: 16