【问题标题】:How to center a Tab Bar in Material Design Lite如何在 Material Design Lite 中将标签栏居中
【发布时间】:2017-01-17 09:23:28
【问题描述】:

Material Design Guidelines 指定了一个居中的标签栏 (https://material.io/guidelines/components/tabs.html)。在 MDL 中有没有这样的课程。如果没有,我如何使用 CSS 实现这一点?

【问题讨论】:

    标签: material-design material-design-lite


    【解决方案1】:

    默认情况下,MDL Tab Bar (v.1.3.0) 将居中,如下所示:

    <script src="https://code.getmdl.io/1.3.0/material.min.js"></script>
    <link href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css" rel="stylesheet" />
    <div class="mdl-tabs mdl-js-tabs mdl-js-ripple-effect">
      <div class="mdl-tabs__tab-bar">
        <a href="#starks-panel" class="mdl-tabs__tab is-active">Starks</a>
        <a href="#lannisters-panel" class="mdl-tabs__tab">Lannisters</a>
        <a href="#targaryens-panel" class="mdl-tabs__tab">Targaryens</a>
      </div>
    
      <div class="mdl-tabs__panel is-active" id="starks-panel">
        <ul>
          <li>Eddard</li>
          <li>Catelyn</li>
          <li>Robb</li>
          <li>Sansa</li>
          <li>Brandon</li>
          <li>Arya</li>
          <li>Rickon</li>
        </ul>
      </div>
      <div class="mdl-tabs__panel" id="lannisters-panel">
        <ul>
          <li>Tywin</li>
          <li>Cersei</li>
          <li>Jamie</li>
          <li>Tyrion</li>
        </ul>
      </div>
      <div class="mdl-tabs__panel" id="targaryens-panel">
        <ul>
          <li>Viserys</li>
          <li>Daenerys</li>
        </ul>
      </div>
    </div>

    这是通过.mdl-tabs__tab-bar {justify-content: center;}的默认样式完成的

    如果您想左(或右)对齐标签栏,您可以将justify-content: flex-startjustify-content: flex-end 添加到.mdl-tabs__tab-bar 选择器。

    .mdl-tabs__tab-bar  {
      justify-content: flex-start;
    }
    

    .mdl-tabs__tab-bar  {
      justify-content: flex-start !important;
    }
    <script src="https://code.getmdl.io/1.3.0/material.min.js"></script>
    <link href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css" rel="stylesheet"/>
    
    <div class="mdl-tabs mdl-js-tabs mdl-js-ripple-effect">
      <div class="mdl-tabs__tab-bar">
          <a href="#starks-panel" class="mdl-tabs__tab is-active">Starks</a>
          <a href="#lannisters-panel" class="mdl-tabs__tab">Lannisters</a>
          <a href="#targaryens-panel" class="mdl-tabs__tab">Targaryens</a>
      </div>
    
      <div class="mdl-tabs__panel is-active" id="starks-panel">
        <ul>
          <li>Eddard</li>
          <li>Catelyn</li>
          <li>Robb</li>
          <li>Sansa</li>
          <li>Brandon</li>
          <li>Arya</li>
          <li>Rickon</li>
        </ul>
      </div>
      <div class="mdl-tabs__panel" id="lannisters-panel">
        <ul>
          <li>Tywin</li>
          <li>Cersei</li>
          <li>Jamie</li>
          <li>Tyrion</li>
        </ul>
      </div>
      <div class="mdl-tabs__panel" id="targaryens-panel">
        <ul>
          <li>Viserys</li>
          <li>Daenerys</li>
        </ul>
      </div>
    </div>

    标签栏的另一个位置是在导航中。这是在这种情况下居中的示例。解决方案与其他情况相同,将justify-content: center 应用于.mdl-layout__tab-bar 选择器。

    .mdl-layout__tab-bar {
      justify-content: center;
    }
    <script src="https://code.getmdl.io/1.3.0/material.min.js"></script>
    <link href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css" rel="stylesheet"/>
    
    <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
      <header class="mdl-layout__header">
        <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"><!-- Your content goes here --></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>

    【讨论】:

    • 我询问的标签栏是导航菜单上的那个(可滚动)。 justify-content: center; 工作得很好。谢谢!
    • 啊,在问题中提及这会很有帮助;)更新解决方案以显示该案例的示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2023-03-10
    • 2019-08-06
    相关资源
    最近更新 更多