从 HTML 到 CSS:开启网页样式之旅(七)—— CSS浮动

从 HTML 到 CSS:开启网页样式之旅(七)------ CSS浮动


前言

  • 在之前的博客中,我们已经详细探讨了 CSS 样式的继承、元素的默认样式、元素间空白问题以及行内块的幽灵空白问题等诸多内容,这些知识为我们构建网页样式打下了坚实的基础。
  • 而今天,我们将聚焦于 CSS 中一个极为重要的布局方式 ------ 浮动,深入了解它的相关概念、特点以及在实际布局中如何运用并处理其产生的影响

一、浮动的简介

  • 最初,浮动是为了实现文字环绕图片的效果而诞生的,
  • 比如在网页中我们想要文字围绕着一张图片进行展示,就可以利用浮动来达成这样的效果。
  • 发展到现在,浮动已然成为主流的页面布局方式之一,它能够帮助我们灵活地对网页中的各种元素进行排版布局,创造出丰富多样的页面结构。

1.没有浮动的代码和效果

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Float Example</title>
    <link rel="stylesheet" href="styles.css">
    <style>
        .container {
            width: 800px;
            margin: 0 auto;
        }
    </style>
</head>

<body>
    <div class="container">
        <img src="../HTMLpart2Bootstrap/bootstrap-5.1.3-dist/图片/HTML5.jpg" width="200" height="200">
        <p class="text">Lorem ipsum dolor sit amet consectetur adipiscing elit. Fuga, esse eveniet. Soluta quas beatae
            aperiam velit voluptatibus at veniam minima mollitia nostrum maxime eveniet eos, totam facilis animi
            laudantium eius placeat earum aspernatur rerum voluptatum, sunt repellat? Quidem recusandae iusto velit
            incidunt veritatis quasi, labore voluptatem odit debitis eum ullam vero illum tempora dignissimos
            voluptatibus eius cumque, optio nulla assumenda! Magnam quisquam laborum doloribus eveniet minima eum!
            Repellat, quibusdam. Illum, consectetur blanditiis fugiat quasi reiciendis inde voluptate rem sequi
            explicabo, temporibus facilis quod tenetur voluptates aliquam aperiam, ducimus sint. Similique mollitia
            illum liquid eos ero suscipit necessitatibus dolore maxime?</p>
    </div>
</body>

</html>

2.加入浮动的代码和效果

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Float Example</title>
    <link rel="stylesheet" href="styles.css">
    <style>
        /* 给图片添加左浮动,使其可以让文字环绕在右侧 */
    img {
    float: left;
    margin-right: 10px; /* 可以设置图片和文字之间的间隔 */
    }
    </style>
    

    
</head>

<body>
    <div class="container">
        <img src="../HTMLpart2Bootstrap/bootstrap-5.1.3-dist/图片/HTML5.jpg" width="200" height="200">
        <p class="text">Lorem ipsum dolor sit amet consectetur adipiscing elit. Fuga, esse eveniet. Soluta quas beatae
            aperiam velit voluptatibus at veniam minima mollitia nostrum maxime eveniet eos, totam facilis animi
            laudantium eius placeat earum aspernatur rerum voluptatum, sunt repellat? Quidem recusandae iusto velit
            incidunt veritatis quasi, labore voluptatem odit debitis eum ullam vero illum tempora dignissimos
            voluptatibus eius cumque, optio nulla assumenda! Magnam quisquam laborum doloribus eveniet minima eum!
            Repellat, quibusdam. Illum, consectetur blanditiis fugiat quasi reiciendis inde voluptate rem sequi
            explicabo, temporibus facilis quod tenetur voluptates aliquam aperiam, ducimus sint. Similique mollitia
            illum liquid eos ero suscipit necessitatibus dolore maxime?</p>
    </div>
</body>

</html>

二、元素浮动后的特点

1. 脱离文档流

元素设浮动后脱离正常文档流,按浮动方向调整位置,不再按原有顺序排列,原位置也不再占据。

2.宽高特性:

浮动前不论何种元素,浮动后默认宽高由内容撑开,也能手动设置宽高,以满足布局要求

3.共用一行:

浮动元素可与其他元素共用一行,多个浮动盒子能依宽度和浮动方向紧凑排列,空间够就不换行,让布局更灵活紧凑

4.margin 特性:

浮动元素不会出现 margin 合并及塌陷问题,能精准设置四个方向的 margin 和 padding 来控制间距与内边距。

5.区别于行内块元素:

浮动元素不像行内块会被当文本处理,不存在空白问题,基于浮动规则排版更精细。

三、浮动小练习

练习 1:盒子 1 右浮动

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>03_浮动的小练习</title>
    <style>
      .outer {
            width: 500px;
            background-color: gray;
            border: 1px solid black;
        }
      .box {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            border: 1px solid black;
            margin: 10px;
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="box box1">1</div>
        <div class="box box2">2</div>
        <div class="box box3">3</div>
    </div>
</body>

效果图

移动后代码

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>03_浮动的小练习</title>
    <style>
      .outer {
            width: 500px;
            background-color: gray;
            border: 1px solid black;
        }
      .box {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            border: 1px solid black;
            margin: 10px;
        }
        .box1 {
            float: right;
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="box box1">1</div>
        <div class="box box2">2</div>
        <div class="box box3">3</div>
    </div>
</body>

在上述代码中,通过给类名为 box1 的 div 元素设置 float: right,使其向右浮动

练习 2:盒子 1 左浮动

移动后图片

移动后代码

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>03_浮动的小练习</title>
    <style>
      .outer {
            width: 500px;
            background-color: gray;
            border: 1px solid black;
        }
      .box {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            border: 1px solid black;
            margin: 10px;
        }
        .box1 {
            float: left;
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="box box1">1</div>
        <div class="box box2">2</div>
        <div class="box box3">3</div>
    </div>
</body>

这里将 box1 的浮动属性设置为 float: left,它就会向左浮动,靠页面左侧显示,后面的文本内容会环绕在它的右侧,实现了左浮动的布局效果。

练习 3:所有盒子都浮动

移动后代码

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>03_浮动的小练习</title>
    <style>
      .outer {
            width: 500px;
            background-color: gray;
            border: 1px solid black;
        }
      .box {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            border: 1px solid black;
            margin: 10px;
            float: left;
        }
        
    </style>
</head>
<body>
    <div class="outer">
        <div class="box box1">1</div>
        <div class="box box2">2</div>
        <div class="box box3">3</div>
    </div>
</body>

给所有类名为 box 的 div 元素都设置 float: left,它们就都会向左浮动,在同一行依次排列(只要一行空间足够),通过设置 margin-right 来控制盒子之间的间距,展现出所有盒子浮动后的布局效果。

练习 4:所有盒子浮动后,盒子 3 落下来

问题代码

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>03_浮动的小练习</title>
    <style>
      .outer {
            width: 500px;
            background-color: gray;
            border: 1px solid black;
        }
      .box {
            width: 200px;
            height: 200px;
            background-color: skyblue;
            border: 1px solid black;
            margin: 10px;
            float: left;
        }
        
    </style>
</head>
<body>
    <div class="outer">
        <div class="box box1">1</div>
        <div class="box box2">2</div>
        <div class="box box3">3</div>
    </div>
</body>

练习 5:所有盒子浮动后,盒子 3 卡住了

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>03_浮动的小练习</title>
    <style>
      .outer {
            width: 500px;
            background-color: gray;
            border: 1px solid black;
        }
      .box {
            width: 200px;
            height: 200px;
            background-color: skyblue;
            border: 1px solid black;
            margin: 10px;
            float: left;
        }
        .box1 {
            height: 230;
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="box box1">1</div>
        <div class="box box2">2</div>
        <div class="box box3">3</div>
    </div>
</body>

只增加盒子1的长度,将三挤下去

|--------------------|
| 非常感谢您的阅读,喜欢的话记得三连哦 |

相关推荐
用户8820932166732 分钟前
Vue组件通信全攻略:从父子传参到全局状态管理,一篇搞定!
前端
Canmick36 分钟前
JavaScript 异步函数健身操
前端·javascript
一曝十寒37 分钟前
那些常见的 HTTP 状态码
前端·http
WildBlue37 分钟前
🚀 React初体验:从“秃头程序员”到“数据魔法师”的奇幻漂流
前端·react.js
JosieBook37 分钟前
【Web应用】若依框架:基础篇14 源码阅读-后端代码分析-课程管理模块前后端代码分析
前端
前端小嘎42 分钟前
被大厂裁员后做的前端工具网站
前端
超级土豆粉42 分钟前
CSS 预处理器与工具
前端·css
量子-Alex1 小时前
【反无人机检测】C2FDrone:基于视觉Transformer网络的无人机间由粗到细检测
网络·transformer·无人机
Jackson__1 小时前
聊聊 JS 中的可选链 ?.
前端
前端小崔1 小时前
前端面试题之ES6保姆级教程
开发语言·前端·javascript·面试·职场和发展·ecmascript·es6