07.浮动(上)

简介: 07.浮动

浮动在网页中的应用


主要用于使得div脱离标准文档流,生成多列布局


image.png

image.png

float属性

left

元素向左浮动

right

元素向右浮动

none

默认值。元素不浮动,并会显示在其文本中出现的位置

浮动就是让元素可以向左或向右移动,直到它的外边距碰到其父级的内边距或者是上一个元素的外边距(这里指的上一个元素不管它有没有设置浮动,都会紧挨着上一个元素)


浮动的特性


1.浮动元素支持所有的css样式

2.内容撑开宽高

3.多个元素设置浮动,宽度足够的话,会排在一行

4.脱离文档流

5.提升层级半级

也就是说:一个元素设置了浮动属性后,下一个元素就会无视这个元素的存在,但是下一个元素中的文本内容依然会为这个元素让出位置使自身的文本内容环绕在设置浮动元素的周围

注意:不管是行级还是块级元素,如果设置了浮动属性,该元素就变成了具有inline-block属性的元素


浮动—都不浮动

<div class="class1">我是块级元素1,没有设置浮动</div>
<div class="class2">我是块级元素2,没有设置浮动</div>
<div class="class3">我是块级元素3,没有设置浮动</div>

.class1 {
            width: 200px;
            height: 100px;
            background: palegreen;
        }
        .class2 {
            width: 250px;
            height: 130px;
            background: gold;
        }
        .class3 {
            width: 300px;
            height: 180px;
            background: red;
        }


image.png


image.png

浮动—第一个div浮动

<div class="class1">我是块级元素1,没有设置浮动</div>
<div class="class2">我是块级元素2,没有设置浮动</div>
<div class="class3">我是块级元素3,没有设置浮动</div>

.class1 {
            width: 200px;
            height: 100px;
            background: palegreen;
            float: left
        }
        .class2 {
            width: 250px;
            height: 130px;
            background: gold;
        }
        .class3 {
            width: 300px;
            height: 180px;
            background: red;
        }

1)没有设置浮动的元素会填充浮动元素留下来的空间

2)浮动元素会和非浮动元素发生重叠,浮动元素会在图层的最上面

3)使用浮动时,该元素会脱离文档流,后面的元素会无视这个元素,但文本依然会为这个浮动元素让出位置,并且元素中的文字内容会环绕在其周围


image.png

image.png

浮动—第二个div浮动

<div class="class1">我是块级元素1,没有设置浮动</div>
<div class="class2">我是块级元素2,没有设置浮动</div>
<div class="class3">我是块级元素3,没有设置浮动</div>

.class1 {
            width: 200px;
            height: 100px;
            background: palegreen;
        }
        .class2 {
            width: 250px;
            height: 130px;
            background: gold;
            float: left
        }
        .class3 {
            width: 300px;
            height: 180px;
            background: red;
        }

浮动元素不会超越其前面的元素


image.png

image.png

浮动—3个div都浮动

<div class="class1">我是块级元素1,没有设置浮动</div>
<div class="class2">我是块级元素2,没有设置浮动</div>
<div class="class3">我是块级元素3,没有设置浮动</div>

.class1 {
            width: 200px;
            height: 100px;
            background: palegreen;
        }
        .class2 {
            width: 250px;
            height: 130px;
            background: gold;
            float: left
        }
        .class3 {
            width: 300px;
            height: 180px;
            background: red;
        }

浏览器宽度足够时,并排排列


image.png

image.png


浏览器宽度不足以容纳最后一个div时,最后一个div掉下来,并且顶部不会超过倒数第二个div的底部。


image.png

image.png


浮动—父子关系

<div id="wrap2">
    <div class="class1"></div>
    <div class="class2"></div>
    <div class="class3"></div>
    <div class="class4"></div>
</div>

#wrap2 {
            width: 550px;
            height: 900px;
            border: 3px solid red;
        }
        .class1 {
            width: 200px;
            height: 400px;
            background: blue;
            float: left;
        }
        .class2 {
            width: 200px;
            height: 300px;
            background: yellow;
            float: left;
        }
        .class3 {
            width: 200px;
            height: 300px;
            background: fuchsia;
            float: left;
        }
        .class4 {
            width: 200px;
            height: 200px;
            background: chartreuse;
            float: left;
        }


1)浮动元素不会在其浮动方向上溢出父级的包含块

也就是说元素左浮动,其左外边距不会超过父级的左内边距,元素右浮动,其右外边距不会超过父级的右内边距

2)浮动元素的位置受到同级同向浮动元素的影响

也就是说同一父级中有多个浮动元素,后一个元素的位置会受到前一个浮动元素位置的影响,他们不会相互遮挡,后一个浮动元素会紧挨着前一个浮动元素的左外边距进行定位,如果当前空间不足,则会换行,否则会放置在前一个浮动元素的下面


image.png

image.png

浮动影响父层盒子高度


父元素的高度靠子元素撑开,子元素全部浮动后,均脱离文档流,父元素高度塌陷

<div id="wrap2">
    <div class="class1"></div>
    <div class="class2"></div>
    <div class="class3"></div>
    <div class="class4"></div>
</div>

#wrap2 {
            width: 550px;
            border: 3px solid red;
        }
        .class1 {
            width: 200px;
            height: 400px;
            background: blue;
            float: left;
        }
        .class2 {
            width: 200px;
            height: 300px;
            background: yellow;
            float: left;
        }
        .class3 {
            width: 200px;
            height: 300px;
            background: fuchsia;
            float: left;
        }
        .class4 {
            width: 200px;
            height: 200px;
            background: chartreuse;
            float: left;
        }


image.png

image.png


溢出处理


overflow属性

visible

默认值。内容不会被修剪,会呈现在盒子之外

hidden

内容会被修剪,并且其余内容是不可见的

scroll

内容会被修剪,但是浏览器会显示滚动条以便查看其余内容

auto

如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容


overflow属性的妙用


使用overflow扩展盒子高度,overflow属性会触发浏览器重新计算父元素盒子高度

<div id="wrap2">
    <div class="class1"></div>
    <div class="class2"></div>
    <div class="class3"></div>
    <div class="class4"></div>
</div>

#wrap2 {
            width: 550px;
            border: 3px solid red;
        overflow:hidden;
        }
        .class1 {
            width: 200px;
            height: 400px;
            background: blue;
            float: left;
        }
        .class2 {
            width: 200px;
            height: 300px;
            background: yellow;
            float: left;
        }
        .class3 {
            width: 200px;
            height: 300px;
            background: fuchsia;
            float: left;
        }
        .class4 {
            width: 200px;
            height: 200px;
            background: chartreuse;
            float: left;
        }


image.png

image.png


清除浮动


clear属性

left

在左侧不允许浮动元素

right

在右侧不允许浮动元素

both

在左、右两侧不允许浮动元素

none

默认值。允许浮动元素出现在两侧


清除两测浮动


清除两侧浮动,有扩展父级盒子高度的作用

<div id="wrap2">
    <div class="class1"></div>
    <div class="class2"></div>
    <div class="class3"></div>
    <div class="class4"></div>
     <p class="txt">我是一段文本我是一段文本我是一段文本我是一段文本</p>
</div>

#wrap2 {
            width: 550px;
            border: 3px solid red;
        }
        .class1 {
            width: 200px;
            height: 400px;
            background: blue;
            float: left;
        }
        .class2 {
            width: 200px;
            height: 300px;
            background: yellow;
            float: left;
        }
        .class3 {
            width: 200px;
            height: 300px;
            background: fuchsia;
            float: left;
        }
        .class4 {
            width: 200px;
            height: 200px;
            background: chartreuse;
            float: left;
        }
        .txt {
            clear: both
        }

清除两侧浮动前

image.png

image.png

清除两侧浮动后,有扩展父级盒子高度的作用

image.png

image.png


制作有路网水平导航菜单


image.png

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="reset.css" rel="stylesheet">
    <style>
        .red-nav{
            height: 38px;
            background-color: #D80000;
        }
        .red-nav li{
            float: left;
            line-height: 38px;
            font-size: 16px;
            font-weight: bold;
            padding: 0 25px;
        }
        .red-nav li a{
            color: white;
        }
        .red-nav li:hover{
            background-color: #C90000;
        }
        .red-nav .first{
            background-color: #C90000;
            padding-left: 20px;
            padding-right: 100px;
            /*margin-right: 100px;*/
        }
    </style>
</head>
<body>
<div class="red-nav">
    <ul>
        <li class="first">
            <a href="#">全部图书分类</a>
        </li>
        <li>
            <a href="#">考试</a>
        </li>
        <li>
            <a href="#">考试</a>
        </li>
        <li>
            <a href="#">考试</a>
        </li>
        <li>
            <a href="#">考试</a>
        </li>
        <li>
            <a href="#">考试</a>
        </li>
        <li>
            <a href="#">考试</a>
        </li>
        <li>
            <a href="#">考试</a>
        </li>
    </ul>
</div>
</body>
</html>

Flexbox版

.red-nav ul{
          display: flex;
        }
        .red-nav li{
            /* float: left; */
            flex:0 0 auto;
            line-height: 38px;
            font-size: 16px;
            font-weight: bold;
            padding: 0 25px;


目录
相关文章
|
23小时前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
1天前
|
安全 数据可视化 网络安全
安全无小事|阿里云先知众测,为企业筑牢防线
专为企业打造的漏洞信息收集平台
1299 2
|
2天前
|
云安全 人工智能
2025,阿里云安全的“年度报告”
拥抱AI时代,阿里云安全为你护航~
1446 2
|
10天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
1381 7
|
10天前
|
人工智能 Rust 运维
这个神器让你白嫖ClaudeOpus 4.5,Gemini 3!还能接Claude Code等任意平台
加我进AI讨论学习群,公众号右下角“联系方式”文末有老金的 开源知识库地址·全免费
1262 16
|
4天前
|
人工智能 前端开发 API
Google发布50页AI Agent白皮书,老金帮你提炼10个核心要点
老金分享Google最新AI Agent指南:让AI从“动嘴”到“动手”。Agent=大脑(模型)+手(工具)+协调系统,可自主完成任务。通过ReAct模式、多Agent协作与RAG等技术,实现真正自动化。入门推荐LangChain,文末附开源知识库链接。
482 118
|
1天前
|
人工智能 自然语言处理 API
n8n:流程自动化、智能化利器
流程自动化助你在重复的业务流程中节省时间,可通过自然语言直接创建工作流啦。
246 3
n8n:流程自动化、智能化利器
|
3天前
|
机器学习/深度学习 测试技术 数据中心
九坤量化开源IQuest-Coder-V1,代码大模型进入“流式”训练时代
2026年首日,九坤创始团队成立的至知创新研究院开源IQuest-Coder-V1系列代码大模型,涵盖7B至40B参数,支持128K上下文与GQA架构,提供Base、Instruct、Thinking及Loop版本。采用创新Code-Flow训练范式,模拟代码演化全过程,提升复杂任务推理能力,在SWE-Bench、LiveCodeBench等基准领先。全阶段checkpoint开放,支持本地部署与微调,助力研究与应用落地。
374 1
|
2天前
|
安全 API 开发者
手把手带你使用无影 AgentBay + AgentScope 完成一站式智能体开发部署
阿里云无影 AgentBay 作为一个面向 AI 智能体开发的云端 GUI 沙箱服务,已集成至阿里巴巴通义实验室开源的 AgentScope 框架,助力开发者快速构建安全、高效的智能体应用。
215 1

热门文章

最新文章