鱼C论坛

 找回密码
 立即注册
查看: 645|回复: 1

[已解决]关于overflow和position的联动问题

[复制链接]
发表于 2023-3-7 16:48:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目前自学html中,写了一个二级菜单的案例,遇到了一些难以解释的问题。
首先给box设置了overflow: scroll。
当没有给item和item>ul设置position定位时,鼠标滑动到二级菜单可以通过red背景色看到是box被撑开了,且overflow: scroll没有生效。见代码1。
但是当设置定位后,鼠标滑动到二级菜单可以看到overflow: scroll又生效了。见代码2
请教各位大佬,这是什么原因导致的呢?

代码1
  1. <!DOCTYPE html>
  2. <html lang="en">

  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>Document</title>
  8.     <style>
  9.         * {
  10.             margin: 0;
  11.             padding: 0;
  12.         }
  13.         .box{
  14.             width: 400px;
  15.             margin: 0 auto;
  16.             background-color: red;
  17.             overflow: scroll;
  18.         }
  19.         ul{
  20.             list-style: none;
  21.         }
  22.         .box .item{
  23.             float: left;
  24.             width: 148px;
  25.             line-height: 40px;
  26.             text-align: center;
  27.             border: 1px solid blue;
  28.             background: blue;
  29.             color: white;
  30.         }

  31.         .item{
  32.             /* position: relative; */
  33.         }
  34.         
  35.         .item ul{
  36.             display: none;
  37.             background: white;
  38.             color: black;
  39.             /* position: absolute;
  40.             left: 0;
  41.             top: 40px;
  42.             width: 148px; */
  43.         }
  44.         .item:hover {
  45.             background: lightblue;
  46.         }
  47.         .item:hover ul{
  48.             display: block;
  49.         }

  50.         .item li:hover{
  51.             color: bisque;
  52.         }
  53.         .content{
  54.             height: 100px;
  55.             background: yellow;
  56.         }
  57.     </style>
  58. </head>

  59. <body>
  60.     <ul class="box">
  61.         <li class="item">视频教程
  62.             <ul>
  63.                 <li>全部视频教程</li>
  64.                 <li>HTML5视频教程</li>
  65.                 <li>JAVA视频教程</li>
  66.                 <li>PYTHON视频教程</li>
  67.             </ul>
  68.         </li>
  69.         <li class="item">认证考试
  70.             <ul>
  71.                 <li>pmp</li>
  72.                 <li>红帽</li>
  73.             </ul>
  74.         </li>
  75.     </ul>


  76. </body>

  77. </html>
复制代码


代码2
  1. <!DOCTYPE html>
  2. <html lang="en">

  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>Document</title>
  8.     <style>
  9.         * {
  10.             margin: 0;
  11.             padding: 0;
  12.         }
  13.         .box{
  14.             width: 400px;
  15.             margin: 0 auto;
  16.             background-color: red;
  17.             overflow: scroll;
  18.         }
  19.         ul{
  20.             list-style: none;
  21.         }
  22.         .box .item{
  23.             float: left;
  24.             width: 148px;
  25.             line-height: 40px;
  26.             text-align: center;
  27.             border: 1px solid blue;
  28.             background: blue;
  29.             color: white;
  30.         }

  31.         .item{
  32.             position: relative;
  33.         }
  34.         
  35.         .item ul{
  36.             display: none;
  37.             background: white;
  38.             color: black;
  39.             position: absolute;
  40.             left: 0;
  41.             top: 40px;
  42.             width: 148px;
  43.         }
  44.         .item:hover {
  45.             background: lightblue;
  46.         }
  47.         .item:hover ul{
  48.             display: block;
  49.         }

  50.         .item li:hover{
  51.             color: bisque;
  52.         }
  53.         .content{
  54.             height: 100px;
  55.             background: yellow;
  56.         }
  57.     </style>
  58. </head>

  59. <body>
  60.     <ul class="box">
  61.         <li class="item">视频教程
  62.             <ul>
  63.                 <li>全部视频教程</li>
  64.                 <li>HTML5视频教程</li>
  65.                 <li>JAVA视频教程</li>
  66.                 <li>PYTHON视频教程</li>
  67.             </ul>
  68.         </li>
  69.         <li class="item">认证考试
  70.             <ul>
  71.                 <li>pmp</li>
  72.                 <li>红帽</li>
  73.             </ul>
  74.         </li>
  75.     </ul>


  76. </body>

  77. </html>
复制代码

最佳答案
2023-4-7 11:59:39
因为你为.item设置了float:left,所以此时的.item是脱离了文档流(也就是说.item悬浮在box的上面)当设置定位后产生了BFC,BFC可以有清除浮动的功能,所以下拉菜单就显示在box看不见的区域了(应该是这个意思吧???)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-7 11:59:39 | 显示全部楼层    本楼为最佳答案   
因为你为.item设置了float:left,所以此时的.item是脱离了文档流(也就是说.item悬浮在box的上面)当设置定位后产生了BFC,BFC可以有清除浮动的功能,所以下拉菜单就显示在box看不见的区域了(应该是这个意思吧???)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 02:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表