一个用户aaa 2024-05-08 12:40 采纳率: 40%
浏览 5
已结题

html水平导航栏overflow属性

为什么水平导航栏设置为overflow:visible后无法全部可见

<!DOCTYPE html>
<html>
<head>
<style>
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  background-color: #333;
}

li {
  float: left;
}

li a {
  display: inline-block;
  color: white;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}

li a:hover {
  background-color: #111;
}

.active {
  background-color: red;
}
</style>
</head>
<body>

<ul>
  <li><a href="#home" class="active">Home</a></li>
  <li><a href="#news">News</a></li>
  <li><a href="#contact">Contact</a></li>
  <li><a href="#about">About</a></li>
</ul>

</body>
</html>

第九行的overflow:hiden属性改为visible后只可见第一个“home”元素

img

img

展开全部

  • 写回答

2条回答 默认 最新

  • 专家-皆知 2024-05-08 12:42
    关注

    引自免费微信小程序:皆我百晓生

    请检查是否有其他CSS属性如width、float或position导致布局问题,调整相应样式以适应内容。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    专家-皆知 回复 一个用户aaa 2024-05-08 12:43

    在您提供的HTML和CSS代码中,水平导航栏之所以在将overflow属性从hidden更改为visible后只能显示第一个“Home”元素,是因为float: left;导致了其他列表项溢出到下一行。要解决这个问题,您可以尝试以下方法之一:

    方法一:使用Flexbox布局 通过替换现有的浮动(float: left;)样式,使用Flexbox布局可以让所有列表项在同一行内,并且可以自动调整它们的大小。这样即使设置了overflow: visible;,所有的菜单项也会并排显示。

    修改后的CSS部分如下:

    ul {
      list-style-type: none;
      margin: 0;
      padding: 0;
      background-color: #333;
      display: flex;
      justify-content: space-between; /* 这会让每个项目之间保持均匀的距离 */
    }
    
    li a {
      display: block; /* 更改为block,以便于适应新的Flexbox布局 */
      color: white;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
    }
    
    li a:hover {
      background-color: #111;
    }
    
    .active {
      background-color: red;
    }
    

    这是修改后的完整HTML和CSS代码:

    <!DOCTYPE html>
    <html>
    <head>
    <style>
    ul {
      list-style-type: none;
      margin: 0;
      padding: 0;
      background-color: #333;
      display: flex;
      justify-content: space-between;
    }
    
    li a {
      display: block;
      color: white;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
    }
    
    li a:hover {
      background-color: #111;
    }
    
    .active {
      background-color: red;
    }
    </style>
    </head>
    <body>
    
    <ul>
      <li><a href="#home" class="active">Home</a></li>
      <li><a href="#news">News</a></li>
      <li><a href="#contact">Contact</a></li>
      <li><a href="#about">About</a></li>
    </ul>
    
    </body>
    </html>
    

    方法二:使用Grid布局 如果您想使用Grid布局,可以按照以下方式更改CSS:

    ul {
      list-style-type: none;
      margin: 0;
      padding: 0;
      background-color: #333;
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
      gap: 10px; /* 设置列之间的间距 */
    }
    
    li a {
      display: block;
      color: white;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
    }
    
    li a:hover {
      background-color: #111;
    }
    
    .active {
      background-color: red;
    }
    

    这是使用Grid布局的完整HTML和CSS代码:

    <!DOCTYPE html>
    <html>
    <head>
    <style>
    ul {
      list-style-type: none;
      margin: 0;
      padding: 0;
      background-color: #333;
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
      gap: 10px;
    }
    
    li a {
      display: block;
      color: white;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
    }
    
    li a:hover {
      background-color: #111;
    }
    
    .active {
      background-color: red;
    }
    </style>
    </head>
    <body>
    
    <ul>
      <li><a href="#home" class="active">Home</a></li>
      <li><a href="#news">News</a></li>
      <li><a href="#contact">Contact</a></li>
      <li><a href="#about">About</a></li>
    </ul>
    
    </body>
    </html>
    

    两种方法都会让导航栏在不隐藏的情况下正常显示所有链接。选择Flexbox还是Grid取决于您的具体需求和浏览器兼容性要求。

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 5月15日
  • 已采纳回答 5月8日
  • 创建了问题 5月8日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部