【问题标题】:How can I make header scrollable for smaller screens in MDL?如何在 MDL 中使标题可滚动以用于较小的屏幕?
【发布时间】:2015-07-08 21:35:31
【问题描述】:

使用 MDL 1.0(http://www.getmdl.io/) 我试图让标题在更大和更小的屏幕上可滚动。但它只能在大屏幕上滚动(比如在我的电脑上),但不能在小屏幕上滚动。

这是html:

<html>
<head>
	<link rel="stylesheet" href="https://storage.googleapis.com/code.getmdl.io/1.0.0/material.teal-light_green.min.css" />
	<script src="https://storage.googleapis.com/code.getmdl.io/1.0.0/material.min.js"></script>
	<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
</head>
<body>
<!-- Simple header with scrollable tabs. -->
<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
  <header class="mdl-layout__header mdl-layout__header--scroll">
    <div class="mdl-layout__header-row">
      <!-- Title -->
      <span class="mdl-layout-title">Title</span>
    </div>
    <!-- Tabs -->
    <div class="mdl-layout__tab-bar mdl-js-ripple-effect">
      <a href="#scroll-tab-1" class="mdl-layout__tab is-active">Tab 1</a>
      <a href="#scroll-tab-2" class="mdl-layout__tab">Tab 2</a>
      <a href="#scroll-tab-3" class="mdl-layout__tab">Tab 3</a>
      <a href="#scroll-tab-4" class="mdl-layout__tab">Tab 4</a>
      <a href="#scroll-tab-5" class="mdl-layout__tab">Tab 5</a>
      <a href="#scroll-tab-6" class="mdl-layout__tab">Tab 6</a>
    </div>
  </header>
  <div class="mdl-layout__drawer">
    <span class="mdl-layout-title">Title</span>
  </div>
  <main class="mdl-layout__content">
    <section class="mdl-layout__tab-panel is-active" id="scroll-tab-1">
      <div class="page-content"><br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!<br />New line!</div>
    </section>
    <section class="mdl-layout__tab-panel" id="scroll-tab-2">
      <div class="page-content"><!-- Your content goes here --></div>
    </section>
    <section class="mdl-layout__tab-panel" id="scroll-tab-3">
      <div class="page-content"><!-- Your content goes here --></div>
    </section>
    <section class="mdl-layout__tab-panel" id="scroll-tab-4">
      <div class="page-content"><!-- Your content goes here --></div>
    </section>
    <section class="mdl-layout__tab-panel" id="scroll-tab-5">
      <div class="page-content"><!-- Your content goes here --></div>
    </section>
    <section class="mdl-layout__tab-panel" id="scroll-tab-6">
      <div class="page-content"><!-- Your content goes here --></div>
    </section>
  </main>
</div>
</body>
</html>

如您所见,标题是可滚动的,但仅适用于更大的屏幕(例如在 PC 上)。但是如果你让窗口变小,或者只是在更小的屏幕上运行它,标题是固定的并且不可滚动。 此外,如果我从外部 div(主 div)中删除 mdl-layout--fixed-header,标题会在较小的屏幕上消失。

知道如何让标题在更大和更小的屏幕上都可以滚动吗?

【问题讨论】:

  • 你的意思是标题不应该固定在任何屏幕上?
  • @Monkviper No..它不应该固定在任何屏幕上,因为我在标题中添加了mdl-layout__header--scroll 类。

标签: html css material-design-lite


【解决方案1】:

我遇到了同样的问题,我通过添加“flex-shrink: 0;”解决了这个问题到 .mdl-layout__content

【讨论】:

  • 任何已知的副作用?
  • 刚找到一个。如果您打开了mdl-layout__drawer,则整个页面(包括抽屉)将是可滚动的:jsfiddle.net/bf70rj0b(打开抽屉并滚动)。
  • 正如马可所说,你可以通过 .mdl-layout__drawer.is-visible~.mdl-layout__content {flex-shrink: 1;}
  • 不工作。卷轴不会走到最右边。仅部分滚动!!
【解决方案2】:

我在处理 MDL Wordpress 主题时遇到了同样的问题。通过添加以下 CSS,我让标题与页面的其余部分一起在小屏幕尺寸上滚动:

@media screen and (max-width: 850px) {
    .mdl-layout__container {
         position: static;
    }
}

使用此方法可以让手机上的 Chrome URL 栏在滚动时被推离屏幕(这是我的主要目标)。

我还使用这个 CSS 让标题在小屏幕上的页面顶部可见:

@media screen and (max-width: 850px) {
    .mdl-layout__header {
        display: block;
    }
}

【讨论】:

    【解决方案3】:

    作为 Devleshes 帖子的后续,将 mdl-layout__content 的高度替换为以下内容将防止出现双滚动条。

    下面的 sn-p 对我有用:

    .mdl-layout__content {
      flex-shrink: 0;
    }
    
    .mdl-layout__drawer.is-visible~.mdl-layout__content {
      height: calc(100vh - 50px);
    }
    

    (其中 50px 是我的 mdl-layout__header 的高度)

    【讨论】:

    • 我认为更好的解决方案是: .mdl-layout__drawer.is-visible~.mdl-layout__content { flex-shrink: 1;因为您不想记住标题的高度。 :)
    【解决方案4】:

    确保您已设置元视口标签:

    &lt;meta name="viewport" content="width=device-width"&gt;

    如果这不起作用,那么我们可能在移动设备上没有可滚动的标题。由于固定类将布局设置为将其保持在顶部。如果视口没有修复它,请为此提出问题,核心团队可以进一步分类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-29
      • 2019-12-01
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      相关资源
      最近更新 更多