• 前端开发面试题—CSS清除浮动的方法


    📚文章目录

    🧽什么是浮动布局

    🧽clear属性​​​​​​

    🧽清除浮动其他方法

    🧼使用CSS overflow属性

    🧼使用CSS ::after伪元素(clearfix Hack)


    今天分享一下我遇到的一个面试题,是关于CSS浮动布局的问题,问的是CSS清除浮动的方法有哪些?

    🧽什么是浮动布局

    • 首先我们要知道CSS浮动布局是使用的float属性来设置的,CSS的float属性将元素放在其容器的左侧或右侧,允许文本和内联元素环绕它。该元素将从页面的正常流中删除,但仍保留为流的一部分。(与绝对定位相反, 绝对定位的元素忽略float属性)
    • float的属性值

      描述
      left元素向左浮动。
      right元素向右浮动。
      none默认值。元素不浮动,并会显示在其在文本中出现的位置。
      inherit规定应该从父元素继承 float 属性的值。
    • 使用语法
      1. /* Keyword values */
      2. float: left;
      3. float: right;
      4. float: none;
      5. float: inline-start;
      6. float: inline-end;
      7. /* Global values */
      8. float: inherit;
      9. float: initial;
      10. float: revert;
      11. float: revert-layer;
      12. float: unset;
      13. /*
      14. left
      15. 元素必须浮动在其包含块的左侧。
      16. right
      17. 元素必须浮动在其包含块的右侧。
      18. none
      19. 元素不得浮动。
      20. inline-start
      21. 元素必须浮动在其包含块的起始侧。左边是脚本,右边是脚本。ltrrtl
      22. inline-end
      23. 元素必须浮动在其包含块的末端。这是脚本的右侧,脚本的左侧。ltrrtl
      24. */
    • 具体在页面中怎么浮动就不演示了

    🧽clear属性​​​​​​

    • CSS的clear属性指定一个元素是否必须移动 (清除浮动后) 到在它之前的浮动元素下面。clear 属性适用于浮动和非浮动元素。
    • clear的属性值
      描述
      left在左侧不允许浮动元素。
      right在右侧不允许浮动元素。
      both在左右两侧均不允许浮动元素。
      none默认值。允许浮动元素出现在两侧。
      inherit规定应该从父元素继承 clear 属性的值。
    • 使用语法
      1. /* Keyword values */
      2. clear: none;
      3. clear: left;
      4. clear: right;
      5. clear: both;
      6. clear: inline-start;
      7. clear: inline-end;
      8. /* Global values */
      9. clear: inherit;
      10. clear: initial;
      11. clear: unset;
      12. /*
      13. none
      14. 元素不会被向下移动以清除浮动。
      15. left
      16. 元素被向下移动以清除左浮动。
      17. right
      18. 元素被向下移动以清除右浮动。
      19. both
      20. 元素被向下移动以清除左右浮动。
      21. inline-start
      22. 元素被向下移动以清除其包含块的起始侧浮动,即 ltr 时清除左浮动,rtl 时清除右浮动。
      23. inline-end
      24. 元素被向下移动以清除其包含块的结束侧浮动,即 ltr 时清除右浮动,rtl 时清除左浮动。
      25. */
    • 其中,使用带clear属性(设置为clear:both)空标签就是清除浮动的方法之一

    🧽清除浮动其他方法

    • 🧼使用CSS overflow属性

    • 如果一个元素比包含它的元素高,并且它是浮动的,它将“溢出”到其容器之外:

      然后我们可以向包含元素添加 overflow: auto; overflow: hidden;,来解决此问题

      1. #container {
      2. overflow: auto;
      3. /*overflow: hidden;*/
      4. }
    • 🧼使用CSS ::after伪元素(clearfix Hack

    • 如果一个元素里只有浮动元素,那它的高度会是 0。如果你想要它自适应即包含所有浮动元素,那你需要清除它的子元素。一种方法叫做clearfix,即clear一个不浮动的 ::after 伪元素。
      1. /*
      2. ::after 选择器向选定的元素之后插入内容
      3. content:" "; (注意这里有一个空格)生成内容为空
      4. display: block;
      5. clear:both; 清除前面元素浮动带来的影响
      6. */
      7. .container::after {
      8. content: "";
      9. display: block;
      10. clear: both;
      11. }

      另一种写法

      1. .container::after {
      2.     content: ".";
      3.     display: block;
      4.     clear: both;
      5.     visibility: hidden;
      6.     line-height: 0;
      7.     height: 0;
      8. }
    • 具体在页面中的清除效果就不演示了

  • 相关阅读:
    小程序毕设作品之微信二手交易小程序毕业设计成品(3)后台功能
    基于PHP+MySQL蚕豆酱厂管理系统的设计与实现
    Clover引导都支持哪些.efi文件
    40w粉拿下900w播放!这个UP主在B站发起1元买水挑战!
    HBuilderX代码变量名称翻译插件
    中移链(基于EOS)DDC-SDK实战-如何集成中移链DDC-SDK
    L85.linux命令每日一练 -- 第12章 Linux系统常用内置命令(一)
    原创->CommonsCollections1-DefaultMap链
    神经网络 深度神经网络,深度神经网络应用实例
    阳光明媚的秋天
  • 原文地址:https://blog.csdn.net/weixin_53231455/article/details/126539782