第九篇 float浮动

float浮动

首先老师要声明,浮动这一块,和边距、定位相比,它是比较难的,但是用它,页面排版会更好。

这节课就直接上代码,看着代码去学浮动。

我们先弄一个div,给它一个背景颜色:

HTML:

<div id="div1">我是浮动div</div>

CSS:

#div1{
    background-color: aquamarine;
}

这里同学们能看到,div1,它占据整行,有一个背景色。那么我们先来看看给它设置一个float(浮动)属性:

CSS:

#div1{
    background-color: aquamarine;
    float: left;
}

这样我们就让div1成为了浮动,再刷新页面,会发现,div1的宽度不在是占据整行了,而是变成内容有多大,它就有多大。那么,还能设置它的宽度不呢?答案是能,我们用width来设置:

CSS:

#div1{
    width: 300px;
}

在div1的样式里再加一个宽度,就可以了,它一样能占据更多的宽度,比如设置成"width:100%",这句话的意思是,宽度为百分之百!就是说,它的父级有多宽,它就会有多宽,这里我们没给div设置什么父亲元素,它是写在body下面的,所以body(整个浏览器)有多宽,它就有多宽。

它有什么特点呢?我们再在div1下面加一个div2测试一下,div2我们不给任何样式:

HTML:

<div>我是div2,没有任何样式</div>

然后去刷新页面,会发现,div2它没有跨行,而是在div1后面去了。这就是float最大的特性,它不像“绝对定位”一样脱离文本,float它依旧存在文本里的,不过它默认情况下,宽度是只有内容的宽度,所以会改变块级元素的宽度(占据整行)。跟“相对定位”也有区别,相对定位会保留原本元素存在的位置,而它不会,我们可以使用外边距margin来位移它的位置:

CSS:

#div1{
    margin:80px 0 0 100px;
}

再次在div1里面加样式,能看到,div1发生了位移,那我们试一下,像“定位”一样,用top或者left会不会有效果呢:

CSS:

#div1{
    left:100px;
    top:80px;
}

将margin改成以上代码测试一下。同学们会发现,没作用!那么区别出来了,float要让它产生位置变化,需要用到的是边距,不能像定位一样,直接使用left和top。那么我们将代码改回去,改成margin继续。

我们能看到,div1使用了float移动位置过后,随后的div2也跟着它后面像右侧移动,“相对定位”的话,只会保留原本位置,自身移动不会影响其他元素,这里的float对则对其他元素产生了影响。还能看出,他的高宽,也只有我们设置过的大小,左侧和上方跟div1本身是没有直接关系的。我们可以再加一个高来看出更明显的效果:

CSS:

#div1{
    height: 200px;
}

依旧是在div1里加样式,我们能看到div1的高宽,很明显了吧!左侧和上方空出来的部分,则是它使用外边距移动过后留下的空白,那么它究竟会不会影响其他元素呢,会!

我们给div2加一个ID为‘div2‘然后再加样式:

HTML:

<div id="div2">我是div2,没有任何样式</div>

CSS:

#div2{
    margin:0 0 0 100px;
}

这样的话,div2它原本应该是会距离左侧100px对吧,但是它却不移动,是因为什么呢?那我们再给div2加一个背景色看看它究竟怎么回事:

CSS:

#div2{
    background-color: red;
}

给div2再加一个背景色,会看到,咦!它是占据整行的,关键是什么,它确实离左侧100px了,但是它基于的是浏览器左侧,而不是div1,是因为div1是浮动,它虽然还在文本里,但是它也跨了一个领域(就这样解释吧....多看看手册里怎么解释的哈,同学们),它即影响其他元素,也又不影响,为什么呢?同学们能看到,div2的内容是基于div1的,而宽却是基于浏览器的。如果这样做,就会很难控制了,为什么呢,如果我们要div2距离div1有50px的距离,还要先清楚div1的宽和距离浏览器的距离,这样的话,会让人很难做的,很烦!那我们怎么做呢?让div2也成为float咯,先试试效果:

CSS:

#div2{
    float: left;
}

给div2加一个浮动,然后在页面上刷新能看到,它是基于div1的了,距离它100px了,而且宽度什么的都被float改变了。很多同学不会很会运用它,是因为做的少,多尝试,就能理解,老师就是这样过来的。

有同学问,float这样哪有什么好的?还比边距和定位难。那么我们将float的值left换成right试试,加一个div3:

HTML:

<div id="div3">我是第三个div,我是浮动right</div>

CSS:

#div3{
    float: right;
}

能够看到,div3就跑到浏览器的右侧去了,是因为它的值为"right",跑到右侧去,这样的话,我们拖动浏览器,它就会适应浏览器的宽度,永远基于浏览器的右侧,这样的话,我们设置它发生位移,甚至是之后的“网页自适应”也更好控制了。举个例子:老师的浏览器宽度为1920px,我要让某个div模块在我页面的最右侧,难道我就用left然后这是它位移1920px吗?那如果还要距离右侧一点距离,老师还得一个px一个px或者大概的去估测,那不是很傻吗。而用了right让它基于右侧,就跟左侧一样,我们来这样玩一下:

CSS:

#div3{
     margin:0 50px 0 0;
     background-color: bisque;
 }

老师总是给背景色,也是为了让各位同学看得更加清楚。上面的代码margin:0 50px 0 0;同学们明白吗?之前的课程里讲过,4个值的顺序是:top、right、bottom、left。那么就是说,距离右侧50px对吧。嗯....老师测试了一下,效果很明显!

float一般会用在哪里呢?我们不是经常逛商城吗,淘宝、京东等,我们写一个网页,首先当然是分析了,那么一个首页怎么写?大概是这样的:顶部、左侧导航栏、右侧内容。那么我们就可以给顶部设置一个float设置成宽度100%,左侧float比如宽度是20%,那么右侧内容的宽度则是80%。这样的话, 三个作为父级元素,里面的子孙后代也只好遵循他们的宽度。

老师给大家一个代码,可以模拟一下效果看看:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>静态布局</title>
    <style>
        div{
            border: 1px solid red;
            margin: 2px;
        }
        .maindiv{
            width: 1440px;
            margin: 0 auto;
            overflow: hidden;
        }
        .topcontent{
            height: 80px;
            background-color: lightcyan;
        }
        .bottomcontent{
            height: 120px;
            background-color: lightgoldenrodyellow;
        }
        .middlecontent{
            overflow: hidden;
        }
        .middlecontent .midleft{
            float: left;
            min-height: 500px;
            width: 160px;
            background-color: aqua;
        }
        .middlecontent .midright{
            width: 1260px;
            height: 800px;
            display: inline-block;
            background-color: lightcoral;
        }
    </style>
</head>
<body>

<div class="maindiv">
    <div class="topcontent"></div>
    <div class="middlecontent">
        <div class="midleft"></div>
        <div class="midright"></div>
    </div>
    <div class="bottomcontent"></div>
</div>

</body>
</html>

老师从最外层开始解释:

先用一个div设置到最外层,做最高级的父亲,里面的内容都是它的子孙后代,给它设置一个固定宽度1440px,其后代就不会超过它的宽度,方便控制。margin:0 auto 的意思是,它距离页面的边距设置成0,默认情况下是有几个px的,所以我们的内容总不是靠近浏览器,同学可以测试一下效果,auto是居中的意思,控制的是块级元素居中哦。

CSS里给每一个div设置了一个border边框效果,margin的上下左右都有2px,给他们来一点小距离,区分。

然后我们说里面的第一个div 它的class="topcontent",即是顶部内容。因为div占据整行,它的父亲1440px它也就有那么大,给了一个宽度和背景色,好看效果。

最后一个div class="bottomcontent" 就是底部内容,它的样式和顶部是一样的,就是给个高度和背景色。

看中间的div class="middlecontent",它里面就设置了一个overflow:hidden,意思是什么呢,比如它的高为100px,而你的内容太多,需要使用到120px,那么超出的20px的内容将不会展现出来,换句话说,就是隐藏掉了,但它依旧存在这个div里面的。它里面包含了左侧和右侧,左侧就比如是导航栏,右侧就是内容:

老师CSS里面写的,也是一种选择器的写法,就是找到父元素:middlecontent 给出一个空格,然后找到下一个儿子,midleft,这里面的样式的意思是:左浮动、min-hight是最小高度、宽度、背景色;midright:宽度、高度、display:inline-block意思是行内块元素、背景色

如果right里面没有display:inline-block,就会因为left里的浮动所影响。

如果老师讲的不够清楚,欢迎各位同学给出意见。

注:浮动是真的好难讲。要是面对面演讲,那就好多了。

附加:span类行级元素加了float,会变成div类的块级元素一般,能设置top和bottom等

时间: 2024-08-27 08:58:04

第九篇 float浮动的相关文章

归纳篇(一)CSS的position定位和float浮动

近期会更新一系列博客,对基础知识再度做个巩固和梳理. 一.position定位 (一):position的属性 1.absolute:生成绝对定位的元素,相对于最近一级定位不是static的父元素来进行定位: 2.relative:生成相对定位的元素,相对于其所在普通的文档流位置进行定位: 3.static:默认值,没有定位,元素出现在正常的文档流中; 4.fixed:老IE不支持,和absolute一致,相对于窗口进行定位,当出现滚动条时,不随着滚动而滚动: 5.sticky:(CSS3)有兼

Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memc

CSS float浮动的深入研究、详解及拓展(一)

概念目录 个人感悟之CSS代码的情感化思维 个人观点之浮动的意义仅仅是文字环绕显示而已 个人观点之浮动的本质是"包裹及破坏" 个人观点之目前大多数浮动应用都不是浮动应该做的 个人观点之浮动其实是个魔鬼.混球 一.引言 你我看待事物的方式不同,价值取向也不同,因为我们有着不同的世界观,价值观.这种世界观的差异不仅仅体现在实际的生活中,也反映在代码上.你我看待代码的方式,或者说是代码在我们情感层面的位置是不一样的,我这里说的是情感层面,与逻辑无关,与算法无关(虽然算法受情感影响).这种看待

Cocos2d-x3.0游戏实例之《别救我》第九篇——从tmx文件中加载关卡怪物

上一篇我们已经制作好tg1.tmx文件了,现在就要使用它了. 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址: http://www.benmutou.com/blog/archives/944 文章来源:笨木头与游戏开发 很抱歉,我们又要新建2个类了,我已经尽力少新建类了,毕竟是教程,类越多越容易混乱. 我们要新建一个Monster类,以及一个MonsterLayer类,专门添加Monster对象. Monster类 来看看Monster.h文件: #ifndef Monste

CSS布局之float浮动

之前对CSS的浮动布局总是一知半解,最近开发中用的多了,对它的用法进行一些总结,以便以后忘记时可以查到.哈哈,别说我记性不好,我可是说真的,毕竟前端的知识实在是多而杂,多做笔记,遇到问题时网上搜索资料是其一,但我觉得更重要的是把你遇到的问题和解决方法记录下来..这样以后你的开发效率是多高.言归正传,对浮动进行一些记录. 1.首先,网页是一个文档流,默认按块元素和级联元素从左到右,从上至下的依次显示.而Float浮动元素,就好比是漂浮在了文档流之上,不占据文档流的位置. 如下就是不进行任何浮动的文

盒子模型、网页自动居中、float浮动与清除、横向两列布局

1.CSS包含:标准文档流,浮动,绝对定位 标准文档流的特点:从上到下,从左到右,输出文档内容 盒子模型:块级元素(div ui li dl dt p)与行级元素(span strong img input) 盒子模型:边框(border)外边框(margin)内边框(padding)内容(content) 盒子3D模型:border. content+padding .background-img.background-color.margin <html> <head> <

第九篇 Integration Services:控制流任务错误

本篇文章是Integration Services系列的第九篇,详细内容请参考原文. 简介在前面三篇文章,我们创建了一个新的SSIS包,学习了脚本任务和优先约束,并检查包的MaxConcurrentExecutables属性.我们检查.演示并测试优先约束赋值为"成功"."完成"."失败"时对工作流的影响.我们学习了SSIS变量和表达式,并将它们应用到优先约束.这一篇,we introduce fault tolerance by examinin

第九篇 Replication:复制监视器

本篇文章是SQL Server Replication系列的第九篇,详细内容请参考原文. 复制监视器允许你查看复制配置组件的健康状况.这一篇假设你遵循前八篇,并且你已经有一个合并发布和事务发布.启动复制监控器复制监视器不是SSMS的一部分,它是一个独立的可执行文件(SqlMonitor.exe).在一个标准的SQL Server安装中开始菜单下找不到复制监视器.启动复制监视器的最简单方法是:SSMS对象资源管理器下连接到发布服务器,右击你的发布选择"启动复制监视器",如图9.1所示:图

&lt;转载&gt;如何解决子级用float浮动父级div高度不能自适应的问题

转载:http://www.kwstu.com/ArticleView/divcss_2013101582430202 解决子级对象使用css float浮动 而父级div不能自适应高度,不能被父级内容撑开解决方法,父级div没有高度解决方法. 最外层的父级DIV不能自适应高度-不能随对象撑开没有高度 当在对象内的盒子使用了float后,导致对象本身不能被撑开自适应高度,这个是由于浮动产生原因. 如何解决父div对象自适应高度,方法有三种,接下来DIVCSS5逐一介绍. 1.首先我们先看HTML