mirror of
https://github.com/jgthms/bulma.git
synced 2024-11-28 12:24:23 +00:00
479 lines
16 KiB
Sass
479 lines
16 KiB
Sass
$navbar-background-color: var(--scheme-main, #{$scheme-main}) !default
|
|
$navbar-box-shadow-size: 0 2px 0 0 !default
|
|
$navbar-box-shadow-color: var(--background, #{$background}) !default
|
|
$navbar-height: 3.25rem !default
|
|
$navbar-padding-vertical: 1rem !default
|
|
$navbar-padding-horizontal: 2rem !default
|
|
$navbar-z: 30 !default
|
|
$navbar-fixed-z: 30 !default
|
|
$navbar-shadow-color: rgba(var(--scheme-invert-rgb, #{bulmaToRGB($black)}), 0.1) !default
|
|
|
|
$navbar-menu-background-color: var(--scheme-main, #{$scheme-main}) !default
|
|
|
|
$navbar-item-color: var(--text, #{$text}) !default
|
|
$navbar-item-hover-color: var(--link, #{$link}) !default
|
|
$navbar-item-hover-background-color: var(--scheme-main-bis, #{$scheme-main-bis}) !default
|
|
$navbar-item-active-color: var(--scheme-invert, #{$scheme-invert}) !default
|
|
$navbar-item-active-background-color: transparent !default
|
|
$navbar-item-img-max-height: 1.75rem !default
|
|
|
|
$navbar-burger-color: var(--navbar-item-color, #{$navbar-item-color}) !default
|
|
|
|
$navbar-tab-hover-background-color: transparent !default
|
|
$navbar-tab-hover-border-bottom-color: var(--link, #{$link}) !default
|
|
$navbar-tab-active-color: var(--link, #{$link}) !default
|
|
$navbar-tab-active-background-color: transparent !default
|
|
$navbar-tab-active-border-bottom-color: var(--link, #{$link}) !default
|
|
$navbar-tab-active-border-bottom-style: solid !default
|
|
$navbar-tab-active-border-bottom-width: 3px !default
|
|
|
|
$navbar-dropdown-background-color: var(--scheme-main, #{$scheme-main}) !default
|
|
$navbar-dropdown-border-top: 2px solid $border !default
|
|
$navbar-dropdown-offset: -4px !default
|
|
$navbar-dropdown-arrow: var(--link, #{$link}) !default
|
|
$navbar-dropdown-radius: var(--radius-large, #{$radius-large}) !default
|
|
$navbar-dropdown-z: 20 !default
|
|
|
|
$navbar-dropdown-boxed-radius: var(--radius-large, #{$radius-large}) !default
|
|
$navbar-dropdown-boxed-shadow-color: rgba(var(--scheme-invert-rgb, #{bulmaToRGB($black)}), 0.1) !default
|
|
$navbar-dropdown-boxed-shadow-color-bis: rgba(var(--scheme-invert-rgb, #{bulmaToRGB($black)}), 0.1) !default
|
|
$navbar-dropdown-boxed-shadow: 0 8px 8px $navbar-dropdown-boxed-shadow-color, 0 0 0 1px $navbar-dropdown-boxed-shadow-color-bis !default
|
|
|
|
$navbar-dropdown-item-hover-color: var(--scheme-invert, #{$scheme-invert}) !default
|
|
$navbar-dropdown-item-hover-background-color: var(--background, #{$background}) !default
|
|
$navbar-dropdown-item-active-color: var(--link, #{$link}) !default
|
|
$navbar-dropdown-item-active-background-color: var(--background, #{$background}) !default
|
|
|
|
$navbar-divider-background-color: var(--background, #{$background}) !default
|
|
$navbar-divider-height: 2px !default
|
|
|
|
$navbar-bottom-box-shadow-size: 0 -2px 0 0 !default
|
|
|
|
$navbar-breakpoint: $desktop !default
|
|
|
|
$navbar-colors: $colors !default
|
|
|
|
=navbar-fixed
|
|
left: 0
|
|
position: fixed
|
|
right: 0
|
|
z-index: var(--navbar-fixed-z)
|
|
|
|
.navbar
|
|
--navbar-fixed-z: #{$navbar-fixed-z}
|
|
--navbar-shadow-color: #{$navbar-shadow-color}
|
|
--navbar-menu-background-color: #{$navbar-menu-background-color}
|
|
--navbar-background-color: #{$navbar-background-color}
|
|
--navbar-box-shadow-size: #{$navbar-box-shadow-size}
|
|
--navbar-box-shadow-color: #{$navbar-box-shadow-color}
|
|
--navbar-bottom-box-shadow-size: #{$navbar-bottom-box-shadow-size}
|
|
--navbar-height: #{$navbar-height}
|
|
--navbar-padding-vertical: #{$navbar-padding-vertical}
|
|
--navbar-padding-horizontal: #{$navbar-padding-horizontal}
|
|
--navbar-z: #{$navbar-z}
|
|
--navbar-burger-color: #{$navbar-burger-color}
|
|
--navbar-item-color: #{$navbar-item-color}
|
|
--navbar-item-hover-background-color: #{$navbar-item-hover-background-color}
|
|
--navbar-item-hover-color: #{$navbar-item-hover-color}
|
|
--navbar-item-img-max-height: #{$navbar-item-img-max-height}
|
|
--navbar-tab-hover-background-color: #{$navbar-tab-hover-background-color}
|
|
--navbar-tab-hover-border-bottom-color: #{$navbar-tab-hover-border-bottom-color}
|
|
--navbar-tab-active-background-color: #{$navbar-tab-active-background-color}
|
|
--navbar-tab-active-border-bottom-color: #{$navbar-tab-active-border-bottom-color}
|
|
--navbar-tab-active-border-bottom-style: #{$navbar-tab-active-border-bottom-style}
|
|
--navbar-tab-active-border-bottom-width: #{$navbar-tab-active-border-bottom-width}
|
|
--navbar-tab-active-color: #{$navbar-tab-active-color}
|
|
--navbar-dropdown-arrow: #{$navbar-dropdown-arrow}
|
|
--navbar-divider-background-color: #{$navbar-divider-background-color}
|
|
--navbar-divider-height: #{$navbar-divider-height}
|
|
--navbar-dropdown-item-hover-background-color: #{$navbar-dropdown-item-hover-background-color}
|
|
--navbar-dropdown-item-hover-color: #{$navbar-dropdown-item-hover-color}
|
|
--navbar-dropdown-item-active-background-color: #{$navbar-dropdown-item-active-background-color}
|
|
--navbar-dropdown-item-active-color: #{$navbar-dropdown-item-active-color}
|
|
--navbar-dropdown-border-top: #{$navbar-dropdown-border-top}
|
|
--navbar-dropdown-background-color: #{$navbar-dropdown-background-color}
|
|
--navbar-dropdown-radius: #{$navbar-dropdown-radius}
|
|
--navbar-dropdown-z: #{$navbar-dropdown-z}
|
|
--navbar-dropdown-boxed-radius: #{$navbar-dropdown-boxed-radius}
|
|
--navbar-dropdown-boxed-shadow: #{$navbar-dropdown-boxed-shadow}
|
|
--navbar-item-active-color: #{$navbar-item-active-color}
|
|
--navbar-item-active-background-color: #{$navbar-item-active-background-color}
|
|
|
|
background-color: var(--navbar-background-color)
|
|
min-height: var(--navbar-height)
|
|
position: relative
|
|
z-index: var(--navbar-z)
|
|
@each $name, $pair in $navbar-colors
|
|
$color: nth($pair, 1)
|
|
$color-invert: nth($pair, 2)
|
|
|
|
&.is-#{$name}
|
|
--navbar-burger-color: var(--#{$name}-invert, #{$color-invert})
|
|
|
|
background-color: var(--#{$name}, #{$color})
|
|
color: var(--#{$name}-invert, #{$color-invert})
|
|
.navbar-brand
|
|
& > .navbar-item,
|
|
.navbar-link
|
|
color: var(--#{$name}-invert, #{$color-invert})
|
|
& > a.navbar-item,
|
|
.navbar-link
|
|
--navbar-item-hover-background-delta: -5%
|
|
--navbar-item-hover-background-#{$name}-l: calc(#{var(--#{$name}-l)} + #{var(--navbar-item-hover-background-delta)})
|
|
--navbar-item-hover-background-color: hsla(var(--#{$name}-h), var(--#{$name}-s), var(--navbar-item-hover-background-#{$name}-l), var(--#{$name}-a))
|
|
&:focus,
|
|
&:hover,
|
|
&.is-active
|
|
background-color: var(--navbar-item-hover-background-color, #{bulmaDarken($color, 5%)})
|
|
+from($navbar-breakpoint)
|
|
--navbar-dropdown-item-active-background-color: var(--#{$name}, #{$color})
|
|
--navbar-dropdown-item-active-color: var(--#{$name}-invert, #{$color-invert})
|
|
|
|
.navbar-brand,
|
|
.navbar-start,
|
|
.navbar-end
|
|
& > .navbar-item,
|
|
.navbar-link
|
|
color: var(--#{$name}-invert, #{$color-invert})
|
|
& > a.navbar-item,
|
|
.navbar-link
|
|
&:focus,
|
|
&:hover,
|
|
&.is-active
|
|
background-color: var(--navbar-item-hover-background-color, #{bulmaDarken($color, 5%)})
|
|
color: var(--#{$name}-invert, #{$color-invert})
|
|
& > .container
|
|
align-items: stretch
|
|
display: flex
|
|
min-height: var(--navbar-height)
|
|
width: 100%
|
|
&.has-shadow
|
|
box-shadow: var(--navbar-box-shadow-size) var(--navbar-box-shadow-color)
|
|
&.is-fixed-bottom,
|
|
&.is-fixed-top
|
|
+navbar-fixed
|
|
&.is-fixed-bottom
|
|
bottom: 0
|
|
&.has-shadow
|
|
box-shadow: var(--navbar-bottom-box-shadow-size) var(--navbar-box-shadow-color)
|
|
&.is-fixed-top
|
|
top: 0
|
|
|
|
html,
|
|
body
|
|
&.has-navbar-fixed-top
|
|
padding-top: var(--navbar-height)
|
|
&.has-navbar-fixed-bottom
|
|
padding-bottom: var(--navbar-height)
|
|
|
|
.navbar-brand,
|
|
.navbar-tabs
|
|
align-items: stretch
|
|
display: flex
|
|
flex-shrink: 0
|
|
min-height: var(--navbar-height)
|
|
|
|
.navbar-brand
|
|
a.navbar-item
|
|
&:focus,
|
|
&:hover
|
|
background-color: transparent
|
|
|
|
.navbar-tabs
|
|
+overflow-touch
|
|
max-width: 100vw
|
|
overflow-x: auto
|
|
overflow-y: hidden
|
|
|
|
.navbar-burger
|
|
color: var(--navbar-burger-color)
|
|
+hamburger($navbar-height)
|
|
+ltr-property("margin", auto, false)
|
|
|
|
.navbar-menu
|
|
display: none
|
|
|
|
.navbar-item,
|
|
.navbar-link
|
|
color: var(--navbar-item-color)
|
|
display: block
|
|
line-height: 1.5
|
|
padding: 0.5rem 0.75rem
|
|
position: relative
|
|
.icon
|
|
&:only-child
|
|
margin-left: -0.25rem
|
|
margin-right: -0.25rem
|
|
|
|
a.navbar-item,
|
|
.navbar-link
|
|
cursor: pointer
|
|
&:focus,
|
|
&:focus-within,
|
|
&:hover,
|
|
&.is-active
|
|
background-color: var(--navbar-item-hover-background-color)
|
|
color: var(--navbar-item-hover-color)
|
|
|
|
.navbar-item
|
|
flex-grow: 0
|
|
flex-shrink: 0
|
|
img
|
|
max-height: var(--navbar-item-img-max-height)
|
|
&.has-dropdown
|
|
padding: 0
|
|
&.is-expanded
|
|
flex-grow: 1
|
|
flex-shrink: 1
|
|
&.is-tab
|
|
border-bottom: 1px solid transparent
|
|
min-height: var(--navbar-height)
|
|
padding-bottom: calc(0.5rem - 1px)
|
|
&:focus,
|
|
&:hover
|
|
background-color: var(--navbar-tab-hover-background-color)
|
|
border-bottom-color: var(--navbar-tab-hover-border-bottom-color)
|
|
&.is-active
|
|
background-color: var(--navbar-tab-active-background-color)
|
|
border-bottom-color: var(--navbar-tab-active-border-bottom-color)
|
|
border-bottom-style: var(--navbar-tab-active-border-bottom-style)
|
|
border-bottom-width: var(--navbar-tab-active-border-bottom-width)
|
|
color: var(--navbar-tab-active-color)
|
|
padding-bottom: calc(0.5rem - #{var(--navbar-tab-active-border-bottom-width)})
|
|
|
|
.navbar-content
|
|
flex-grow: 1
|
|
flex-shrink: 1
|
|
|
|
.navbar-link:not(.is-arrowless)
|
|
+ltr-property("padding", 2.5em)
|
|
&::after
|
|
@extend %arrow
|
|
border-color: var(--navbar-dropdown-arrow)
|
|
margin-top: -0.375em
|
|
+ltr-position(1.125em)
|
|
|
|
.navbar-dropdown
|
|
font-size: 0.875rem
|
|
padding-bottom: 0.5rem
|
|
padding-top: 0.5rem
|
|
.navbar-item
|
|
padding-left: 1.5rem
|
|
padding-right: 1.5rem
|
|
|
|
.navbar-divider
|
|
background-color: var(--navbar-divider-background-color)
|
|
border: none
|
|
display: none
|
|
height: var(--navbar-divider-height)
|
|
margin: 0.5rem 0
|
|
|
|
+until($navbar-breakpoint)
|
|
.navbar > .container
|
|
display: block
|
|
.navbar-brand,
|
|
.navbar-tabs
|
|
.navbar-item
|
|
align-items: center
|
|
display: flex
|
|
.navbar-link
|
|
&::after
|
|
display: none
|
|
.navbar-menu
|
|
background-color: var(--navbar-menu-background-color)
|
|
box-shadow: 0 8px 16px var(--navbar-shadow-color)
|
|
padding: 0.5rem 0
|
|
&.is-active
|
|
display: block
|
|
// Fixed navbar
|
|
.navbar
|
|
&.is-fixed-bottom-touch,
|
|
&.is-fixed-top-touch
|
|
+navbar-fixed
|
|
&.is-fixed-bottom-touch
|
|
bottom: 0
|
|
&.has-shadow
|
|
box-shadow: 0 -2px 3px var(--navbar-shadow-color)
|
|
&.is-fixed-top-touch
|
|
top: 0
|
|
&.is-fixed-top,
|
|
&.is-fixed-top-touch
|
|
.navbar-menu
|
|
+overflow-touch
|
|
max-height: calc(100vh - #{var(--navbar-height)})
|
|
overflow: auto
|
|
html,
|
|
body
|
|
&.has-navbar-fixed-top-touch
|
|
padding-top: var(--navbar-height)
|
|
&.has-navbar-fixed-bottom-touch
|
|
padding-bottom: var(--navbar-height)
|
|
|
|
+from($navbar-breakpoint)
|
|
.navbar,
|
|
.navbar-menu,
|
|
.navbar-start,
|
|
.navbar-end
|
|
align-items: stretch
|
|
display: flex
|
|
.navbar
|
|
min-height: var(--navbar-height)
|
|
&.is-spaced
|
|
padding: var(--navbar-padding-vertical) var(--navbar-padding-horizontal)
|
|
.navbar-start,
|
|
.navbar-end
|
|
align-items: center
|
|
a.navbar-item,
|
|
.navbar-link
|
|
border-radius: var(--radius, #{$radius})
|
|
&.is-transparent
|
|
a.navbar-item,
|
|
.navbar-link
|
|
&:focus,
|
|
&:hover,
|
|
&.is-active
|
|
background-color: transparent !important
|
|
.navbar-item.has-dropdown
|
|
&.is-active,
|
|
&.is-hoverable:focus,
|
|
&.is-hoverable:focus-within,
|
|
&.is-hoverable:hover
|
|
.navbar-link
|
|
background-color: transparent !important
|
|
.navbar-dropdown
|
|
a.navbar-item
|
|
&:focus,
|
|
&:hover
|
|
background-color: var(--navbar-dropdown-item-hover-background-color)
|
|
color: var(--navbar-dropdown-item-hover-color)
|
|
&.is-active
|
|
background-color: var(--navbar-dropdown-item-active-background-color)
|
|
color: var(--navbar-dropdown-item-active-color)
|
|
.navbar-burger
|
|
display: none
|
|
.navbar-item,
|
|
.navbar-link
|
|
align-items: center
|
|
display: flex
|
|
.navbar-item
|
|
&.has-dropdown
|
|
align-items: stretch
|
|
&.has-dropdown-up
|
|
.navbar-link::after
|
|
transform: rotate(135deg) translate(0.25em, -0.25em)
|
|
.navbar-dropdown
|
|
border-bottom: var(--navbar-dropdown-border-top)
|
|
border-radius: var(--navbar-dropdown-radius) var(--navbar-dropdown-radius) 0 0
|
|
border-top: none
|
|
bottom: 100%
|
|
box-shadow: 0 -8px 8px var(--navbar-shadow-color)
|
|
top: auto
|
|
&.is-active,
|
|
&.is-hoverable:focus,
|
|
&.is-hoverable:focus-within,
|
|
&.is-hoverable:hover
|
|
.navbar-dropdown
|
|
display: block
|
|
.navbar.is-spaced &,
|
|
&.is-boxed
|
|
opacity: 1
|
|
pointer-events: auto
|
|
transform: translateY(0)
|
|
.navbar-menu
|
|
flex-grow: 1
|
|
flex-shrink: 0
|
|
.navbar-start
|
|
justify-content: flex-start
|
|
+ltr-property("margin", auto)
|
|
.navbar-end
|
|
justify-content: flex-end
|
|
+ltr-property("margin", auto, false)
|
|
.navbar-dropdown
|
|
background-color: var(--navbar-dropdown-background-color)
|
|
border-bottom-left-radius: var(--navbar-dropdown-radius)
|
|
border-bottom-right-radius: var(--navbar-dropdown-radius)
|
|
border-top: var(--navbar-dropdown-border-top)
|
|
box-shadow: 0 8px 8px var(--navbar-shadow-color)
|
|
display: none
|
|
font-size: 0.875rem
|
|
+ltr-position(0, false)
|
|
min-width: 100%
|
|
position: absolute
|
|
top: 100%
|
|
z-index: var(--navbar-dropdown-z)
|
|
.navbar-item
|
|
padding: 0.375rem 1rem
|
|
white-space: nowrap
|
|
a.navbar-item
|
|
+ltr-property("padding", 3rem)
|
|
&:focus,
|
|
&:hover
|
|
background-color: var(--navbar-dropdown-item-hover-background-color)
|
|
color: var(--navbar-dropdown-item-hover-color)
|
|
&.is-active
|
|
background-color: var(--navbar-dropdown-item-active-background-color) !important
|
|
color: var(--navbar-dropdown-item-active-color)
|
|
.navbar.is-spaced &,
|
|
&.is-boxed
|
|
border-radius: var(--navbar-dropdown-boxed-radius)
|
|
border-top: none
|
|
box-shadow: var(--navbar-dropdown-boxed-shadow)
|
|
display: block
|
|
opacity: 0
|
|
pointer-events: none
|
|
top: calc(100% + (#{$navbar-dropdown-offset}))
|
|
transform: translateY(-5px)
|
|
transition-duration: var(--speed, #{$speed})
|
|
transition-property: opacity, transform
|
|
&.is-right
|
|
left: auto
|
|
right: 0
|
|
.navbar-divider
|
|
display: block
|
|
.navbar > .container,
|
|
.container > .navbar
|
|
.navbar-brand
|
|
+ltr-property("margin", -.75rem, false)
|
|
.navbar-menu
|
|
+ltr-property("margin", -.75rem)
|
|
// Fixed navbar
|
|
.navbar
|
|
&.is-fixed-bottom-desktop,
|
|
&.is-fixed-top-desktop
|
|
+navbar-fixed
|
|
&.is-fixed-bottom-desktop
|
|
bottom: 0
|
|
&.has-shadow
|
|
box-shadow: 0 -2px 3px var(--navbar-shadow-color)
|
|
&.is-fixed-top-desktop
|
|
top: 0
|
|
html,
|
|
body
|
|
&.has-navbar-fixed-top-desktop
|
|
padding-top: var(--navbar-height)
|
|
&.has-navbar-fixed-bottom-desktop
|
|
padding-bottom: var(--navbar-height)
|
|
&.has-spaced-navbar-fixed-top
|
|
padding-top: calc(#{var(--navbar-height)} + calc(#{var(--navbar-padding-vertical)} * 2))
|
|
&.has-spaced-navbar-fixed-bottom
|
|
padding-bottom: calc(#{var(--navbar-height)} + calc(#{var(--navbar-padding-vertical)} * 2))
|
|
// Hover/Active states
|
|
a.navbar-item,
|
|
.navbar-link
|
|
&.is-active
|
|
color: var(--navbar-item-active-color)
|
|
&.is-active:not(:focus):not(:hover)
|
|
background-color: var(--navbar-item-active-background-color)
|
|
.navbar-item.has-dropdown
|
|
&:focus,
|
|
&:hover,
|
|
&.is-active
|
|
.navbar-link
|
|
background-color: var(--navbar-item-hover-background-color)
|
|
|
|
// Combination
|
|
|
|
.hero
|
|
&.is-fullheight-with-navbar
|
|
min-height: calc(100vh - #{var(--navbar-height)})
|