0
点赞
收藏
分享

微信扫一扫

23、HTML/CSS学习笔记之二十三——浮动

千妈小语 2022-02-22 阅读 85

浮动

视觉格式化模型,大体上将页面中盒子的排列分为三种方式:

1、常规流
2、浮动
3、定位

应用场景

  1. 文字环绕
  2. 横向排列

例如,百度主页的菜单栏,这种横向排列可以使用行块盒,也可以使用浮动实现。

横向排列例

浮动的基本特点

修改float属性值为:

left:左浮动,元素靠上靠左,float: left;
right:右浮动,元素靠上靠右,float: right;

默认值为none,即默认情况下,视觉格式化模型为常规流。

特点:

  1. 当一个元素浮动后,元素必定为块盒(更改display属性为block)
  1. 浮动元素的包含块,和常规流一样,为父元素的内容盒

盒子尺寸

1.宽度为auto时,适应内容宽度

因此浮动中的块盒并不独占一行,而是适应内容的多少来调整宽度。
常规流中宽度为auto的作用是将剩余空间吸收。

2.高度为auto时,与常规流一致,适应内容的高度

3.margin为auto时,为0

注意区别常规流中margin为auto时的作用,常规流中,margin水平方向auto吸收剩余空间,垂直方向为0。

4.边框、内边距、百分比设置与常规流一致

盒子排列

  1. 左浮动的盒子靠上靠左排列;
    左浮动

  2. 右浮动的盒子靠上靠右排列;
    右浮动

  3. 浮动盒子在包含块中排列时,会避开常规流块盒;
    避开常规块盒

  4. 常规流块盒在排列时,无视浮动盒子;
    无视浮动
    虽然此处常规流块盒的位置无视浮动盒,但是文字内容却被挤出。

  5. 行盒在排列时,会避开浮动盒子;

利用此点可以做出文字环绕效果:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div class="container">
        <img src="../../图片素材/HTML&CSS.jpg" alt="" style="width: 200px; float: left;">
        <p>
            Lorem ipsum, dolor sit amet consectetur adipisicing elit. Voluptates, autem. Mollitia vitae consectetur assumenda sequi excepturi, magnam doloribus hic officia aut rerum quibusdam enim est ut accusamus recusandae, laboriosam sit reprehenderit fugit velit ratione quam, possimus laudantium ducimus. Voluptatibus minima inventore at sit. Odit magni accusantium, accusamus quaerat earum expedita omnis eaque a modi autem neque explicabo. Corporis ratione tenetur deserunt. Dolor ratione beatae, atque molestias ea autem accusantium at, rerum ducimus velit maxime est aperiam nulla alias nobis architecto doloremque neque adipisci nam incidunt veritatis. Quam, quibusdam consequatur vero natus repudiandae tenetur voluptatem obcaecati pariatur similique, aperiam quod autem sunt corrupti velit repellat odit iste fugit quaerat ipsam! Ea est vitae qui vero nulla eos, modi sit corrupti expedita perferendis, aut blanditiis fugiat. Perferendis nisi fugit ducimus saepe mollitia unde officiis similique magnam dolorem perspiciatis. Natus laboriosam, praesentium beatae vel tenetur repellat dicta cupiditate eligendi in similique est odio culpa iusto hic provident assumenda molestias, perspiciatis placeat! Voluptates eaque ea, iusto commodi, dolorum esse et pariatur repellat fugit dolor architecto eveniet, reprehenderit quam quae. Quae incidunt dolore dignissimos nisi odio debitis sed, placeat neque labore mollitia at beatae adipisci, pariatur culpa aliquid itaque id inventore! Perferendis suscipit voluptas quo sapiente omnis repellendus quam, pariatur similique. Impedit laboriosam neque assumenda? Quibusdam, quis iste dolor quisquam vero ratione beatae cupiditate consequuntur maxime perspiciatis ex molestias aperiam tenetur veritatis possimus necessitatibus aut reprehenderit optio sint eius ipsam aspernatur illum odit unde. Cupiditate atque illo sed, dolorem fuga doloremque nostrum, fugiat commodi corrupti possimus nesciunt quam architecto, animi suscipit velit recusandae reprehenderit maiores! Non ab repudiandae quidem labore tempore debitis illo, aliquid corporis blanditiis possimus accusamus molestias facere laudantium iure sed dolorem tenetur neque doloribus quas temporibus nobis animi ut fuga! Excepturi eum natus praesentium esse eius est accusamus error. Voluptates, magni laborum?
        </p>
    </div>
</body>
</html>

文字环绕
虽然p元素是块盒,位置无视作为浮动盒子的img元素,但是其文字内容包裹了匿名行盒,所以会避开浮动盒子。

高度坍塌

高度坍塌的根源:常规流盒子的自动高度,在计算时,不会考虑浮动盒子

高度坍塌的解决方法:清除浮动(涉及css属性:clear)

关于clear属性:

  • 默认值:none
  • left:清除左浮动,该元素必须出现在前面所有左浮动盒子的下方
  • right:清除右浮动,该元素必须出现在前面所有右浮动盒子的下方
  • both:清除浮动,该元素必须出现在前面所有浮动盒子的下方
举报

相关推荐

0 条评论