CSS 浮动

浮动

标准文档流组成

  • 块级元素(block)
  • h1~h6 、p 、 div 、列表
  • 内联元素(inline)
  • span 、 a 、 img 、 strong...

    注意:内联标签可以包含于块级标签中,成为它的子元素,而反过来则不成立

    浮动(float)

    float属性

    属性值说明
    left元素向左浮动
    right元素向右浮动
    none默认值;元素不浮动,并会显示在其文本中出现的位置
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
          img{
              float: left;
          }
        </style>
    
    </head>
    <body>
    <img src="../resources/image/sunrise.webp" width="160" height="120" alt="美丽风景">
    <h1>浮动的测试,第一次测试</h1>
    <p>学习CSS的过程很辛苦</p>
    
    
    </body>
    </html>
    

    在这里插入图片描述

    当添加多张图片时,我们来看一看他们是怎么排列的

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
          img{
              float: left;
          }
        </style>
    
    </head>
    <body>
    <img src="../resources/image/sunrise.webp" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/1.jpg" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/2.jpg" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/3.jpg" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/4.jpg" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/5.jpg" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/6.jpg" width="320" height="240" alt="美丽风景">
    
    
    </body>
    </html>
    

    在这里插入图片描述

    当调整窗口时,图片会自动调整位置

    边框塌陷(clear)

    作用:
    浮动元素脱离标准文档流
    清除浮动

    属性值说明
    left在左侧不允许出现浮动元素
    right在右侧不允许出现浮动元素
    both在左、右两侧不允许浮动元素
    none默认值。允许浮动元素出现在两侧

    元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性。
    clear 属性指定元素两侧不能出现浮动元素。
    使用 clear 属性往文本中添加图片廊

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
          img{
              float: left;
              margin: 20px;
          }
            #one{
               clear: both;
                margin-bottom: 2px;
            }
    
        </style>
    
    </head>
    <body>
    <h1>图片</h1>
    <img src="../resources/image/sunrise.webp" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/1.jpg" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/2.jpg" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/3.jpg" width="320" height="240" alt="美丽风景">
    <h2 id="one">第二行</h2>
    <img src="../resources/image/4.jpg" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/5.jpg" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/6.jpg" width="320" height="240" alt="美丽风景">
    <img src="../resources/image/7.jpg" width="320" height="240" alt="美丽风景">
    
    
    </body>
    </html>
    

    在这里插入图片描述

    如果这里不添加clear,就会造成,文字出现在图片右侧的情况

    display属性

    属性值说明
    block块级元素的默认值,元素会被显示为块级元素,该元素前后会带有换行符
    inline内联元素的默认值。元素会被显示为内联元素,该元素前后没有换行符
    inline-block行内块元素,元素既具有内联元素的特性,也具有块元素的特性
    none设置元素不会被显示

    块级元素与行级元素的转变(block、inline)
    控制块元素排到一行(inline-block)
    控制元素的显示和隐藏(none)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            p{display:inline-block}
        </style>
    
    </head>
    <body>
    <p>这两个段落生成内联盒子,和它的结果</p>
    
    <p>这两个元素之间没有距离。</p>
    
    </body>
    </html>
    

    在这里插入图片描述

    块元素排在一起

    有两种方法:
    inline-block
    float

    溢出处理

    Overflow属性

    属性值说明
    visible默认值。内容不会被修剪,会呈现在盒子之外
    hidden内容会被修剪,并且其余内容是不可见的
    scroll内容会被修剪,但是浏览器会显示滚动条以便查看其余内容
    auto如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
           .one{
               background: blue;
               width: 200px;
               height: 200px;
               overflow: scroll;
           }
           .two{
               background: green;
               width: 200px;
               height: 200px;
               overflow: hidden;
           }
           .three{
               background: red;
               width: 200px;
               height: 200px;
               overflow: auto;
           }
           .four{
               background: yellow;
               width: 200px;
               height: 200px;
               overflow: visible;
           }
    
        </style>
    
    </head>
    <body>
    <h2>overflow: scroll</h2>
    <div class="one">杯子在多数时候,盛装的仅仅是半杯水,遇见的那个人依然似乎无法填补内心的空洞,时间一点一点地过去,水也一点一点地蒸发掉,你开始觉得他越来越无法满足你的全部幻想全部期待,对望的时候,彼此的眼里充满了空洞犹疑。杯子里面的水终于全部消失。分离是如此容易的一件事,就连曾经淡淡的水痕都刹那间无影无踪。生活似乎回到了最初的样子,天依旧蓝得透心,城市依旧匆忙得落寞。只是你不明白,为什么在每一个狂欢之夜,隐藏在人群中望着烟花绽放的夜空,会一边默默地流泪,一边强作笑颜。你对自己说是因为感动于这绚烂,没错,一切都太绚烂,绚烂得已经让你不知所措,绚烂得已经让你相信一切希望与期待都未曾出现过。于是决定走开,带着一只空旷而干涸的杯子,有的时候一边走一边疑惑,世界那么大,为什么那么渺小孤单的一滴雨还是会打在自己的脸庞上呢,人潮汹涌,流走的水再也无法收集,过去的心境再也无法找寻。有的时候,你在一些奇怪的梦里恍惚地以为曾经的一汪水,还心满意足地躺在自己杯子里面,只有醒过来的时候才了解,即使是沧海,多年之后也化作了桑田。</div>
    
    <h2>overflow: hidden</h2>
    <div class="two">杯子在多数时候,盛装的仅仅是半杯水,遇见的那个人依然似乎无法填补内心的空洞,时间一点一点地过去,水也一点一点地蒸发掉,你开始觉得他越来越无法满足你的全部幻想全部期待,对望的时候,彼此的眼里充满了空洞犹疑。杯子里面的水终于全部消失。分离是如此容易的一件事,就连曾经淡淡的水痕都刹那间无影无踪。生活似乎回到了最初的样子,天依旧蓝得透心,城市依旧匆忙得落寞。只是你不明白,为什么在每一个狂欢之夜,隐藏在人群中望着烟花绽放的夜空,会一边默默地流泪,一边强作笑颜。你对自己说是因为感动于这绚烂,没错,一切都太绚烂,绚烂得已经让你不知所措,绚烂得已经让你相信一切希望与期待都未曾出现过。于是决定走开,带着一只空旷而干涸的杯子,有的时候一边走一边疑惑,世界那么大,为什么那么渺小孤单的一滴雨还是会打在自己的脸庞上呢,人潮汹涌,流走的水再也无法收集,过去的心境再也无法找寻。有的时候,你在一些奇怪的梦里恍惚地以为曾经的一汪水,还心满意足地躺在自己杯子里面,只有醒过来的时候才了解,即使是沧海,多年之后也化作了桑田。</div>
    
    <h2>overflow: auto</h2>
    <div class="three">杯子在多数时候,盛装的仅仅是半杯水,遇见的那个人依然似乎无法填补内心的空洞,时间一点一点地过去,水也一点一点地蒸发掉,你开始觉得他越来越无法满足你的全部幻想全部期待,对望的时候,彼此的眼里充满了空洞犹疑。杯子里面的水终于全部消失。分离是如此容易的一件事,就连曾经淡淡的水痕都刹那间无影无踪。生活似乎回到了最初的样子,天依旧蓝得透心,城市依旧匆忙得落寞。只是你不明白,为什么在每一个狂欢之夜,隐藏在人群中望着烟花绽放的夜空,会一边默默地流泪,一边强作笑颜。你对自己说是因为感动于这绚烂,没错,一切都太绚烂,绚烂得已经让你不知所措,绚烂得已经让你相信一切希望与期待都未曾出现过。于是决定走开,带着一只空旷而干涸的杯子,有的时候一边走一边疑惑,世界那么大,为什么那么渺小孤单的一滴雨还是会打在自己的脸庞上呢,人潮汹涌,流走的水再也无法收集,过去的心境再也无法找寻。有的时候,你在一些奇怪的梦里恍惚地以为曾经的一汪水,还心满意足地躺在自己杯子里面,只有醒过来的时候才了解,即使是沧海,多年之后也化作了桑田。</div>
    
    <h2>overflow: visible</h2>
    <div class="four">杯子在多数时候,盛装的仅仅是半杯水,遇见的那个人依然似乎无法填补内心的空洞,时间一点一点地过去,水也一点一点地蒸发掉,你开始觉得他越来越无法满足你的全部幻想全部期待,对望的时候,彼此的眼里充满了空洞犹疑。杯子里面的水终于全部消失。分离是如此容易的一件事,就连曾经淡淡的水痕都刹那间无影无踪。生活似乎回到了最初的样子,天依旧蓝得透心,城市依旧匆忙得落寞。只是你不明白,为什么在每一个狂欢之夜,隐藏在人群中望着烟花绽放的夜空,会一边默默地流泪,一边强作笑颜。你对自己说是因为感动于这绚烂,没错,一切都太绚烂,绚烂得已经让你不知所措,绚烂得已经让你相信一切希望与期待都未曾出现过。于是决定走开,带着一只空旷而干涸的杯子,有的时候一边走一边疑惑,世界那么大,为什么那么渺小孤单的一滴雨还是会打在自己的脸庞上呢,人潮汹涌,流走的水再也无法收集,过去的心境再也无法找寻。有的时候,你在一些奇怪的梦里恍惚地以为曾经的一汪水,还心满意足地躺在自己杯子里面,只有醒过来的时候才了解,即使是沧海,多年之后也化作了桑田。</div>
    
    
    
    
    
    </body>
    </html>
    

    在这里插入图片描述
    在这里插入图片描述

    解决父级边框塌陷的方法

    • 浮动元素后面加空div
    • 简单,空div会造成HTML代码冗余
    • 设置父元素的高度
    • 简单,元素固定高会降低扩展性
    • 父级添加overflow属性
    • 简单,下拉列表框的场景不能用
    • 父级添加伪类after
    • 写法比上面稍微复杂一点,但是没有副作用,推荐使用

    inline-block和float的区别

    • display:inline-block
      1. 可以让元素排在一行,并且支持宽度和高度,代码实现起来方便
      2. 位置方向不可控制,会解析空格
      3. IE 6、IE 7上不支持
    • float
      1. 可以让元素排在一行并且支持宽度和高度,可以决定排列方向
      2. float 浮动以后元素脱离文档流,会对周围元素产生影响,必须在它的父 级上添加清除浮动的样式
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值