Skip to content
Snippets Groups Projects
_header-navbar.scss 12.7 KiB
Newer Older
// Use this file to style all your header and header navbar elements

// ++++ Header width reset.
header {
  background-position: right top;
  background-repeat: no-repeat;

  &.collapse:not(.in),
  &.collapsing {
    display: block;
  }

  @media (max-width: $screen-xs-max) {
    margin-bottom: $content-bottom-padding;
  }

  @media (max-width: $screen-md-max) {
    &.collapse:not(.in),
    &.collapsing {
      min-height: $navbar-header-height;
    }
  }

  @media (min-width: $screen-lg-min) {
    background-image: url('../images/header-bg-lg.png');
  }
}

header,
.navbar,
.breadcrumbs {
  background-color: transparent;
  border: 0;
  // FIXME: REMOVE, when 15639 has been merged to finc
  width: auto;
}

// ++++++ basic default (non start page)
// Fixme: Ueberlegen, ob es klüger wäre, die Startseite als 'Ausnahme' zu nehmen. Also den body standardmäßig für alle Seiten zu definieren und nur die Startseite dann extra zu stylen
// Fixme: JA, fände ich besser -- dann gleich ins home-page.scss - CK
header {
  body:not(.template-name-home) & {
    @media (max-width: $screen-md-max) {
      margin-bottom: calc(#{$navbar-header-height} + #{$search-input-height-fixed} + 35px);
    }

    @media (min-width: $screen-lg-min) {
      background-image: url('../images/header-bg-lg-mirror-stretched.png');
      background-position: 100% 70%;
      height: $default-header-height-lg; // needed for background image effect
    }

    .headline,
    .home-links {
      display: none;
    }

    // ++++++  Navbar in affix mode
    .navbar.affix:not(.search) {
      border: 0;

      @media (min-width: $screen-lg-min) {
        @include default-background-lg;
        height: em($navbar-header-height-affix-lg);
      }
    }

    .navbar.affix-top {
      position: fixed;
    }
  }
}

.template-name-home {
  header {
    .affix-top {
      position: relative; // ignore affix header on start page

      .menubar {
        padding-right: 10px;

        @media (max-width: $screen-xs-max) {
          padding-right: 0;
        }

        @media (max-width: $screen-md-max) {
          background: $white;
          position: fixed; // but not for mobile devices
        }
      }
    }

    .affix {
      position: relative; // ignore affix header on start page
      .menubar {
        @media (max-width: $screen-md-max) {
          background: $white;
          position: fixed; // but not for mobile devices
        }
      }
    }

    @media (min-width: $screen-lg-min) {
      .container.navbar {
        padding-right: em(20px);
      }
    }
  }
}

#main-navigation {
  max-width: $max-designed-body-width;
}

//// Display different icons after open or close of submenues
header.collapse.in .menubar .text-close,
.dropdown.sbox-dd:not(.open) .text-close,
.language:not(.open) .icon.icon-chevron-up {
  display: none;
}

header.collapse:not(.in) .menubar .text-open,
header.collapsing .text-open,
.dropdown.sbox-dd.open .text-open,
.language.open .icon.icon-chevron-down {
  display: none;
}

#submenuToggler {
  @media (min-width: $mobile-navigation-menu-breakpoint + 1px) {
    min-width: 125px;
  }
}

.navbar-header {
  flex-shrink: 0;

  // position of navbar-brand Logo on top left
  .navbar-brand {
    border: 0;
    left: 0;
    outline: none;
    position: absolute;
    top: $adv-search-form-X-top-margin;
    z-index: z-index(navbar-brand, 1);
  }

  @media (max-width: $screen-md-max) {
    background-color: $white;
    height: $navbar-header-height;
    padding: 30px 0 20px;

    .navbar-toggle {
      color: $brand-primary;
      // for middle-alignment
      padding: 0;
    }

    &:not(.collapse) {
      display: -webkit-inline-flex;
      display: -ms-inline-flexbox;
      display: -webkit-box;
      display: inline-flex;
    }
  }
}

.navbar-header-link {
  @extend .navbar-toggle;
  display: inherit;
  margin-right: 0;
  z-index: z-index(navbar-header-link, 0);

  @media (min-width: $screen-lg-min) {
    @include default-navbar-link-font;
  }
}


// *****************************************************************
// ************ Banner, Logo and home link *************************
// *****************************************************************

.banner {
  display: block;
  width: 100%;
  z-index: z-index(banner, 0);

  @media (max-width: $screen-xs-max) {
    margin-left: 0;
    margin-right: 0;
  }

  &.container {
    padding-left: 0;
    padding-right: 0;

    @media (min-width: $screen-lg-min) {
      border-radius: 0;
      padding-left: $navbar-default-padding;
      padding-top: $navbar-default-padding;
    }

    // Menu toggler position
    .navbar-toggle {
      margin-right: em(5px);
      padding-left: em(10px);

      @media (min-width: $screen-sm-min) and (max-width: $screen-md-max) {
        padding-left: em(25px);
      }

      @media (min-width: $screen-lg-min) and (max-width: $screen-lg-max) {
        padding-left: em(10px);
      }

      @media (min-width: $screen-xl-min) {
        margin-right: em(6px);
        padding-left: em(3px);
      }
    }
  }

  &.navbar {
    min-height: 0;
  }
}

.navbar-brand {
  // DEFINE BG IMAGE
  // $screen-xs-max = 767px
  // Fallback image IE & Co
  background: url('../images/logo.png') no-repeat;
  // SVG (modern browsers), linear-gradient used to pick out browsers that support SVG
  background: url('../images/logo.svg') no-repeat, linear-gradient(transparent, transparent);
  background-size: contain;
  color: transparent;
  margin-left: calc(#{$navbar-margin-left} - 10px);
  max-width: $logo-max-width;
  min-height: em(56px); // FIX for Safari + Android Stock Browser
  min-width: 180px; // FIX for Safari + Android Stock Browser - ATTN! might kill visibility in IE11
  z-index: z-index(navbar-brand, 0);

  // 768px and up
  @media (min-width: $screen-sm-min) {
    // Fallback image IE & Co
    background: url('../images/logo.png') no-repeat;
    // SVG (modern browsers), linear-gradient used to pick out browsers that support SVG
    background: url('../images/logo.svg') no-repeat, linear-gradient(transparent, transparent);
    background-size: contain;
    display: inline-block !important; // FIX for Safari + Android Stock Browser - ATTN! might kill visibility in IE11
    margin-left: $navbar-margin-left;
  }

  // 992px and up
  @media (min-width: $screen-lg-min) {
    // Fallback image IE & Co
    background: url('../images/logo.png') no-repeat;
    // SVG (modern browsers), linear-gradient used to pick out browsers that support SVG
    background: url('../images/logo.svg') no-repeat, linear-gradient(transparent, transparent);
    display: inline-block !important; // FIX for Safari + Android Stock Browser - ATTN! might kill visibility in IE11
    min-width: em(266px) !important; // FIX for Safari + Android Stock Browser - ATTN! might kill visibility in IE11
  }

  // hide home link for non-visually impaired to show logo only
  a,
  &:hover,
  &:focus {
    color: transparent;
  }
}

// *****************************************************************
// ************ Library Name and Hamburger menu contents ***********
// *****************************************************************

.header-menu-collapse {
  @extend .navbar-header;

  @media (min-width: $screen-lg-min) {
    display: -webkit-inline-flex;
    display: -ms-inline-flexbox;
    display: -webkit-box;
    display: inline-flex;

    &.collapse.in {
      &#submenu {
        position: absolute;
        z-index: z-index(navigation-overlay, 0);
      }

      .submenu-collapse-wrapper {
        position: absolute;
        top: $navbar-header-height-home-sm;
      }
    }
  }

  &.collapse:not(.in) {
    .submenu-collapse-wrapper {
      background: $white;
      height: 0;
      padding: 0;
      visibility: hidden;
      width: 0;
    }
  }

  &.collapse.in,
  &.collapsing {
    .submenu-collapse-wrapper {
      @include navigation-overlay;

      @media (min-width: $mobile-navigation-menu-breakpoint + 1px) {
        position: absolute;
      }
    }
  }

  //// Define header navbar on mobile
  &.collapsing {
    padding: 0;

    .submenu-collapse-wrapper {
      @media (max-width: $screen-sm-max) {
        background-color: $white;
        padding: 0;
      }
    }
  }
}

.menubar {
  @include noselect;
  box-sizing: border-box;
  display: -webkit-inline-flex;
  display: -ms-inline-flexbox;
  display: -webkit-box;
  display: inline-flex;
  justify-content: flex-end;
  padding-right: 10px;
  width: 100%;
  z-index: z-index(menubar, 0);

  @media (max-width: $screen-xs-max) {
    padding-right: 0;
  }

  @media (max-width: $screen-md-max) {
    background: $white;
  }

  .fill-flex {
    flex-grow: 2;
    flex-shrink: 1;
  }
}

#register-menu .navbar-header-link {
  @media (max-width: $mobile-navigation-menu-breakpoint) {
    @include shift-main-menu-entries-to-navigation-overlay;
  }

  @media (max-width: $screen-xs-max) {
    top: calc(#{$navbar-header-height} + 8 * #{$line-height-submenu} + #{$content-top-padding});
  }

  @media (min-width: $screen-sm-min) and (max-width: $screen-md-max) {
    font-size: calc(#{$font-size-menu-sm} - 15px);
    left: calc(#{$logo-max-width} / 2 + #{$navbar-margin-left});
    top: calc(#{$navbar-header-height} + 9 * #{$line-height-submenu} + 10 * #{$navbar-default-padding});
  }

  @media (max-width: $screen-xs-max) and (orientation: landscape) {
    left: 375px;
    top: calc(2 * #{$navbar-header-height} - 25px);
  }

  @media (min-width: $screen-sm-min) and (max-width: $mobile-navigation-menu-breakpoint) and (orientation: landscape) {
    left: 750px;
    top: calc(#{$navbar-header-height} + 5 * #{$navbar-default-padding} + 5px);
  }
}


// *****************************************************************
// ************ Language selector **********************************
// *****************************************************************

#language-dropdown {
  .language.dropdown {
    margin: 0;
  }

  .dropdown-menu {
    @include basic-dropdown-menu;
    left: 10px;
    min-width: 100px;

    @media (max-width: $mobile-navigation-menu-breakpoint) {
      @include shift-main-menu-entries-to-navigation-overlay;
    }

    @media (max-width: $screen-xs-max) {
      top: calc(#{$navbar-header-height} + 7 * #{$line-height-submenu} + #{$content-top-padding});
    }

    @media (min-width: $screen-sm-min) and (max-width: $screen-md-max) {
      left: calc(#{$logo-max-width} / 2 + #{$navbar-margin-left});
      top: calc(#{$navbar-header-height} + 8 * #{$line-height-submenu} + 9 * #{$navbar-default-padding});

      .btn {
        font-size: calc(#{$font-size-menu-sm} - 15px);
      }
    }

    @media (max-width: $screen-xs-max) and (orientation: landscape) {
      left: 375px;
      top: calc(#{$navbar-header-height} + 10px);
    }

    @media (min-width: $screen-sm-min) and (max-width: $mobile-navigation-menu-breakpoint) and (orientation: landscape) {
      left: 750px;
      top: calc(#{$navbar-header-height} + 2 * #{$navbar-default-padding} + 15px);
    }

    @media (min-width: $mobile-navigation-menu-breakpoint + 1px) {
      border: 2px solid $asphalt;
      left: 0;
      letter-spacing: 2.87px;
      top: 64px;
    }

    li > a {
      line-height: $line-height-submenu;
      padding: 3px 5px;
      text-align: left;

      &:focus,
      &:hover {
        background: initial;
        color: $azure;
      }

      @media (max-width: $mobile-navigation-menu-breakpoint) {
        padding: 0;
      }

      @media (min-width: $mobile-navigation-menu-breakpoint + 1px) {
        font-family: $font-family-monospace;
        font-size: $font-size-menu-lg;
        padding: 0 $navbar-extended-padding;
      }
    }
  }
}

// keep different layout for language and register button after moving into the same list with all the other elements of the list #20986
#submenu {
  .submenu-collapse {
    height: unset;
  }

  .submenu-additionals {
    a {
      color: $black !important;
      font-size: calc(40px - 15px);
      left: unset;
      letter-spacing: 2px;
      text-transform: uppercase;
      margin-left: unset;
    }

    // größer gleich 977px Breite
    @media screen and (min-width: $screen-md-min) {
      position: fixed;
      max-width: 150px;
      left: 750px;
      top: 140px;

      li {
        // reduce height of elements of sublist
        height: 37.5px
      }
    }

    // kleiner gleich 976px Breite
    @media screen and (max-width: $screen-sm-max) {
      padding-left: 135px;
      padding-bottom: 20px;
    }

    @media screen and (max-width: 771px) {
      padding: 10px 0 0 25px;

      a {
        font-size: 18px;
      }

      li {
        // adapt height of elements of sublist
        line-height: 40px;
      }
    }

    // just for language, not for register
    .submenu-additionals-lang a {
      &:hover,
      &:focus {
        color: $brand-primary !important;
      }
    }

    span {
      font-weight: normal;
    }

    span.active {
      font-weight: bold;
    }
  }
}