【发布时间】:2018-04-05 03:23:01
【问题描述】:
我有一个使用响应式 CSS 的网站。根据响应状态,我想改变菜单:
- 该站点显示在宽屏上,因此我有一个两栏设计。在这种模式下,我可以利用屏幕的完整高度,所以我可以在标题下有一个类别和标签的列表,这会占用相当多的空间。
- 该站点显示在一个不太宽的屏幕上,它将所有内容堆叠成一列。在这种模式下,我想在菜单中添加指向类别和标签概览的链接,而不是保留冗长的标签和类别列表。
我最近的方法是使用两个 CSS 类,水平和垂直:
@media (min-width: 801px) {
.vertical { display: none; }
}
@media (max-width: 800px) {
.horizontal { display: none; }
}
这些类用于装饰类别和标签概览的两个菜单项以及菜单下方的类别和标签列表。
[EDIT]:为了简化代码,我只放了类别,标签是等价的。我担心我错过了一些读者(对不起!),所以我添加了更多代码以清楚地显示两个选项之间的区别。
<head>
...
<meta name="viewport" content="width=device-width, initial-scale=1">
...
</head>
...
<aside>
<nav class="nav">
<ul class="list-bare">
{% for title, link in MENUITEMS %}
<li><a class="nav__link" href="{{ link }}">{{ title }}</a></li>
{% endfor %}
<li class="vertical"><a class="nav__link" href="/categories.html">Categories</a></li>
</ul>
</nav>
<h2 class="horizontal">Categories</h2>
<ul class="navbar horizontal">
{% for cat, null in categories %}
<li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
{% endfor %}
</ul>
</aside>
这确实有效。但我想知道这是否是 CSS 艺术的状态。还是有另一种机制来做这些交替的事情?
【问题讨论】:
-
我认为这个解决方案很棒,除了我会将这两个@media 文件放在一个文件中并称之为 responsive.css。所有的响应式样式都在这个 CSS 中。如果是我,我不会使用 800px 作为媒体尺寸,而是使用符合引导网格系统的尺寸:getbootstrap.com/docs/4.0/layout/grid 你可以看到:stackoverflow.com/questions/49419074/…
标签: html css responsive-design