CSS 菜单,当内容较长时,下拉菜单在桌面视图上不起作用

我试图将这两个导航栏和粘性响应结合起来

这个想法是结合https://www.w3schools.com/howto/howto_js_navbar_sticky.asp 和https://www.w3schools.com/howto/howto_js_responsive_navbar_dropdown.asp

到目前为止它运行良好,请参见下面的示例。

function myFunction2() {

  var x = document.getElementById("myTopnav");

  if (x.className === "topnav") {

    x.className += " responsive";

  } else {

    x.className = "topnav";

  }

}

window.onscroll = function() {myFunction()};


var navbar = document.getElementById("navbar");

var sticky = navbar.offsetTop;


function myFunction() {

  if (window.pageYOffset >= sticky) {

    navbar.classList.add("sticky")

  } else {

    navbar.classList.remove("sticky");

  }

}

<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>


<div class="header">

  <h2>Scroll Down</h2>

  <p>Scroll down to see the sticky effect.</p>

</div>


<div id="navbar">

<div class="topnav" id="myTopnav">

  <a href="#home" class="active">Home</a>

  <a href="#news">News</a>

  <a href="#contact">Contact</a>

  <div class="dropdown">

    <button class="dropbtn">Dropdown   

      <i class="fa fa-caret-down"></i>

    </button>

    <div class="dropdown-content">

      <a href="#">Link 1</a>

      <a href="#">Link 2</a>

      <a href="#">Link 3</a>

    </div>

  </div> 

  <a href="#about">About</a>

  <a href="javascript:void(0);" style="font-size:15px;" class="icon" onclick="myFunction2()">&#9776;</a>

</div>

</div>

皈依舞
浏览 116回答 2
2回答

慕工程0101907

#navbar {&nbsp;overflow: hidden; /* remove this line & that's it, problem solved, see the example below */&nbsp;background-color: #333;}当#nav单独的时候,我的意思是它没有类,overflow: hidden;那么不会有任何问题。但是,当您向下滚动时, 的类别与.sticky一起出现#nav,就会overflow: hidden;出现问题。因为.stickyis fixed& width: 100%;no mention of ,height这就是为什么内容.dropdown-content不可见的原因,它在那里,但是隐藏了,因为它从#navbar.stickyfunction myFunction2() {&nbsp; var x = document.getElementById("myTopnav");&nbsp; if (x.className === "topnav") {&nbsp; &nbsp; x.className += " responsive";&nbsp; } else {&nbsp; &nbsp; x.className = "topnav";&nbsp; }}window.onscroll = function() {myFunction()};var navbar = document.getElementById("navbar");var sticky = navbar.offsetTop;function myFunction() {&nbsp; if (window.pageYOffset >= sticky) {&nbsp; &nbsp; navbar.classList.add("sticky")&nbsp; } else {&nbsp; &nbsp; navbar.classList.remove("sticky");&nbsp; }}#navbar .topnav {&nbsp; overflow: hidden;&nbsp; background-color: #333;}#navbar .topnav a {&nbsp; float: left;&nbsp; display: block;&nbsp; color: #f2f2f2;&nbsp; text-align: center;&nbsp; padding: 14px 16px;&nbsp; text-decoration: none;&nbsp; font-size: 17px;}.active {&nbsp; background-color: #4CAF50;&nbsp; color: white;}#navbar .topnav .icon {&nbsp; display: none;}.dropdown {&nbsp; float: left;&nbsp; overflow: hidden;}.dropdown .dropbtn {&nbsp; font-size: 17px;&nbsp; &nbsp;&nbsp;&nbsp; border: none;&nbsp; outline: none;&nbsp; color: white;&nbsp; padding: 14px 16px;&nbsp; background-color: inherit;&nbsp; font-family: inherit;&nbsp; margin: 0;}.dropdown-content {&nbsp; display: none;&nbsp; position: absolute;&nbsp; background-color: #f9f9f9;&nbsp;&nbsp;&nbsp; min-width: 160px;&nbsp; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);&nbsp; z-index: 1;}.dropdown-content a {&nbsp; float: none;&nbsp; color: black!important;&nbsp; padding: 12px 16px;&nbsp; text-decoration: none;&nbsp; display: block;&nbsp; text-align: left;}#navbar .topnav a:hover, .dropdown:hover .dropbtn {&nbsp; background-color: #555;&nbsp; color: white;}.dropdown-content a:hover {&nbsp; background-color: #ddd;&nbsp; color: black;}.dropdown:hover .dropdown-content {&nbsp; display: block;&nbsp;&nbsp;}@media screen and (max-width: 600px) {&nbsp; #navbar .topnav a:not(:first-child), .dropdown .dropbtn {&nbsp; &nbsp; display: none;&nbsp; }&nbsp; #navbar .topnav a.icon {&nbsp; &nbsp; float: right;&nbsp; &nbsp; display: block;&nbsp; }}@media screen and (max-width: 600px) {&nbsp; #navbar .topnav.responsive {position: relative;}&nbsp; #navbar .topnav.responsive .icon {&nbsp; &nbsp; position: absolute;&nbsp; &nbsp; right: 0;&nbsp; &nbsp; top: 0;&nbsp; }&nbsp; #navbar .topnav.responsive a {&nbsp; &nbsp; float: none;&nbsp; &nbsp; display: block;&nbsp; &nbsp; text-align: left;&nbsp; }&nbsp; #navbar .topnav.responsive .dropdown {float: none;}&nbsp; #navbar .topnav.responsive .dropdown-content {position: relative;}&nbsp; #navbar .topnav.responsive .dropdown .dropbtn {&nbsp; &nbsp; display: block;&nbsp; &nbsp; width: 100%;&nbsp; &nbsp; text-align: left;&nbsp; }}.header {&nbsp; background-color: #f1f1f1;&nbsp; padding: 30px;&nbsp; text-align: center;}#navbar {&nbsp; /* overflow: hidden;&nbsp; remove this */&nbsp; background-color: #333;}#navbar a {&nbsp; float: left;&nbsp; display: block;&nbsp; color: #f2f2f2;&nbsp; text-align: center;&nbsp; padding: 14px 16px;&nbsp; text-decoration: none;&nbsp; font-size: 17px;}#navbar a:hover {&nbsp; background-color: #ddd;&nbsp; color: black;}#navbar a.active {&nbsp; background-color: #4CAF50;&nbsp; color: white;}.content {&nbsp; padding: 16px;}.sticky {&nbsp; position: fixed;&nbsp; top: 0;&nbsp; width: 100%;}.sticky + .content {&nbsp; padding-top: 60px;}<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/><div class="header">&nbsp; <h2>Scroll Down</h2>&nbsp; <p>Scroll down to see the sticky effect.</p></div><div id="navbar"><div class="topnav" id="myTopnav">&nbsp; <a href="#home" class="active">Home</a>&nbsp; <a href="#news">News</a>&nbsp; <a href="#contact">Contact</a>&nbsp; <div class="dropdown">&nbsp; &nbsp; <button class="dropbtn">Dropdown&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; <i class="fa fa-caret-down"></i>&nbsp; &nbsp; </button>&nbsp; &nbsp; <div class="dropdown-content">&nbsp; &nbsp; &nbsp; <a href="#">Link 1</a>&nbsp; &nbsp; &nbsp; <a href="#">Link 2</a>&nbsp; &nbsp; &nbsp; <a href="#">Link 3</a>&nbsp; &nbsp; </div>&nbsp; </div>&nbsp;&nbsp; <a href="#about">About</a>&nbsp; <a href="javascript:void(0);" style="font-size:15px;" class="icon" onclick="myFunction2()">&#9776;</a></div></div><div class="content">&nbsp; <h3>Sticky Navigation Example</h3>&nbsp; <p>The navbar will stick to the top when you reach its scroll position.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>&nbsp; <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p></div>

30秒到达战场

更改下拉内容的位置。dropdown-content&nbsp;:&nbsp;relative;并相应地调整其他CSS。事情是您的下拉内容正在工作,但下拉列表的位置在窗口中不相关。如果您在单击后向上滚动。你可以看到你的下拉内容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript