根据屏幕尺寸改变HTML内容顺序

6
我想知道是否有一种方法可以根据屏幕大小更改HTML内容的顺序。
这是主要的网站标题,它在每个媒体查询上都显示正确。
<h1>title</h1>
<nav>inline list items</nav>
<h2>subtitle</h2>

基本上它看起来像这样:
H1文本 H2文本-----------------列表项
(或者查看http://www.jeroenduijker.nl/test/并调整屏幕大小)
一旦媒体查询步入(@media only screen and (max-width: 480px) {}), h2就会被压缩,我更喜欢将导航栏放在h1上面。
有没有一种简单的方法使html变为:
-----------------列表项 H1文本 H2文本
希望我已经解释得足够清楚了,希望你能帮助我,谢谢!
1个回答

13

您可以编写两个导航栏,其中一个隐藏,另一个可见,然后根据媒体查询切换它们。

HTML:

<nav class="show-mobile">
      ...
</nav>

<h1>title</h1>
<nav class="hide-mobile">
      ...
</nav>
<h2>subtitle</h2>

CSS:

@media only screen and (max-device-width: 480px) {
      .show-mobile {
        display: block;
      }
      .hide-mobile {
        display: none;
      }
    }

 @media only screen and (min-device-width: 481px) {
      .show-mobile {
        display: none;
      }
      .hide-mobile {
        display: block;
      }
    }

或者在导航菜单前后各加一个H1元素,并根据媒体查询切换它们的可见性。

<h1 class="hide-mobile"></h1>
<nav>
  ...
  ...
</nav>
<h1 class="show-mobile">Title</h1>
<h2>subtitle</h2>

或者你可以在移动媒体查询被激活时,告诉导航在顶部具有绝对定位。


@media only screen and (max-device-width: 480px) {
  nav {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 44px
  }
}

我尝试了所有三个选项,但隐藏元素不会“删除”它,因此它仍然在那里,并且不幸地仍然挤压着h2到一侧 :(编辑; 第三个选项可能有效,但我将不得不编辑一下位置,因为它不再与其他东西保持一致。 - Redavac
我使用了绝对定位选项,因为它可以移动元素,并且只需要正确地定位它,然后针对媒体查询更改了一些其他CSS,谢谢! - Redavac
@Jeroen 这个类不会自己生效,你需要在你的 CSS 中创建这个类。请查看我的编辑。你可能还想花些时间阅读一些 CSS 媒体查询基础知识。 - aaronmallen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接