// ------------------------------------------------------------ // Popovers // // Styles for the popover component // // * Popovers // * Triangles placeholder styles // * Triangles classes // * Open/close // * Positioning // ------------------------------------------------------------ // // Popovers // -------------------------------------------------- .popover-item { position: relative; display: inline-block; padding: 11px 26px 13px 16px; background: $darkgrey; min-width: 300px; max-width: 400px; border-radius: 6px; font-size: 1.2rem; color: $midgrey; } .popover-title { font-size: 1.4rem; font-weight: 300; color: #fff; } .popover-desc { margin-top: -4px; } .popover-body { margin-top: 11px; line-height: 1.7; b { color: #fff; } > *:last-child { margin: 0; } } // // Triangles placeholder styles // -------------------------------------------------- %popover-triangle { &:before { content: ''; position: absolute; display: block; } // :before } %popover-triangle-vertical-top { &:before { @include triangle($popover_triangle, $darkgrey, up, shallow); top: -(floor($popover_triangle * $popover_triangle_shallow_multiplier)); } } %popover-triangle-vertical-bottom { &:before { @include triangle($popover_triangle, $darkgrey, down, shallow); bottom: -(floor($popover_triangle * $popover_triangle_shallow_multiplier)); } } %popover-triangle-horizontal-left { &:before { @include triangle($popover_triangle, $darkgrey, left, shallow); left: -(floor($popover_triangle * $popover_triangle_shallow_multiplier)); } } %popover-triangle-horizontal-right { &:before { @include triangle($popover_triangle, $darkgrey, right, shallow); right: -(floor($popover_triangle * $popover_triangle_shallow_multiplier)); } } %popover-triangle-vertical-center { &:before { left: 50%; margin-left: -($popover_triangle / 2); } } %popover-triangle-vertical-left { &:before { left: $popover_triangle; } } %popover-triangle-vertical-right { &:before { left: auto; right: $popover_triangle; } } %popover-triangle-horizontal-center { &:before { top: 50%; margin-top: -$popover_triangle; } } %popover-triangle-horizontal-top { &:before { top: $popover_triangle; } } %popover-triangle-horizontal-bottom { &:before { top: auto; bottom: $popover_triangle; } } // // Triangles classes // -------------------------------------------------- .popover-triangle-top { @extend %popover-triangle; @extend %popover-triangle-vertical-top; @extend %popover-triangle-vertical-center; transform-origin: top center; } .popover-triangle-top-left { @extend %popover-triangle; @extend %popover-triangle-vertical-top; @extend %popover-triangle-vertical-left; transform-origin: top left; } .popover-triangle-top-right { @extend %popover-triangle; @extend %popover-triangle-vertical-top; @extend %popover-triangle-vertical-right; transform-origin: top right; } .popover-triangle-bottom { @extend %popover-triangle; @extend %popover-triangle-vertical-bottom; @extend %popover-triangle-vertical-center; transform-origin: bottom center; } .popover-triangle-bottom-left { @extend %popover-triangle; @extend %popover-triangle-vertical-bottom; @extend %popover-triangle-vertical-left; transform-origin: bottom left; } .popover-triangle-bottom-right { @extend %popover-triangle; @extend %popover-triangle-vertical-bottom; @extend %popover-triangle-vertical-right; transform-origin: bottom right; } .popover-triangle-left { @extend %popover-triangle; @extend %popover-triangle-horizontal-left; @extend %popover-triangle-horizontal-center; transform-origin: left center; } .popover-triangle-left-top { @extend %popover-triangle; @extend %popover-triangle-horizontal-left; @extend %popover-triangle-horizontal-top; transform-origin: left top; } .popover-triangle-left-bottom { @extend %popover-triangle; @extend %popover-triangle-horizontal-left; @extend %popover-triangle-horizontal-bottom; transform-origin: left bottom; } .popover-triangle-right { @extend %popover-triangle; @extend %popover-triangle-horizontal-right; @extend %popover-triangle-horizontal-center; transform-origin: right center; } .popover-triangle-right-top { @extend %popover-triangle; @extend %popover-triangle-horizontal-right; @extend %popover-triangle-horizontal-top; transform-origin: right top; } .popover-triangle-right-bottom { @extend %popover-triangle; @extend %popover-triangle-horizontal-right; @extend %popover-triangle-horizontal-bottom; transform-origin: right bottom; } // // Open/close // -------------------------------------------------- .popover { position: relative; display: inline-block; .popover-item { position: absolute; z-index: 20; &.open { display: block; } &.closed { display: none; } } }//.popover // // Positioning // -------------------------------------------------- // Position relative to the position of the triangle // So... `popover-triangle-left-top` opens on the right // of the button because the triangle is on the top left, // pointing to the top right of the button // // |------| |-----------------| // |Button| < Popover content | // |------| | Lorem ipsum dol | // |-----------------| .popover-item.popover-triangle-bottom { bottom: calc(100% + 16px); left: 50%; transform: translateX(-50%); } .popover-item.popover-triangle-bottom-left { bottom: calc(100% + 16px); left: 0; } .popover-item.popover-triangle-bottom-right { bottom: calc(100% + 16px); right: 0; } .popover-item.popover-triangle-top { top: calc(100% + 16px); left: 50%; transform: translateX(-50%); } .popover-item.popover-triangle-top-left { top: calc(100% + 16px); left: 0; } .popover-item.popover-triangle-top-right { top: calc(100% + 16px); right: 0; } .popover-item.popover-triangle-left { left: calc(100% + 16px); top: 50%; transform: translateY(-50%); } .popover-item.popover-triangle-left-top { left: calc(100% + 16px); top: 50%; transform: translateY(-($popover_triangle * 2)); } .popover-item.popover-triangle-left-bottom { left: calc(100% + 16px); top: 50%; transform: translateY(calc(-100% + #{($popover_triangle * 2)})); } .popover-item.popover-triangle-right { right: calc(100% + 16px); top: 50%; transform: translateY(-50%); } .popover-item.popover-triangle-right-top { right: calc(100% + 16px); top: 50%; transform: translateY(-($popover_triangle * 2)); } .popover-item.popover-triangle-right-bottom { right: calc(100% + 16px); top: 50%; transform: translateY(calc(-100% + #{($popover_triangle * 2)})); }