为了账号安全,请及时绑定邮箱和手机立即绑定

我如何努力将台式机/笔记本电脑上的固定侧边栏菜单切换到手机/平板电脑上的汉堡菜单

我如何努力将台式机/笔记本电脑上的固定侧边栏菜单切换到手机/平板电脑上的汉堡菜单

湖上湖 2023-09-11 15:13:05
尽管我很清楚自己想要实现什么目标,但我真的很难让它发挥作用。我想要实现的是我的网站的响应式布局,其中侧边栏菜单固定在台式机和笔记本电脑上,但随后切换到移动设备和平板电脑的汉堡菜单?<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1"><style>body {  font-family: "Lato", sans-serif;}.sidebar {  height: 100%;  width: 0;  position: fixed;  z-index: 1;  top: 0;  left: 0;  background-color: #111;  overflow-x: hidden;  transition: 0.5s;  padding-top: 60px;}.sidebar a {  padding: 9px 8px 8px 32px;  text-decoration: none;  font-size: 25px;  color: #818181;  display: block;  transition: 0.3s;}.sidebar a:hover {  color: #f1f1f1;}.sidebar .closebtn {  position: absolute;  top: 0;  right: 25px;  font-size: 36px;  margin-left: 50px;}.openbtn {  font-size: 20px;  cursor: pointer;  background-color: #111;  color: white;  padding: 10px 15px;  border: none;}.openbtn:hover {  background-color: #444;}#main {  transition: margin-left .5s;  padding: 16px;}/* On smaller screens, where height is less than 450px, change the style of the sidenav (less padding and a smaller font size) */@media screen and (max-height: 450px) {  .sidebar {padding-top: 15px;}  .sidebar a {font-size: 18px;}}</style></head><body><div id="mySidebar" class="sidebar">  <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">×</a>  <a href="#">About</a>  <a href="#">Services</a>  <a href="#">Clients</a>  <a href="#">Contact</a></div><div id="main">  <button class="openbtn" onclick="openNav()">☰ Open Sidebar</button>    <h2>Collapsed Sidebar</h2>  <p>Click on the hamburger menu/bar icon to open the sidebar, and push this content to the right.</p></div><script>function openNav() {  document.getElementById("mySidebar").style.width = "250px";  document.getElementById("main").style.marginLeft = "250px";}function closeNav() {  document.getElementById("mySidebar").style.width = "0";  document.getElementById("main").style.marginLeft= "0";}</script>   </body></html> 
查看完整描述

1 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

您只需要在通过 JS 切换菜单时设置要更改的值(width、等),然后将它们更改为您最初使用该菜单时使用的值。此外,您可能想要隐藏和显示切换按钮。margin-leftmedia query


这是一种方法:


body {

  font-family: "Lato", sans-serif;

}


.sidebar {

  height: 100%;

  width: 250px;

  position: fixed;

  z-index: 1;

  top: 0;

  left: 0;

  background-color: #111;

  overflow-x: hidden;

  transition: 0.5s;

  padding-top: 60px;

}


.sidebar a {

  padding: 9px 8px 8px 32px;

  text-decoration: none;

  font-size: 25px;

  color: #818181;

  display: block;

  transition: 0.3s;

}


.sidebar a:hover {

  color: #f1f1f1;

}


.sidebar .closebtn {

  position: absolute;

  top: 0;

  right: 25px;

  font-size: 36px;

  margin-left: 50px;

  display: none;

}


.openbtn {

  font-size: 20px;

  cursor: pointer;

  background-color: #111;

  color: white;

  padding: 10px 15px;

  border: none;

  display: none;

}


.openbtn:hover {

  background-color: #444;

}


#main {

  transition: margin-left .5s;

  padding: 16px;

  margin-left: 250px;

}



/* On smaller screens, where height is less than 450px, change the style of the sidenav (less padding and a smaller font size) */


@media screen and (max-height: 450px) {

  .sidebar {

    padding-top: 15px;

    width: 0;

  }

  .sidebar a {

    font-size: 18px;

  }

  .openbtn {

    display: block;

  }

  .sidebar .closebtn {

    display: block;

  }

  #main {

    margin-left: 0;

  }

}

<!DOCTYPE html>

<html>


<head>

  <meta name="viewport" content="width=device-width, initial-scale=1">

</head>


<body>


  <div id="mySidebar" class="sidebar">

    <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">×</a>

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

    <a href="#">Services</a>

    <a href="#">Clients</a>

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

  </div>


  <div id="main">

    <button class="openbtn" onclick="openNav()">☰ Open Sidebar</button>

    <h2>Collapsed Sidebar</h2>

    <p>Click on the hamburger menu/bar icon to open the sidebar, and push this content to the right.</p>

  </div>

  <script>

    function openNav() {

      document.getElementById("mySidebar").style.width = "250px";

      document.getElementById("main").style.marginLeft = "250px";

    }


    function closeNav() {

      document.getElementById("mySidebar").style.width = "0";

      document.getElementById("main").style.marginLeft = "0";

    }

  </script>

</body>


</html>

小提琴: https: //jsfiddle.net/1czk379m/2/

编辑:切换菜单后调整窗口大小时,样式之间似乎存在一些冲突。closeNav()更改了删除元素的内联样式的操作。也改为.sidebaron #mySidebarcss。

看看更新后的小提琴


查看完整回答
反对 回复 2023-09-11
  • 1 回答
  • 0 关注
  • 68 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信