html - 基于表格的菜单不会响应@media 查询

标签 html css

我正在尝试使用 CSS 表值创建一个响应式菜单,当浏览器尺寸缩小时,该菜单将每个 li 元素以 100% 的宽度放在单独的一行上。无论我怎么做以及我在哪个元素上应用该值,它都不会起作用。我试过将表格、表格行和表格单元格放在不同的元素上,但没有任何乐趣。我放了一个 JSFiddle here显示菜单。但是,如果调整浏览器大小使其变小,您会看到菜单仅通过使行宽度为 100% 来响应 @media 查询,列表项显然每个占 20%。

@media screen and (max-width: 760px){

.nav
{
    display : table ;
    border-collapse : collapse ;
    width : 100% ;
    position : relative ;
    top : 40px 
}

ul.menu 
{
    list-style : none ;
    padding : 0 ;
    margin : 0 ;
    display : table-row ;
    width : 100%
}

ul.menu li > li
{
    width : 100% ;
    display : table-cell ;
}

}

但是,如果我在没有媒体查询的情况下应用相同的代码,它就会执行我希望它执行的操作。你可以在 JSFiddle here 看到这个这允许 li 元素为 100% 宽度。我花了几个小时来尝试不同的事情,包括过去关于 stackoverflow 的答案。

哦,最后我尝试用或不用空格格式化 html 中的 li 元素我最初键入 html 用于内联 block 菜单显示。我在 HTML 中键入 li 项的方式也没有区别。

最佳答案

我认为您误解了表格的工作原理...

表格单元格沿着每个表格行彼此相邻对齐。

您需要更改 display 属性以阻止 li 使它们彼此下降。

body
{
    margin : 0 ;
    padding : 0 ;
    font : sans-serif ;
    height : 100% 
}

.header
{
    background-color : #006400 ;
    width : 100% ;
    padding : 0 ;
    height : 160px ;
    line-height : 160px ;
    color : white ;
    text-align : center ;
    margin-bottom : 0 ;
}

.header h1 
{
    padding : 0 ;
    margin : 0
}

.menuplace
{
    background-color : #328332 ;
    width : 100% ;
    height : 90px ;
    margin-top : 0 ;
    color : white 
}

.nav
{
    display : table ;
    position : relative ;
    border-collapse : collapse ;
    top : 40px ;
    margin : 0 auto
}

.menu 
{
    list-style : none ;
    padding : 0 ;
    margin : 0 ;
    display : table-row ;
}

.menu li 
{
    display : table-cell
}

.menu li a
{
    text-decoration : none ;
    padding : 15px ;
    display : block ;
    background-color : #006400 ;
    color : white ;
    margin : 0 
}

@media screen and (max-width: 760px){

.nav
{
    display : block ;
    width : 100% ;
    position : relative ;
    top : 40px 
}

ul.menu 
{
    list-style : none ;
    padding : 0 ;
    margin : 0 ;
    display : block ;
    width : 100%
}

ul.menu li
{
    width : 100% ;
    display : block ;
}

}
<body>
<div class="header">

<h1>Proper Sound website</h1>

</div>

<div class="menuplace">

<div class="nav">

<ul class="menu">
<li><a href="http://www.w3schools.com">Home</a></li><li>
<a href="http://www.bing.com">Bing</a>
</li><li><a href="http://www.yahoo.com">Yahoo</a>
</li><li><a href="http://www.google.com">Google</a>
</li><li><a href="http://www.w3schools.com/about/default.asp">Contact</a></li>

</ul>

</div>
</div>




</body>

关于html - 基于表格的菜单不会响应@media 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34718101/

相关文章:

html - 使 div 中的某些单词具有不同的样式会使段落中断真的很奇怪

html - 如何并排放置两个div

html - 如何在最大高度的 contenteditable div 中显示滚动条?

html - 为 bg 应用透明渐变叠加和十六进制颜色

javascript - onclick 表 TD

css - 如何使用 CSS 在 <td> 中获得双边框?

css - 如何在 tinyMCE 编辑器中突出显示简码

html - 如何给边框一个标题?

html - 我如何使用 CSS 创建这样的框。

javascript - 检查文本的 URL,然后使用 jquery 或 js 将类添加到 li