html - 响应式菜单 - 如何?

标签 html css asp.net menu responsive-design

我正在构建一个非常简单的响应式菜单,但在重新排列子菜单时遇到了一些问题。所以基本上我有 4 个菜单点。其中 3 个有子菜单,一个只是一个超链接。菜单的排列与屏幕宽度绑定(bind):

宽屏:

menu point 1 | menu point 2 | menu point 3 | menu point 4  

子菜单应该出现在整个东西的底部

中屏

menu point 1 | menu point 2 
menu point 3 | menu point 4

子菜单应该出现在所选菜单点的正下方,所以如果我点击点 2,子菜单应该出现在两行菜单之间

最小的屏幕

menu point 1
menu point 2
menu point 3
menu point 4

与中间屏幕相同,菜单应出现在所选点的正下方。

所以我的菜单代码实际上只适用于中间屏幕:

<ul id="mainMenu">
  <li>menu point 1 (just hyperlink)</li>
  <li>menu point 2</li>
  <ul id="subMenu2">
    <li> ... </li>
  </ul> 
  <li>menu point 3</li>
  <li>menu point 4</li>
    <ul id="subMenu3">
      <li> ... </li>
    </ul> 
    <ul id="subMenu4">
      <li> ... </li>
    </ul> 
 </ul>

基本上,列表 subMenu2、subMenu3 和 subMenu4 必须针对不同的屏幕尺寸位于不同的位置,因此此版本适用于最小的屏幕:

<ul id="mainMenu">
  <li>menu point 1 (just hyperlink)</li>
  <li>menu point 2</li>
  <ul id="subMenu2">
    <li> ... </li>
  </ul> 
  <li>menu point 3</li>
    <ul id="subMenu3">
      <li> ... </li>
    </ul> 
  <li>menu point 4</li>
    <ul id="subMenu4">
      <li> ... </li>
    </ul> 
 </ul>

我什至不确定这是不是正确的方法!?非常感谢任何提示。

问候,

迈克尔

最佳答案

您可以使用媒体查询为给定屏幕尺寸的任何元素设置样式。只需做这样的事情:

@media (max-width: 768px /* Or whatever size you want */) {
   .myElement {
      /* Styles go here */
   }
}

使用这种方法,您可以根据屏幕大小更改子菜单的位置。另外,您是否考虑过使用下拉菜单?以下是一些有用的链接:

编辑:

这是一个根据屏幕尺寸完全改变 div 位置的工作示例:

HTML

<div></div>

CSS

div {
  position: absolute;
  left: 0;
  top: 0;
  height: 200px;
  width: 200px;
  background: red;
}

@media (max-width: 768px) {
  div {
    left: auto;
    right: 0;
  }
}

Codepen

希望这对您有所帮助!

关于html - 响应式菜单 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257368/

相关文章:

html - 从 codepen.io 修改时间线

css - GWT CssResource 中的基本算法

javascript - 页面过渡向下滑动和弹跳

javascript - 如何通过 Chrome 扩展程序将 CSS 注入(inject)网页?

需要 C# 字边界正则表达式而不是 .Contains()

c# - 数据标注中的错误信息如何本地化?

c# - ASP.NET CORE 文件上传问题

javascript - jQuery 从选择框中显示两个按钮

php - 如何删除两个文本字段之间的空格

html - :After element positioning wrong only in IE :before element is correct