Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kakawait/hugo-tranquilpeak-theme.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/scss/components/_tooltip.scss')
-rwxr-xr-xsrc/scss/components/_tooltip.scss166
1 files changed, 166 insertions, 0 deletions
diff --git a/src/scss/components/_tooltip.scss b/src/scss/components/_tooltip.scss
new file mode 100755
index 0000000..c619199
--- /dev/null
+++ b/src/scss/components/_tooltip.scss
@@ -0,0 +1,166 @@
+// The default position of a tooltip is at the top of the focused element
+.tooltip {
+ position: relative;
+ cursor: pointer;
+ // Add default behavior from `tooltip--top`
+ @extend .tooltip--top;
+
+ &:before {
+ z-index: map-get($z-indexes, c-tooltip);
+ border: 6px solid transparent;
+ background: transparent;
+ content: "";
+ }
+ &:after {
+ z-index: map-get($z-indexes, c-tooltip);
+ padding: 8px;
+ // Fixed width of tooltip
+ min-width: map-get($tooltip, min-width);
+ background-color: map-get($tooltip, background);
+ color: #fff;
+ content: attr(data-tooltip);
+ font-size: 0.93em;
+ line-height: $line-height-base;
+ border-radius: 5px;
+ }
+ &:before,
+ &:after {
+ position: absolute;
+ visibility: hidden;
+ @include opacity(0);
+ // Animate tooltip
+ -webkit-transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out, -webkit-transform 0.2s cubic-bezier(0.71, 1.7, 0.77, 1.24);
+ -moz-transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out, -moz-transform 0.2s cubic-bezier(0.71, 1.7, 0.77, 1.24);
+ transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out, transform 0.2s cubic-bezier(0.71, 1.7, 0.77, 1.24);
+ @include prefix(transform, translate3d(0, 0, 0), 'webkit' 'moz' 'ms');
+ pointer-events: none;
+ }
+
+ &:hover:before,
+ &:hover:after,
+ &:focus:before,
+ &:focus:after {
+ visibility: visible;
+ @include opacity(1);
+ // Animate tooltip
+ @include prefix(transform, translateY(-12px), 'webkit' 'moz' 'ms' 'o');
+ }
+}
+
+[data-tooltip] {
+ @extend .tooltip;
+}
+
+// Directions
+// Position tooltip at the top of the focused element
+.tooltip--top {
+ &:before {
+ // Let's appear perfectly tooltip's arrow
+ margin-bottom: -#{map-get($tooltip, arrow-height)};
+ border-top-color: map-get($tooltip, background);
+ }
+ &:after {
+ // Center tooltip with his arrow
+ margin-left: -#{(map-get($tooltip, min-width) / 2) + 1};
+ }
+ &:before,
+ &:after {
+ // Position tooltip at the right of the focused element
+ bottom: 100%;
+ // Horizontally center tooltip's arrow relative to the focused element
+ left: calc(50% - (#{map-get($tooltip, arrow-width)} / 2));
+ }
+ &:hover:before,
+ &:hover:after,
+ &:focus:before,
+ &:focus:after {
+ // Translate tooltip to the top
+ @include prefix(transform, translateY(-12px), 'webkit' 'moz' 'ms' 'o');
+ }
+}
+
+// Position tooltip at the left of the focused element
+.tooltip--left {
+ &:before {
+ margin-left: 0;
+ margin-right: -#{map-get($tooltip, arrow-height)};
+ margin-bottom: 0;
+ border-top-color: transparent;
+ border-left-color: map-get($tooltip, background);
+ }
+ &:after {
+ margin-left: 0;
+ // Vertically center tooltip content
+ margin-bottom: -#{map-get($tooltip, arrow-width)};
+ }
+ &:before,
+ &:after {
+ // Position arrow at the left of the focused element
+ right: 100%;
+ // Vertically center tooltip's arrow relative to the focused element
+ bottom: calc(50% - (#{map-get($tooltip, arrow-width)} / 2));
+ left: auto;
+ }
+ &:hover:before,
+ &:hover:after,
+ &:focus:before,
+ &:focus:after {
+ // Translate tooltip to the left
+ @include prefix(transform, translateX(-12px), 'webkit' 'moz' 'ms' 'o');
+ }
+}
+
+// Position tooltip at the bottom of the focused element
+.tooltip--bottom {
+ &:before {
+ margin-top: -#{map-get($tooltip, arrow-height)};
+ margin-bottom: 0;
+ border-top-color: transparent;
+ border-bottom-color: map-get($tooltip, background);
+ }
+ &:before,
+ &:after {
+ // Position arrow at the bottom of the focused element
+ top: 100%;
+ bottom: auto;
+ // Horizontally center tooltip's arrow relative to the focused element
+ left: calc(50% - (#{map-get($tooltip, arrow-width)} / 2));
+ }
+ &:hover:before,
+ &:hover:after,
+ &:focus:before,
+ &:focus:after {
+ // Translate tooltip to the bottom
+ @include prefix(transform, translateY(12px), 'webkit' 'moz' 'ms' 'o');
+ }
+}
+
+// Position tooltip at the right of the focused element
+.tooltip--right {
+ &:before {
+ margin-bottom: 0;
+ margin-left: -#{map-get($tooltip, arrow-height)};
+ border-top-color: transparent;
+ border-right-color: map-get($tooltip, background);
+ }
+ &:after {
+ margin-left: 0;
+ // Vertically center tooltip content
+ margin-bottom: -#{map-get($tooltip, arrow-width)};
+ }
+ &:before,
+ &:after {
+ // Vertically center tooltip's arrow relative to the focused element
+ bottom: calc(50% - (#{map-get($tooltip, arrow-width)} / 2));
+ // Position arrow at the right of the focused element
+ left: 100%;
+ right: auto;
+ }
+ &:hover:before,
+ &:hover:after,
+ &:focus:before,
+ &:focus:after {
+ // Translate tooltip to the right
+ @include prefix(transform, translateX(12px), 'webkit' 'moz' 'ms' 'o');
+ }
+} \ No newline at end of file