Skip to content

Instantly share code, notes, and snippets.

@alice-liu
Created January 24, 2014 23:46
Show Gist options
  • Save alice-liu/8609219 to your computer and use it in GitHub Desktop.
Save alice-liu/8609219 to your computer and use it in GitHub Desktop.
Generated by SassMeister.com.
// ----
// Sass (v3.3.0.rc.2)
// Compass (v1.0.0.alpha.17)
// ----
$tooltip-arrow-width: 7px;
$tooltip-arrow-offset: $tooltip-arrow-width * 2;
$white: white;
$border-color: gray;
.dialog {
// Includes arrow pointer
&.arrow {
// Default is top placement
&:before,
&:after {
position: absolute;
left: 50%;
width: 0;
height: 0;
border: solid transparent;
content: "";
pointer-events: none;
}
&:after {
bottom: -1 * $tooltip-arrow-offset + 1;
margin-left: -1 * $tooltip-arrow-width;
border-width: $tooltip-arrow-width;
border-top-color: $white;
}
&:before {
bottom: -1 * $tooltip-arrow-offset - 2;
margin-left: -1 * $tooltip-arrow-width - 1;
border-width: $tooltip-arrow-width + 1;
border-top-color: $border-color;
}
// Bottom placement
&[data-placement^="bottom"] {
&:before,
&:after {
top: -1 * $tooltip-arrow-offset + 1;
bottom: auto;
border-color: transparent;
border-bottom-color: $white;
}
&:before {
top: -1 * $tooltip-arrow-offset - 2;
border-bottom-color: $border-color;
}
}
// Top and bottom placement - left and right arrows
&[data-placement="top-left"],
&[data-placement="bottom-left"] {
&:after {
left: $tooltip-arrow-offset + 1;
margin-left: auto;
}
&:before {
left: $tooltip-arrow-offset;
margin-left: auto;
}
}
&[data-placement="top-right"],
&[data-placement="bottom-right"] {
&:after {
right: $tooltip-arrow-offset + 1;
left: auto;
margin-left: auto;
}
&:before {
right: $tooltip-arrow-offset;
left: auto;
margin-left: auto;
}
}
// Left and right placements
&[data-placement^="left"],
&[data-placement^="right"] {
&:before,
&:after {
top: 50%;
bottom: auto;
margin-top: -1 * $tooltip-arrow-width;
margin-left: auto;
}
&:before {
margin-top: -1 * $tooltip-arrow-width - 1;
}
}
// Left placement
&[data-placement^="left"] {
&:before,
&:after {
right: -1 * $tooltip-arrow-offset + 1;
border-color: transparent;
border-left-color: $white;
}
&:before {
right: -1 * $tooltip-arrow-offset - 2;
border-left-color: $border-color;
}
}
// Right placement
&[data-placement^="right"] {
&:before,
&:after {
right: auto;
left: -1 * $tooltip-arrow-offset + 1;
border-color: transparent;
border-right-color: $white;
}
&:before {
left: -1 * $tooltip-arrow-offset - 2;
border-right-color: $border-color;
}
}
// Left and right placements - top and bottom arrows
&[data-placement="right-top"],
&[data-placement="left-top"] {
&:after {
top: $tooltip-arrow-offset + 1;
margin-top: auto;
}
&:before {
top: $tooltip-arrow-offset;
margin-top: auto;
}
}
&[data-placement="right-bottom"],
&[data-placement="left-bottom"] {
&:after {
top: auto;
bottom: $tooltip-arrow-offset + 1;
margin-top: auto;
}
&:before {
top: auto;
bottom: $tooltip-arrow-offset;
margin-top: auto;
}
}
}
}
.dialog.arrow:before, .dialog.arrow:after {
position: absolute;
left: 50%;
width: 0;
height: 0;
border: solid transparent;
content: "";
pointer-events: none;
}
.dialog.arrow:after {
bottom: -13px;
margin-left: -7px;
border-width: 7px;
border-top-color: white;
}
.dialog.arrow:before {
bottom: -16px;
margin-left: -8px;
border-width: 8px;
border-top-color: gray;
}
.dialog.arrow[data-placement^="bottom"]:before, .dialog.arrow[data-placement^="bottom"]:after {
top: -13px;
bottom: auto;
border-color: transparent;
border-bottom-color: white;
}
.dialog.arrow[data-placement^="bottom"]:before {
top: -16px;
border-bottom-color: gray;
}
.dialog.arrow[data-placement="top-left"]:after, .dialog.arrow[data-placement="bottom-left"]:after {
left: 15px;
margin-left: auto;
}
.dialog.arrow[data-placement="top-left"]:before, .dialog.arrow[data-placement="bottom-left"]:before {
left: 14px;
margin-left: auto;
}
.dialog.arrow[data-placement="top-right"]:after, .dialog.arrow[data-placement="bottom-right"]:after {
right: 15px;
left: auto;
margin-left: auto;
}
.dialog.arrow[data-placement="top-right"]:before, .dialog.arrow[data-placement="bottom-right"]:before {
right: 14px;
left: auto;
margin-left: auto;
}
.dialog.arrow[data-placement^="left"]:before, .dialog.arrow[data-placement^="left"]:after, .dialog.arrow[data-placement^="right"]:before, .dialog.arrow[data-placement^="right"]:after {
top: 50%;
bottom: auto;
margin-top: -7px;
margin-left: auto;
}
.dialog.arrow[data-placement^="left"]:before, .dialog.arrow[data-placement^="right"]:before {
margin-top: -8px;
}
.dialog.arrow[data-placement^="left"]:before, .dialog.arrow[data-placement^="left"]:after {
right: -13px;
border-color: transparent;
border-left-color: white;
}
.dialog.arrow[data-placement^="left"]:before {
right: -16px;
border-left-color: gray;
}
.dialog.arrow[data-placement^="right"]:before, .dialog.arrow[data-placement^="right"]:after {
right: auto;
left: -13px;
border-color: transparent;
border-right-color: white;
}
.dialog.arrow[data-placement^="right"]:before {
left: -16px;
border-right-color: gray;
}
.dialog.arrow[data-placement="right-top"]:after, .dialog.arrow[data-placement="left-top"]:after {
top: 15px;
margin-top: auto;
}
.dialog.arrow[data-placement="right-top"]:before, .dialog.arrow[data-placement="left-top"]:before {
top: 14px;
margin-top: auto;
}
.dialog.arrow[data-placement="right-bottom"]:after, .dialog.arrow[data-placement="left-bottom"]:after {
top: auto;
bottom: 15px;
margin-top: auto;
}
.dialog.arrow[data-placement="right-bottom"]:before, .dialog.arrow[data-placement="left-bottom"]:before {
top: auto;
bottom: 14px;
margin-top: auto;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment