1
1
mirror of https://github.com/primer/css.git synced 2024-12-01 12:42:32 +03:00
css/docs/content/components/header.md
2019-10-10 12:13:58 +09:00

3.8 KiB

title path status source bundle
Header components/header Stable https://github.com/primer/css/tree/master/src/header header

Use the Header component to create a header that has all of it's items aligned vertically with consistent horizontal spacing.

Table of Contents

Header

The .Header class is the wrapping class that aligns all the items properly and gives the header it's dark background. Each direct child of the .Header component is expected to be a .Header-item component. The component utilizes flexbox CSS to align all these items properly and applies spacing scale margin.

<div class="Header">
  <div class="Header-item">
    <a href="#" class="Header-link f4 d-flex flex-items-center">
      <!-- <%= octicon "mark-github", class: "mr-2", height: 32 %> -->
      <svg height="32" class="octicon octicon-mark-github mr-2" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg>
      <span>GitHub</span>
    </a>
  </div>
  <div class="Header-item">
    <input type="search" class="form-control input-dark" />
  </div>
  <div class="Header-item Header-item--full">
    Menu
  </div>
  <div class="Header-item mr-0">
    <img class="avatar" height="20" alt="@octocat" src="https://github.com/octocat.png" width="20">
  </div>
</div>

Header-item

All items directly under the .Header component should be a .Header-item component. Inside these components can be anything (text, forms, images...), and the .Header-item component will make sure these elements vertically align with each other.

.Header-item elements have a built-in margin that will need to be overridden with the mr-0 utility class for the last element in the container. We relied on the utility classes here instead of :last-child because the last child isn't always the item visible. On responsive pages, there's a mobile menu that gets presented to the user at smaller breakpoints.

<div class="Header">
  <!-- Text item -->
  <div class="Header-item">
    Text item
  </div>

  <!-- Form item  -->
  <div class="Header-item">
    <input class="form-control input-dark" type="text"/>
  </div>

  <!-- Image item  -->
  <div class="Header-item">
    <img class="avatar" height="20" alt="@octocat" src="https://github.com/octocat.png" width="20">
  </div>
</div>

Header-item--full

The .Header-item element has a modifier class, .Header-item--full, that stretches it to fill the available space and push any remaining items to the right.

<div class="Header">
  <div class="Header-item">
    Item 1
  </div>

  <!-- Full item stretches across -->
  <div class="Header-item Header-item--full border">
    Item 2
  </div>

  <div class="Header-item mr-0 ">
    Item 3
  </div>

</div>

Add the .Header-link class to any anchor tags in the header to give them consistent styling and hover opacity. This class makes the links white, bold and 70% fade on hover.

<div class="Header">
  <div class="Header-item">
    <a href="#" class="Header-link">About</a>
  </div>
  <div class="Header-item">
    <a href="#" class="Header-link">Releases</a>
  </div>
  <div class="Header-item">
    <a href="#" class="Header-link">Team</a>
  </div>
</div>