| [2640] | 1 | /* |
|---|
| 2 | * Scut, a collection of Sass utilities to ease and improve our implementations of common style-code patterns. |
|---|
| 3 | * v0.8.0 |
|---|
| 4 | * Docs at http://davidtheclark.github.io/scut |
|---|
| 5 | */ |
|---|
| 6 | |
|---|
| 7 | // SCUT CLEARFIX |
|---|
| 8 | // http://davidtheclark.github.io/scut/#clearfix |
|---|
| 9 | |
|---|
| 10 | @mixin scut-clearfix { |
|---|
| 11 | |
|---|
| 12 | &:after { |
|---|
| 13 | content: ""; |
|---|
| 14 | display: table; |
|---|
| 15 | clear: both; |
|---|
| 16 | } |
|---|
| 17 | |
|---|
| 18 | } |
|---|
| 19 | |
|---|
| 20 | %scut-clearfix { |
|---|
| 21 | @include scut-clearfix; |
|---|
| 22 | } |
|---|
| 23 | |
|---|
| 24 | // SCUT LIST: UNSTYLED |
|---|
| 25 | // http://davidtheclark.github.io/scut/#list_unstyled |
|---|
| 26 | |
|---|
| 27 | @mixin scut-list-unstyled { |
|---|
| 28 | |
|---|
| 29 | list-style-type: none; |
|---|
| 30 | padding-left: 0; |
|---|
| 31 | |
|---|
| 32 | } |
|---|
| 33 | |
|---|
| 34 | %scut-list-unstyled { |
|---|
| 35 | @include scut-list-unstyled; |
|---|
| 36 | } |
|---|
| 37 | |
|---|
| 38 | // SCUT LIST: FLOATED |
|---|
| 39 | // http://davidtheclark.github.io/scut/#list_floated |
|---|
| 40 | |
|---|
| 41 | // Depends on `list-unstyled` and `clearfix`. |
|---|
| 42 | |
|---|
| 43 | @mixin scut-list-floated ( |
|---|
| 44 | $space: false, |
|---|
| 45 | $dir: left |
|---|
| 46 | ) { |
|---|
| 47 | |
|---|
| 48 | @include scut-list-unstyled; |
|---|
| 49 | @include scut-clearfix; |
|---|
| 50 | |
|---|
| 51 | & > li { |
|---|
| 52 | float: $dir; |
|---|
| 53 | } |
|---|
| 54 | |
|---|
| 55 | @if $space { |
|---|
| 56 | & > li + li { |
|---|
| 57 | margin-#{$dir}: $space; |
|---|
| 58 | } |
|---|
| 59 | } |
|---|
| 60 | |
|---|
| 61 | } |
|---|
| 62 | |
|---|
| 63 | %scut-list-floated { |
|---|
| 64 | @include scut-list-floated; |
|---|
| 65 | } |
|---|
| 66 | |
|---|
| 67 | |
|---|
| 68 | // SCUT POSITIONING: COORDINATES |
|---|
| 69 | // http://davidtheclark.github.io/scut/#positioning_coordinates |
|---|
| 70 | |
|---|
| 71 | @function scut-autoOrValue ($val) { |
|---|
| 72 | @if $val == a or $val == auto { |
|---|
| 73 | @return auto; |
|---|
| 74 | } |
|---|
| 75 | @else { |
|---|
| 76 | @return $val; |
|---|
| 77 | } |
|---|
| 78 | } |
|---|
| 79 | |
|---|
| 80 | @mixin scut-coords ( |
|---|
| 81 | $coordinates: n n n n |
|---|
| 82 | ) { |
|---|
| 83 | |
|---|
| 84 | $top: nth($coordinates, 1); |
|---|
| 85 | $right: nth($coordinates, 2); |
|---|
| 86 | $bottom: nth($coordinates, 3); |
|---|
| 87 | $left: nth($coordinates, 4); |
|---|
| 88 | |
|---|
| 89 | @if $top != n { |
|---|
| 90 | top: scut-autoOrValue($top); |
|---|
| 91 | } |
|---|
| 92 | @if $right != n { |
|---|
| 93 | right: scut-autoOrValue($right); |
|---|
| 94 | } |
|---|
| 95 | @if $bottom != n { |
|---|
| 96 | bottom: scut-autoOrValue($bottom); |
|---|
| 97 | } |
|---|
| 98 | @if $left != n { |
|---|
| 99 | left: scut-autoOrValue($left); |
|---|
| 100 | } |
|---|
| 101 | |
|---|
| 102 | } |
|---|
| 103 | |
|---|
| 104 | // SCUT STRIP UNIT |
|---|
| 105 | // http://davidtheclark.github.io/scut/#strip_unit |
|---|
| 106 | |
|---|
| 107 | @function scut-strip-unit ( |
|---|
| 108 | $num |
|---|
| 109 | ) { |
|---|
| 110 | |
|---|
| 111 | @return $num / ($num * 0 + 1); |
|---|
| 112 | |
|---|
| 113 | } |
|---|
| 114 | |
|---|
| 115 | // SCUT PIXELS TO EMS |
|---|
| 116 | // http://davidtheclark.github.io/scut/#pixels-to-ems |
|---|
| 117 | |
|---|
| 118 | // Depends on `scut-strip-unit`. |
|---|
| 119 | |
|---|
| 120 | $scut-em-base: 16 !default; |
|---|
| 121 | |
|---|
| 122 | @function scut-em ( |
|---|
| 123 | $pixels, |
|---|
| 124 | $base: $scut-em-base |
|---|
| 125 | ) { |
|---|
| 126 | |
|---|
| 127 | // $base could be in em or px (no unit = px). |
|---|
| 128 | // Adjust accordingly to create a $divisor that |
|---|
| 129 | // serves as context for $pixels. |
|---|
| 130 | $multiplier: if(unit($base) == em, 16, 1); |
|---|
| 131 | $divisor: scut-strip-unit($base) * $multiplier; |
|---|
| 132 | |
|---|
| 133 | $em-vals: (); |
|---|
| 134 | @each $val in $pixels { |
|---|
| 135 | $val-in-ems: (scut-strip-unit($val) / $divisor) * 1em; |
|---|
| 136 | $em-vals: append($em-vals, $val-in-ems); |
|---|
| 137 | } |
|---|
| 138 | |
|---|
| 139 | @if length($em-vals) == 1 { |
|---|
| 140 | // return a single value instead of a list, |
|---|
| 141 | // so it can be used in calculations |
|---|
| 142 | @return nth($em-vals, 1); |
|---|
| 143 | } |
|---|
| 144 | @else { |
|---|
| 145 | @return $em-vals; |
|---|
| 146 | } |
|---|
| 147 | |
|---|
| 148 | } |
|---|
| 149 | |
|---|
| 150 | // SCUT PIXELS TO REMS |
|---|
| 151 | // http://davidtheclark.github.io/scut/#pixels-to-rems |
|---|
| 152 | |
|---|
| 153 | // Depends on `scut-strip-unit`. |
|---|
| 154 | |
|---|
| 155 | @function scut-rem ( |
|---|
| 156 | $pixels |
|---|
| 157 | ) { |
|---|
| 158 | |
|---|
| 159 | $rem-vals: (); |
|---|
| 160 | @each $val in $pixels { |
|---|
| 161 | $val-in-rems: scut-strip-unit($val) / 16 * 1rem; |
|---|
| 162 | $rem-vals: append($rem-vals, $val-in-rems); |
|---|
| 163 | } |
|---|
| 164 | |
|---|
| 165 | @if length($rem-vals) == 1 { |
|---|
| 166 | // return a single value instead of a list, |
|---|
| 167 | // so it can be used in calculations |
|---|
| 168 | @return nth($rem-vals, 1); |
|---|
| 169 | } |
|---|
| 170 | @else { |
|---|
| 171 | @return $rem-vals; |
|---|
| 172 | } |
|---|
| 173 | |
|---|
| 174 | } |
|---|
| 175 | |
|---|
| 176 | // SCUT BORDER |
|---|
| 177 | // http://davidtheclark.github.io/scut/#border |
|---|
| 178 | |
|---|
| 179 | @mixin scut-border ( |
|---|
| 180 | $style, |
|---|
| 181 | $sides: n y |
|---|
| 182 | ) { |
|---|
| 183 | |
|---|
| 184 | @if length($sides) == 2 { |
|---|
| 185 | @if nth($sides, 1) != n { |
|---|
| 186 | border-top: $style; |
|---|
| 187 | border-bottom: $style; |
|---|
| 188 | } |
|---|
| 189 | @if nth($sides, 2) != n { |
|---|
| 190 | border-left: $style; |
|---|
| 191 | border-right: $style; |
|---|
| 192 | } |
|---|
| 193 | } |
|---|
| 194 | |
|---|
| 195 | @else if length($sides) == 4 { |
|---|
| 196 | @if nth($sides, 1) != n { |
|---|
| 197 | border-top: $style; |
|---|
| 198 | } |
|---|
| 199 | @if nth($sides, 2) != n { |
|---|
| 200 | border-right: $style; |
|---|
| 201 | } |
|---|
| 202 | @if nth($sides, 3) != n { |
|---|
| 203 | border-bottom: $style; |
|---|
| 204 | } |
|---|
| 205 | @if nth($sides, 4) != n { |
|---|
| 206 | border-left: $style; |
|---|
| 207 | } |
|---|
| 208 | } |
|---|
| 209 | |
|---|
| 210 | @else { |
|---|
| 211 | @warn "Scut-border requires a $sides argument of 2 or 4 values." |
|---|
| 212 | } |
|---|
| 213 | |
|---|
| 214 | } |
|---|
| 215 | |
|---|
| 216 | // SCUT CIRCLE |
|---|
| 217 | // http://davidtheclark.github.io/scut/#circle |
|---|
| 218 | |
|---|
| 219 | @mixin scut-circle ( |
|---|
| 220 | $size, |
|---|
| 221 | $color: inherit |
|---|
| 222 | ) { |
|---|
| 223 | |
|---|
| 224 | border-radius: 50%; |
|---|
| 225 | display: inline-block; |
|---|
| 226 | |
|---|
| 227 | @if $color == inherit { |
|---|
| 228 | // If user wants to inherit the color, |
|---|
| 229 | // take advantage of the fact that border |
|---|
| 230 | // color defaults to the text color of the element. |
|---|
| 231 | border-width: $size / 2; |
|---|
| 232 | border-style: solid; |
|---|
| 233 | height: 0; |
|---|
| 234 | width: 0; |
|---|
| 235 | } |
|---|
| 236 | @else { |
|---|
| 237 | // Otherwise, just use background-color. |
|---|
| 238 | background-color: $color; |
|---|
| 239 | height: $size; |
|---|
| 240 | width: $size; |
|---|
| 241 | } |
|---|
| 242 | |
|---|
| 243 | } |
|---|
| 244 | |
|---|
| 245 | // SCUT COLOR SWAP |
|---|
| 246 | // http://davidtheclark.github.io/scut/#color_swap |
|---|
| 247 | |
|---|
| 248 | @mixin scut-color-swap ( |
|---|
| 249 | $off, |
|---|
| 250 | $on, |
|---|
| 251 | $duration: 0, |
|---|
| 252 | $bg: false |
|---|
| 253 | ) { |
|---|
| 254 | |
|---|
| 255 | $transition-properties: null; |
|---|
| 256 | $off-is-list: type-of($off) == list; |
|---|
| 257 | $on-is-list: type-of($on) == list; |
|---|
| 258 | |
|---|
| 259 | // If $off IS a list, |
|---|
| 260 | // assign color and background-color. |
|---|
| 261 | @if $off-is-list { |
|---|
| 262 | color: nth($off, 1); |
|---|
| 263 | background-color: nth($off, 2); |
|---|
| 264 | $transition-properties: background-color, color; |
|---|
| 265 | } |
|---|
| 266 | |
|---|
| 267 | // If $off IS NOT a list and $bg is TRUE, |
|---|
| 268 | // assign background-color. |
|---|
| 269 | @else if $bg and not $off-is-list { |
|---|
| 270 | background-color: $off; |
|---|
| 271 | $transition-properties: background-color; |
|---|
| 272 | } |
|---|
| 273 | |
|---|
| 274 | // If $off IS NOT a list and $bg is FALSE, |
|---|
| 275 | // assign color. |
|---|
| 276 | @else { |
|---|
| 277 | color: $off; |
|---|
| 278 | $transition-properties: color; |
|---|
| 279 | } |
|---|
| 280 | |
|---|
| 281 | // Only set-up transition if $duration != 0. |
|---|
| 282 | @if $duration != 0 { |
|---|
| 283 | transition-property: $transition-properties; |
|---|
| 284 | transition-duration: $duration; |
|---|
| 285 | } |
|---|
| 286 | |
|---|
| 287 | &:hover, |
|---|
| 288 | &:focus { |
|---|
| 289 | |
|---|
| 290 | // $on is treated the same as $off, above. |
|---|
| 291 | @if $on-is-list { |
|---|
| 292 | color: nth($on, 1); |
|---|
| 293 | background-color: nth($on, 2); |
|---|
| 294 | } |
|---|
| 295 | |
|---|
| 296 | @else if $bg and not $on-is-list { |
|---|
| 297 | background-color: $on; |
|---|
| 298 | } |
|---|
| 299 | |
|---|
| 300 | @else { |
|---|
| 301 | color: $on; |
|---|
| 302 | } |
|---|
| 303 | } |
|---|
| 304 | |
|---|
| 305 | } |
|---|
| 306 | |
|---|
| 307 | // SCUT HD BREAKPOINT |
|---|
| 308 | // http://davidtheclark.github.io/scut/#hd_breakpoint |
|---|
| 309 | |
|---|
| 310 | @mixin scut-hd-bp ( |
|---|
| 311 | $ratio: 1.3 |
|---|
| 312 | ) { |
|---|
| 313 | |
|---|
| 314 | @media (-o-min-device-pixel-ratio: #{$ratio}/1), |
|---|
| 315 | (-webkit-min-device-pixel-ratio: #{$ratio}), |
|---|
| 316 | (min-resolution: #{round(96 * $ratio)}dpi) { |
|---|
| 317 | @content; |
|---|
| 318 | } |
|---|
| 319 | |
|---|
| 320 | } |
|---|
| 321 | |
|---|
| 322 | // SCUT HIDE VISUALLY |
|---|
| 323 | // http://davidtheclark.github.io/scut/#hide_visually |
|---|
| 324 | |
|---|
| 325 | @mixin scut-hide-visually { |
|---|
| 326 | |
|---|
| 327 | border: 0; |
|---|
| 328 | clip: rect(0 0 0 0); |
|---|
| 329 | height: 1px; |
|---|
| 330 | margin: -1px; |
|---|
| 331 | overflow: hidden; |
|---|
| 332 | padding: 0; |
|---|
| 333 | position: absolute; |
|---|
| 334 | width: 1px; |
|---|
| 335 | |
|---|
| 336 | } |
|---|
| 337 | |
|---|
| 338 | %scut-hide-visually { |
|---|
| 339 | @include scut-hide-visually; |
|---|
| 340 | } |
|---|
| 341 | |
|---|
| 342 | // SCUT IMAGE REPLACEMENT |
|---|
| 343 | // http://davidtheclark.github.io/scut/#image_replacement |
|---|
| 344 | |
|---|
| 345 | @mixin scut-image-replace { |
|---|
| 346 | |
|---|
| 347 | text-indent: 102%; |
|---|
| 348 | white-space: nowrap; |
|---|
| 349 | overflow: hidden; |
|---|
| 350 | |
|---|
| 351 | } |
|---|
| 352 | |
|---|
| 353 | %scut-image-replace { |
|---|
| 354 | @include scut-image-replace; |
|---|
| 355 | } |
|---|
| 356 | |
|---|
| 357 | // SCUT REMS WITH FALLBACK |
|---|
| 358 | // http://davidtheclark.github.io/scut/#rems_with_fallback |
|---|
| 359 | |
|---|
| 360 | // Depends on scut-rem and scut-strip-unit |
|---|
| 361 | |
|---|
| 362 | @mixin scut-rem-fallback ( |
|---|
| 363 | $pixels, |
|---|
| 364 | $property: font-size |
|---|
| 365 | ) { |
|---|
| 366 | |
|---|
| 367 | $px-vals: null; |
|---|
| 368 | @each $val in $pixels { |
|---|
| 369 | $val-in-px: scut-strip-unit($val) * 1px; |
|---|
| 370 | $px-vals: append($px-vals, $val-in-px); |
|---|
| 371 | } |
|---|
| 372 | $rem-vals: scut-rem($pixels); |
|---|
| 373 | |
|---|
| 374 | #{$property}: $px-vals; |
|---|
| 375 | #{$property}: $rem-vals; |
|---|
| 376 | |
|---|
| 377 | } |
|---|
| 378 | |
|---|
| 379 | // SCUT RESET |
|---|
| 380 | // http://davidtheclark.github.io/scut/#reset |
|---|
| 381 | |
|---|
| 382 | @mixin scut-reset-border-box { |
|---|
| 383 | // Make everything a border-box, because why not? |
|---|
| 384 | *, *:before, *:after { |
|---|
| 385 | -moz-box-sizing: border-box; |
|---|
| 386 | box-sizing: border-box; |
|---|
| 387 | } |
|---|
| 388 | } |
|---|
| 389 | |
|---|
| 390 | @mixin scut-reset-antialias { |
|---|
| 391 | // Antialias! |
|---|
| 392 | body { |
|---|
| 393 | -webkit-font-smoothing: antialiased; |
|---|
| 394 | } |
|---|
| 395 | } |
|---|
| 396 | |
|---|
| 397 | @mixin scut-reset-semanticize { |
|---|
| 398 | // Make headers and <b> semantic, not presentational. |
|---|
| 399 | h1, |
|---|
| 400 | h2, |
|---|
| 401 | h3, |
|---|
| 402 | h4, |
|---|
| 403 | h5, |
|---|
| 404 | h6 { |
|---|
| 405 | font-size: 1em; |
|---|
| 406 | font-weight: normal; |
|---|
| 407 | margin: 0; |
|---|
| 408 | } |
|---|
| 409 | b { |
|---|
| 410 | font-weight: normal; |
|---|
| 411 | } |
|---|
| 412 | } |
|---|
| 413 | |
|---|
| 414 | @mixin scut-reset-pointer { |
|---|
| 415 | // Clickable form elements should have a pointer. |
|---|
| 416 | label, |
|---|
| 417 | select, |
|---|
| 418 | option, |
|---|
| 419 | button { |
|---|
| 420 | cursor: pointer; |
|---|
| 421 | } |
|---|
| 422 | } |
|---|
| 423 | |
|---|
| 424 | @mixin scut-reset-form { |
|---|
| 425 | fieldset { |
|---|
| 426 | border: 0; |
|---|
| 427 | margin: 0; |
|---|
| 428 | padding: 0; |
|---|
| 429 | } |
|---|
| 430 | textarea { |
|---|
| 431 | resize: vertical; |
|---|
| 432 | } |
|---|
| 433 | } |
|---|
| 434 | |
|---|
| 435 | @mixin scut-reset-button { |
|---|
| 436 | // Reset default button styles, which are never used. |
|---|
| 437 | button, |
|---|
| 438 | input[type="button"] { |
|---|
| 439 | background: transparent; |
|---|
| 440 | border: 0; |
|---|
| 441 | color: inherit; |
|---|
| 442 | font: inherit; |
|---|
| 443 | margin: 0; |
|---|
| 444 | outline: none; |
|---|
| 445 | padding: 0; |
|---|
| 446 | width: auto; |
|---|
| 447 | -webkit-appearance: none; |
|---|
| 448 | -webkit-font-smoothing: antialiased; |
|---|
| 449 | -webkit-user-select: none; |
|---|
| 450 | -moz-user-select: none; |
|---|
| 451 | -ms-user-select: none; |
|---|
| 452 | user-select: none; |
|---|
| 453 | &::-moz-focus-inner { |
|---|
| 454 | padding:0; |
|---|
| 455 | border:0; |
|---|
| 456 | } |
|---|
| 457 | } |
|---|
| 458 | } |
|---|
| 459 | |
|---|
| 460 | @mixin scut-reset-paragraph { |
|---|
| 461 | // Some paragraph margins just get in the way. |
|---|
| 462 | p:first-of-type { |
|---|
| 463 | margin-top: 0; |
|---|
| 464 | } |
|---|
| 465 | p:last-of-type { |
|---|
| 466 | margin-bottom: 0; |
|---|
| 467 | } |
|---|
| 468 | } |
|---|
| 469 | |
|---|
| 470 | // Call them all, minus exclusions! |
|---|
| 471 | @mixin scut-reset ($exclude: false) { |
|---|
| 472 | @if not index($exclude, border-box) { |
|---|
| 473 | @include scut-reset-border-box; |
|---|
| 474 | } |
|---|
| 475 | @if not index($exclude, antialias) { |
|---|
| 476 | @include scut-reset-antialias; |
|---|
| 477 | } |
|---|
| 478 | @if not index($exclude, semanticize) { |
|---|
| 479 | @include scut-reset-semanticize; |
|---|
| 480 | } |
|---|
| 481 | @if not index($exclude, pointer) { |
|---|
| 482 | @include scut-reset-pointer; |
|---|
| 483 | } |
|---|
| 484 | @if not index($exclude, form) { |
|---|
| 485 | @include scut-reset-form; |
|---|
| 486 | } |
|---|
| 487 | @if not index($exclude, button) { |
|---|
| 488 | @include scut-reset-button; |
|---|
| 489 | } |
|---|
| 490 | @if not index($exclude, paragraph) { |
|---|
| 491 | @include scut-reset-paragraph; |
|---|
| 492 | } |
|---|
| 493 | } |
|---|
| 494 | |
|---|
| 495 | // SCUT SELECTED |
|---|
| 496 | // http://davidtheclark.github.io/scut/#selected |
|---|
| 497 | |
|---|
| 498 | @mixin scut-selected ( |
|---|
| 499 | $active: false |
|---|
| 500 | ) { |
|---|
| 501 | |
|---|
| 502 | @if $active { |
|---|
| 503 | &:hover, |
|---|
| 504 | &:focus, |
|---|
| 505 | &:active { |
|---|
| 506 | @content; |
|---|
| 507 | } |
|---|
| 508 | } |
|---|
| 509 | @else { |
|---|
| 510 | &:hover, |
|---|
| 511 | &:focus { |
|---|
| 512 | @content; |
|---|
| 513 | } |
|---|
| 514 | } |
|---|
| 515 | |
|---|
| 516 | } |
|---|
| 517 | |
|---|
| 518 | // SCUT TRIANGLE |
|---|
| 519 | // http://davidtheclark.github.io/scut/#triangle |
|---|
| 520 | |
|---|
| 521 | @mixin scut-triangle ( |
|---|
| 522 | $direction: right, |
|---|
| 523 | $size: 0.75em, |
|---|
| 524 | $color: inherit |
|---|
| 525 | ) { |
|---|
| 526 | |
|---|
| 527 | display: inline-block; |
|---|
| 528 | height: 0; |
|---|
| 529 | width: 0; |
|---|
| 530 | // For improved appearance in some Webkit browsers |
|---|
| 531 | -webkit-transform: rotate(360deg); |
|---|
| 532 | |
|---|
| 533 | // Set up some variables |
|---|
| 534 | $width: null; |
|---|
| 535 | $height: null; |
|---|
| 536 | $border-widths: null; |
|---|
| 537 | |
|---|
| 538 | @if type-of($size) == list { |
|---|
| 539 | $width: nth($size, 1); |
|---|
| 540 | $height: nth($size, 2); |
|---|
| 541 | } |
|---|
| 542 | @else { |
|---|
| 543 | $width: $size; |
|---|
| 544 | $height: $size; |
|---|
| 545 | } |
|---|
| 546 | |
|---|
| 547 | @if ($direction == up) or ($direction == down) { |
|---|
| 548 | // For up and down, width gets two borders but height only one, |
|---|
| 549 | // so divide second border-width value by 2 |
|---|
| 550 | $border-widths: $height ($width / 2); |
|---|
| 551 | } |
|---|
| 552 | @else if ($direction == right) or ($direction == left) { |
|---|
| 553 | // For right and left, height gets two borders but width only one, |
|---|
| 554 | // so divide first border-width value by 2 |
|---|
| 555 | $border-widths: ($height / 2) $width; |
|---|
| 556 | } |
|---|
| 557 | @else { |
|---|
| 558 | // For right triangles (the rest), both sides get two borders, |
|---|
| 559 | // so divide both by 2 |
|---|
| 560 | $border-widths: ($height / 2) ($width / 2); |
|---|
| 561 | } |
|---|
| 562 | |
|---|
| 563 | border-width: $border-widths; |
|---|
| 564 | border-style: solid; |
|---|
| 565 | |
|---|
| 566 | |
|---|
| 567 | // STANDARD TRIANGLES |
|---|
| 568 | |
|---|
| 569 | @if ($direction == up) or ($direction == down) or ($direction == right) or ($direction == left) { |
|---|
| 570 | border-color: transparent; |
|---|
| 571 | @if $direction == up { |
|---|
| 572 | border-bottom-color: $color; |
|---|
| 573 | border-top-width: 0; |
|---|
| 574 | } |
|---|
| 575 | @else if $direction == right { |
|---|
| 576 | border-left-color: $color; |
|---|
| 577 | border-right-width: 0; |
|---|
| 578 | } |
|---|
| 579 | @else if $direction == down { |
|---|
| 580 | border-top-color: $color; |
|---|
| 581 | border-bottom-width: 0; |
|---|
| 582 | } |
|---|
| 583 | @else if $direction == left { |
|---|
| 584 | border-right-color: $color; |
|---|
| 585 | border-left-width: 0; |
|---|
| 586 | } |
|---|
| 587 | } |
|---|
| 588 | |
|---|
| 589 | |
|---|
| 590 | // CORNER TRIANGLES |
|---|
| 591 | |
|---|
| 592 | @else if ($direction == top-right) or ($direction == top-left) { |
|---|
| 593 | border-top-color: $color; |
|---|
| 594 | border-bottom-color: transparent; |
|---|
| 595 | @if $direction == top-right { |
|---|
| 596 | border-left-color: transparent; |
|---|
| 597 | border-right-color: $color; |
|---|
| 598 | } |
|---|
| 599 | @else if $direction == top-left { |
|---|
| 600 | border-left-color: $color; |
|---|
| 601 | border-right-color: transparent; |
|---|
| 602 | } |
|---|
| 603 | } |
|---|
| 604 | |
|---|
| 605 | @else if ($direction == bottom-right) or ($direction == bottom-left) { |
|---|
| 606 | border-top-color: transparent; |
|---|
| 607 | border-bottom-color: $color; |
|---|
| 608 | @if $direction == bottom-right { |
|---|
| 609 | border-left-color: transparent; |
|---|
| 610 | border-right-color: $color; |
|---|
| 611 | } |
|---|
| 612 | @else if $direction == bottom-left { |
|---|
| 613 | border-left-color: $color; |
|---|
| 614 | border-right-color: transparent; |
|---|
| 615 | } |
|---|
| 616 | } |
|---|
| 617 | |
|---|
| 618 | } |
|---|
| 619 | |
|---|
| 620 | %scut-triangle { |
|---|
| 621 | @include scut-triangle; |
|---|
| 622 | } |
|---|
| 623 | |
|---|
| 624 | // SCUT CENTER ABSOLUTELY |
|---|
| 625 | // http://davidtheclark.github.io/scut/#center_absolutely |
|---|
| 626 | |
|---|
| 627 | @mixin scut-center-absolutely ( |
|---|
| 628 | $dimensions |
|---|
| 629 | ) { |
|---|
| 630 | |
|---|
| 631 | $width: nth($dimensions, 1); |
|---|
| 632 | $height: nth($dimensions, 2); |
|---|
| 633 | |
|---|
| 634 | position: absolute; |
|---|
| 635 | |
|---|
| 636 | @if $width != n { |
|---|
| 637 | width: $width; |
|---|
| 638 | left: 50%; |
|---|
| 639 | margin-left: (-$width / 2); |
|---|
| 640 | } |
|---|
| 641 | |
|---|
| 642 | @if $height != n { |
|---|
| 643 | height: $height; |
|---|
| 644 | top: 50%; |
|---|
| 645 | margin-top: (-$height / 2); |
|---|
| 646 | } |
|---|
| 647 | |
|---|
| 648 | } |
|---|
| 649 | |
|---|
| 650 | // SCUT CENTER BLOCK |
|---|
| 651 | // http://davidtheclark.github.io/scut/#center_block |
|---|
| 652 | |
|---|
| 653 | @mixin scut-center-block ( |
|---|
| 654 | $max-width: false |
|---|
| 655 | ) { |
|---|
| 656 | |
|---|
| 657 | margin-left: auto; |
|---|
| 658 | margin-right: auto; |
|---|
| 659 | @if $max-width { |
|---|
| 660 | max-width: $max-width; |
|---|
| 661 | } |
|---|
| 662 | |
|---|
| 663 | } |
|---|
| 664 | |
|---|
| 665 | %scut-center-block { |
|---|
| 666 | @include scut-center-block; |
|---|
| 667 | } |
|---|
| 668 | |
|---|
| 669 | |
|---|
| 670 | // SCUT CENTER TRANSFORM |
|---|
| 671 | // http://davidtheclark.github.io/scut/#center_transform |
|---|
| 672 | |
|---|
| 673 | @mixin scut-center-transform ( |
|---|
| 674 | $axis: false // or x or y |
|---|
| 675 | ) { |
|---|
| 676 | |
|---|
| 677 | position: absolute; |
|---|
| 678 | |
|---|
| 679 | @if $axis != x { |
|---|
| 680 | top: 50%; |
|---|
| 681 | margin-top: auto; |
|---|
| 682 | margin-bottom: auto; |
|---|
| 683 | } |
|---|
| 684 | |
|---|
| 685 | @if $axis != y { |
|---|
| 686 | left: 50%; |
|---|
| 687 | margin-left: auto; |
|---|
| 688 | margin-right: auto; |
|---|
| 689 | } |
|---|
| 690 | |
|---|
| 691 | $translate-val: null; |
|---|
| 692 | |
|---|
| 693 | @if not $axis { |
|---|
| 694 | $translate-val: translate(-50%, -50%); |
|---|
| 695 | } |
|---|
| 696 | @else if $axis != x { |
|---|
| 697 | $translate-val: translateY(-50%); |
|---|
| 698 | } |
|---|
| 699 | @else if $axis != y { |
|---|
| 700 | $translate-val: translateX(-50%); |
|---|
| 701 | } |
|---|
| 702 | |
|---|
| 703 | -webkit-transform: $translate-val; |
|---|
| 704 | -ms-transform: $translate-val; |
|---|
| 705 | transform: $translate-val; |
|---|
| 706 | } |
|---|
| 707 | |
|---|
| 708 | %scut-center-transform { |
|---|
| 709 | @include scut-center-transform; |
|---|
| 710 | } |
|---|
| 711 | |
|---|
| 712 | %scut-center-transform-x { |
|---|
| 713 | @include scut-center-transform(x); |
|---|
| 714 | } |
|---|
| 715 | |
|---|
| 716 | %scut-center-transform-y { |
|---|
| 717 | @include scut-center-transform(y); |
|---|
| 718 | } |
|---|
| 719 | |
|---|
| 720 | |
|---|
| 721 | // SCUT FILL |
|---|
| 722 | // http://davidtheclark.github.io/scut/#fill |
|---|
| 723 | |
|---|
| 724 | @mixin scut-fill ( |
|---|
| 725 | $width-height: false |
|---|
| 726 | ) { |
|---|
| 727 | |
|---|
| 728 | position: absolute; |
|---|
| 729 | left: 0; |
|---|
| 730 | top: 0; |
|---|
| 731 | @if $width-height { |
|---|
| 732 | width: 100%; |
|---|
| 733 | height: 100%; |
|---|
| 734 | } |
|---|
| 735 | @else { |
|---|
| 736 | right: 0; |
|---|
| 737 | bottom: 0; |
|---|
| 738 | } |
|---|
| 739 | |
|---|
| 740 | } |
|---|
| 741 | |
|---|
| 742 | %scut-fill { |
|---|
| 743 | @include scut-fill; |
|---|
| 744 | } |
|---|
| 745 | |
|---|
| 746 | // SCUT FONTICON-LABEL |
|---|
| 747 | // http://davidtheclark.github.io/scut/#fonticon_label |
|---|
| 748 | |
|---|
| 749 | @mixin scut-fonticon-label ( |
|---|
| 750 | $font, |
|---|
| 751 | $glyph, |
|---|
| 752 | $space: 0.25em, |
|---|
| 753 | $side: before |
|---|
| 754 | ) { |
|---|
| 755 | |
|---|
| 756 | &:#{$side} { |
|---|
| 757 | content: $glyph; |
|---|
| 758 | font-family: $font; |
|---|
| 759 | font-style: normal; |
|---|
| 760 | font-weight: normal; |
|---|
| 761 | -webkit-font-smoothing: antialiased; |
|---|
| 762 | display: inline-block; |
|---|
| 763 | vertical-align: middle; |
|---|
| 764 | |
|---|
| 765 | @if $side == before and $space != 0 { |
|---|
| 766 | margin-right: $space; |
|---|
| 767 | } |
|---|
| 768 | @else if $side == after and $space != 0 { |
|---|
| 769 | margin-left: $space; |
|---|
| 770 | } |
|---|
| 771 | |
|---|
| 772 | // Add any additional styling. |
|---|
| 773 | @content; |
|---|
| 774 | |
|---|
| 775 | } |
|---|
| 776 | |
|---|
| 777 | } |
|---|
| 778 | |
|---|
| 779 | |
|---|
| 780 | // SCUT LIST: CUSTOM |
|---|
| 781 | // http://davidtheclark.github.io/scut/#list_custom |
|---|
| 782 | |
|---|
| 783 | @mixin scut-list-custom ( |
|---|
| 784 | $content: "\2022", |
|---|
| 785 | $marker-width: 0.75em, |
|---|
| 786 | $pad: 0 |
|---|
| 787 | ) { |
|---|
| 788 | |
|---|
| 789 | $content-val: null; |
|---|
| 790 | $counter: index($content, count); |
|---|
| 791 | @if $counter { |
|---|
| 792 | @if length($content) == 3 { |
|---|
| 793 | $content-val: counter(scutlistcounter, nth($content, 3))nth($content,2); |
|---|
| 794 | } |
|---|
| 795 | @else if length($content) == 2 { |
|---|
| 796 | $content-val: counter(scutlistcounter)nth($content,2); |
|---|
| 797 | } |
|---|
| 798 | @else { |
|---|
| 799 | $content-val: counter(scutlistcounter); |
|---|
| 800 | } |
|---|
| 801 | } |
|---|
| 802 | @else { |
|---|
| 803 | $content-val: $content; |
|---|
| 804 | } |
|---|
| 805 | |
|---|
| 806 | padding-left: $marker-width + $pad; |
|---|
| 807 | list-style-type: none; |
|---|
| 808 | |
|---|
| 809 | & > li { |
|---|
| 810 | position: relative; |
|---|
| 811 | @if $counter { |
|---|
| 812 | counter-increment: scutlistcounter; |
|---|
| 813 | } |
|---|
| 814 | &:before { |
|---|
| 815 | content: $content-val; |
|---|
| 816 | display: block; |
|---|
| 817 | position: absolute; |
|---|
| 818 | top: 0; |
|---|
| 819 | left: -$marker-width; |
|---|
| 820 | width: $marker-width; |
|---|
| 821 | @content; |
|---|
| 822 | } |
|---|
| 823 | } |
|---|
| 824 | |
|---|
| 825 | } |
|---|
| 826 | |
|---|
| 827 | // SCUT LIST: DIVIDED |
|---|
| 828 | // http://davidtheclark.github.io/scut/#list_divided |
|---|
| 829 | |
|---|
| 830 | // Depends on `list-floated`, which depends in turn on `list-unstyled` and `clearfix`. |
|---|
| 831 | |
|---|
| 832 | @mixin scut-list-divided ( |
|---|
| 833 | $divider: "|", |
|---|
| 834 | $space: 0.5em, |
|---|
| 835 | $dir: left, |
|---|
| 836 | $height: false |
|---|
| 837 | ) { |
|---|
| 838 | |
|---|
| 839 | @include scut-list-floated($dir: $dir); |
|---|
| 840 | |
|---|
| 841 | $pseudo: if($dir == left, 'before', 'after'); |
|---|
| 842 | |
|---|
| 843 | // If an explicit height is passed, |
|---|
| 844 | // things are different: All <li>s |
|---|
| 845 | // need the pseudo-element (to force height), |
|---|
| 846 | // but the first's must be hidden. |
|---|
| 847 | |
|---|
| 848 | @if $height { |
|---|
| 849 | & > li { |
|---|
| 850 | height: $height; |
|---|
| 851 | } |
|---|
| 852 | & > li:#{$pseudo} { |
|---|
| 853 | height: $height; |
|---|
| 854 | content: $divider; |
|---|
| 855 | display: inline-block; |
|---|
| 856 | vertical-align: middle; |
|---|
| 857 | @content; |
|---|
| 858 | } |
|---|
| 859 | & > li:first-child:#{$pseudo} { |
|---|
| 860 | width: 0; |
|---|
| 861 | overflow: hidden; |
|---|
| 862 | } |
|---|
| 863 | } |
|---|
| 864 | |
|---|
| 865 | & > li + li:#{$pseudo} { |
|---|
| 866 | @if not $height { |
|---|
| 867 | content: $divider; |
|---|
| 868 | display: inline-block; |
|---|
| 869 | @content; |
|---|
| 870 | } |
|---|
| 871 | margin-left: $space; |
|---|
| 872 | margin-right: $space; |
|---|
| 873 | } |
|---|
| 874 | |
|---|
| 875 | } |
|---|
| 876 | |
|---|
| 877 | %scut-list-bar { |
|---|
| 878 | @include scut-list-divided; |
|---|
| 879 | } |
|---|
| 880 | |
|---|
| 881 | %scut-list-breadcrumb { |
|---|
| 882 | @include scut-list-divided("/"); |
|---|
| 883 | } |
|---|
| 884 | |
|---|
| 885 | // SCUT LIST: INLINE |
|---|
| 886 | // http://davidtheclark.github.io/scut/#list_inline |
|---|
| 887 | |
|---|
| 888 | // Depends on `list-unstyled`. |
|---|
| 889 | |
|---|
| 890 | @mixin scut-list-inline ( |
|---|
| 891 | $space: false |
|---|
| 892 | ) { |
|---|
| 893 | |
|---|
| 894 | @include scut-list-unstyled; |
|---|
| 895 | |
|---|
| 896 | & > li { |
|---|
| 897 | display: inline-block; |
|---|
| 898 | } |
|---|
| 899 | |
|---|
| 900 | @if $space { |
|---|
| 901 | & > li + li { |
|---|
| 902 | margin-left: $space; |
|---|
| 903 | } |
|---|
| 904 | } |
|---|
| 905 | |
|---|
| 906 | } |
|---|
| 907 | |
|---|
| 908 | %scut-list-inline { |
|---|
| 909 | @include scut-list-inline; |
|---|
| 910 | } |
|---|
| 911 | |
|---|
| 912 | // SCUT LIST: PUNCTUATED |
|---|
| 913 | // http://davidtheclark.github.io/scut/#list_punctuated |
|---|
| 914 | |
|---|
| 915 | // Depends on `list-unstyled`. |
|---|
| 916 | |
|---|
| 917 | @mixin scut-list-punctuated ( |
|---|
| 918 | $divider: ", ", |
|---|
| 919 | $display: inline |
|---|
| 920 | ) { |
|---|
| 921 | |
|---|
| 922 | @include scut-list-unstyled; |
|---|
| 923 | margin-top: 0; |
|---|
| 924 | margin-bottom: 0; |
|---|
| 925 | |
|---|
| 926 | & > li { |
|---|
| 927 | display: $display; |
|---|
| 928 | &:not(:last-child):after { |
|---|
| 929 | content: $divider; |
|---|
| 930 | } |
|---|
| 931 | } |
|---|
| 932 | |
|---|
| 933 | } |
|---|
| 934 | |
|---|
| 935 | %scut-list-comma { |
|---|
| 936 | @include scut-list-punctuated; |
|---|
| 937 | } |
|---|
| 938 | |
|---|
| 939 | // SCUT MARGIN |
|---|
| 940 | // http://davidtheclark.github.io/scut/#margin |
|---|
| 941 | |
|---|
| 942 | @mixin scut-margin ( |
|---|
| 943 | $margin |
|---|
| 944 | ) { |
|---|
| 945 | |
|---|
| 946 | @if length($margin) == 1 and $margin != n { |
|---|
| 947 | margin-top: $margin; |
|---|
| 948 | margin-right: $margin; |
|---|
| 949 | margin-bottom: $margin; |
|---|
| 950 | margin-left: $margin; |
|---|
| 951 | } |
|---|
| 952 | |
|---|
| 953 | @if length($margin) == 2 { |
|---|
| 954 | $margin-y: nth($margin, 1); |
|---|
| 955 | $margin-x: nth($margin, 2); |
|---|
| 956 | @if $margin-y != n { |
|---|
| 957 | margin-top: $margin-y; |
|---|
| 958 | margin-bottom: $margin-y; |
|---|
| 959 | } |
|---|
| 960 | @if $margin-x != n { |
|---|
| 961 | margin-left: $margin-x; |
|---|
| 962 | margin-right: $margin-x; |
|---|
| 963 | } |
|---|
| 964 | } |
|---|
| 965 | |
|---|
| 966 | @if length($margin) == 3 { |
|---|
| 967 | $margin-y-top: nth($margin, 1); |
|---|
| 968 | $margin-x: nth($margin, 2); |
|---|
| 969 | $margin-y-bottom: nth($margin, 3); |
|---|
| 970 | @if $margin-y-top != n { |
|---|
| 971 | margin-top: $margin-y-top; |
|---|
| 972 | } |
|---|
| 973 | @if $margin-x != n { |
|---|
| 974 | margin-right: $margin-x; |
|---|
| 975 | margin-left: $margin-x; |
|---|
| 976 | } |
|---|
| 977 | @if $margin-y-bottom != n { |
|---|
| 978 | margin-bottom: $margin-y-bottom; |
|---|
| 979 | } |
|---|
| 980 | } |
|---|
| 981 | |
|---|
| 982 | @if length($margin) == 4 { |
|---|
| 983 | $margin-top: nth($margin, 1); |
|---|
| 984 | $margin-right: nth($margin, 2); |
|---|
| 985 | $margin-bottom: nth($margin, 3); |
|---|
| 986 | $margin-left: nth($margin, 4); |
|---|
| 987 | @if $margin-top != n { |
|---|
| 988 | margin-top: $margin-top; |
|---|
| 989 | } |
|---|
| 990 | @if $margin-right != n { |
|---|
| 991 | margin-right: $margin-right; |
|---|
| 992 | } |
|---|
| 993 | @if $margin-bottom != n { |
|---|
| 994 | margin-bottom: $margin-bottom; |
|---|
| 995 | } |
|---|
| 996 | @if $margin-left != n { |
|---|
| 997 | margin-left: $margin-left; |
|---|
| 998 | } |
|---|
| 999 | } |
|---|
| 1000 | |
|---|
| 1001 | } |
|---|
| 1002 | |
|---|
| 1003 | // SCUT PADDING |
|---|
| 1004 | // http://davidtheclark.github.io/scut/#padding |
|---|
| 1005 | |
|---|
| 1006 | @mixin scut-padding ( |
|---|
| 1007 | $padding |
|---|
| 1008 | ) { |
|---|
| 1009 | |
|---|
| 1010 | @if length($padding) == 1 and $padding != n { |
|---|
| 1011 | padding-top: $padding; |
|---|
| 1012 | padding-right: $padding; |
|---|
| 1013 | padding-bottom: $padding; |
|---|
| 1014 | padding-left: $padding; |
|---|
| 1015 | } |
|---|
| 1016 | |
|---|
| 1017 | @if length($padding) == 2 { |
|---|
| 1018 | $padding-y: nth($padding, 1); |
|---|
| 1019 | $padding-x: nth($padding, 2); |
|---|
| 1020 | @if $padding-y != n { |
|---|
| 1021 | padding-top: $padding-y; |
|---|
| 1022 | padding-bottom: $padding-y; |
|---|
| 1023 | } |
|---|
| 1024 | @if $padding-x != n { |
|---|
| 1025 | padding-left: $padding-x; |
|---|
| 1026 | padding-right: $padding-x; |
|---|
| 1027 | } |
|---|
| 1028 | } |
|---|
| 1029 | |
|---|
| 1030 | @if length($padding) == 3 { |
|---|
| 1031 | $padding-y-top: nth($padding, 1); |
|---|
| 1032 | $padding-x: nth($padding, 2); |
|---|
| 1033 | $padding-y-bottom: nth($padding, 3); |
|---|
| 1034 | @if $padding-y-top != n { |
|---|
| 1035 | padding-top: $padding-y-top; |
|---|
| 1036 | } |
|---|
| 1037 | @if $padding-x != n { |
|---|
| 1038 | padding-right: $padding-x; |
|---|
| 1039 | padding-left: $padding-x; |
|---|
| 1040 | } |
|---|
| 1041 | @if $padding-y-bottom != n { |
|---|
| 1042 | padding-bottom: $padding-y-bottom; |
|---|
| 1043 | } |
|---|
| 1044 | } |
|---|
| 1045 | |
|---|
| 1046 | @if length($padding) == 4 { |
|---|
| 1047 | $padding-top: nth($padding, 1); |
|---|
| 1048 | $padding-right: nth($padding, 2); |
|---|
| 1049 | $padding-bottom: nth($padding, 3); |
|---|
| 1050 | $padding-left: nth($padding, 4); |
|---|
| 1051 | @if $padding-top != n { |
|---|
| 1052 | padding-top: $padding-top; |
|---|
| 1053 | } |
|---|
| 1054 | @if $padding-right != n { |
|---|
| 1055 | padding-right: $padding-right; |
|---|
| 1056 | } |
|---|
| 1057 | @if $padding-bottom != n { |
|---|
| 1058 | padding-bottom: $padding-bottom; |
|---|
| 1059 | } |
|---|
| 1060 | @if $padding-left != n { |
|---|
| 1061 | padding-left: $padding-left; |
|---|
| 1062 | } |
|---|
| 1063 | } |
|---|
| 1064 | } |
|---|
| 1065 | |
|---|
| 1066 | // SCUT POSITIONING: ABSOLUTE |
|---|
| 1067 | // http://davidtheclark.github.io/scut/#positioning_absolute |
|---|
| 1068 | |
|---|
| 1069 | // Depends on `positioning-coordinates`. |
|---|
| 1070 | |
|---|
| 1071 | @mixin scut-absolute ( |
|---|
| 1072 | $coordinates: 0 n n 0 |
|---|
| 1073 | ) { |
|---|
| 1074 | |
|---|
| 1075 | position: absolute; |
|---|
| 1076 | @include scut-coords($coordinates); |
|---|
| 1077 | |
|---|
| 1078 | } |
|---|
| 1079 | |
|---|
| 1080 | %scut-absolute { |
|---|
| 1081 | @include scut-absolute; |
|---|
| 1082 | } |
|---|
| 1083 | |
|---|
| 1084 | // SCUT POSITIONING: FIXED |
|---|
| 1085 | // http://davidtheclark.github.io/scut/#positioning_fixed |
|---|
| 1086 | |
|---|
| 1087 | // Depends on `positioning-coordinates`. |
|---|
| 1088 | |
|---|
| 1089 | @mixin scut-fixed ( |
|---|
| 1090 | $coordinates: 0 n n 0 |
|---|
| 1091 | ) { |
|---|
| 1092 | |
|---|
| 1093 | position: fixed; |
|---|
| 1094 | @include scut-coords($coordinates); |
|---|
| 1095 | |
|---|
| 1096 | } |
|---|
| 1097 | |
|---|
| 1098 | %scut-fixed { |
|---|
| 1099 | @include scut-fixed; |
|---|
| 1100 | } |
|---|
| 1101 | |
|---|
| 1102 | // SCUT POSITIONING: RELATIVE |
|---|
| 1103 | // http://davidtheclark.github.io/scut/#positioning_relative |
|---|
| 1104 | |
|---|
| 1105 | // Depends on `positioning-coordinates`. |
|---|
| 1106 | |
|---|
| 1107 | @mixin scut-relative ( |
|---|
| 1108 | $coordinates: n n n n |
|---|
| 1109 | ) { |
|---|
| 1110 | |
|---|
| 1111 | position: relative; |
|---|
| 1112 | @include scut-coords($coordinates); |
|---|
| 1113 | |
|---|
| 1114 | } |
|---|
| 1115 | |
|---|
| 1116 | // SCUT RATIO-BOX |
|---|
| 1117 | // http://davidtheclark.github.io/scut/#ratio-box |
|---|
| 1118 | |
|---|
| 1119 | @mixin scut-ratio-box ( |
|---|
| 1120 | $ratio: 1/1, |
|---|
| 1121 | $inner: ".scut-inner" |
|---|
| 1122 | ) { |
|---|
| 1123 | |
|---|
| 1124 | overflow: hidden; |
|---|
| 1125 | position: relative; |
|---|
| 1126 | |
|---|
| 1127 | // The container's height, as a percentage of the |
|---|
| 1128 | // container's width, is set by assigning |
|---|
| 1129 | // padding-top to a pseudo-element. |
|---|
| 1130 | &:before { |
|---|
| 1131 | content: ""; |
|---|
| 1132 | display: block; |
|---|
| 1133 | height: 0; |
|---|
| 1134 | padding-top: (1 / $ratio) * 100%; |
|---|
| 1135 | } |
|---|
| 1136 | |
|---|
| 1137 | // The inner element simply fills up the container. |
|---|
| 1138 | & > #{$inner} { |
|---|
| 1139 | position: absolute; |
|---|
| 1140 | left: 0; |
|---|
| 1141 | top: 0; |
|---|
| 1142 | width: 100%; |
|---|
| 1143 | height: 100%; |
|---|
| 1144 | } |
|---|
| 1145 | |
|---|
| 1146 | } |
|---|
| 1147 | |
|---|
| 1148 | %scut-ratio-box { |
|---|
| 1149 | @include scut-ratio-box; |
|---|
| 1150 | } |
|---|
| 1151 | |
|---|
| 1152 | // SCUT SIZE |
|---|
| 1153 | // http://davidtheclark.github.io/scut/#size |
|---|
| 1154 | |
|---|
| 1155 | @mixin scut-size( |
|---|
| 1156 | $size |
|---|
| 1157 | ) { |
|---|
| 1158 | |
|---|
| 1159 | @if length($size) == 1 { |
|---|
| 1160 | width: $size; |
|---|
| 1161 | height: $size; |
|---|
| 1162 | } |
|---|
| 1163 | @else if length($size) == 2 { |
|---|
| 1164 | width: nth($size, 1); |
|---|
| 1165 | height: nth($size, 2); |
|---|
| 1166 | } |
|---|
| 1167 | |
|---|
| 1168 | } |
|---|
| 1169 | |
|---|
| 1170 | // SCUT STICKY FOOTER |
|---|
| 1171 | // http://davidtheclark.github.io/scut/#sticky_footer |
|---|
| 1172 | |
|---|
| 1173 | @mixin scut-sticky-footer ( |
|---|
| 1174 | $height, |
|---|
| 1175 | $wrapper: ".wrapper", |
|---|
| 1176 | $footer: ".scut-sticky" |
|---|
| 1177 | ) { |
|---|
| 1178 | |
|---|
| 1179 | html, |
|---|
| 1180 | body { |
|---|
| 1181 | height: 100%; |
|---|
| 1182 | } |
|---|
| 1183 | |
|---|
| 1184 | #{$wrapper} { |
|---|
| 1185 | min-height: 100%; |
|---|
| 1186 | margin-bottom: -$height; |
|---|
| 1187 | &:after { |
|---|
| 1188 | content: ""; |
|---|
| 1189 | display: block; |
|---|
| 1190 | } |
|---|
| 1191 | } |
|---|
| 1192 | #{$wrapper}:after, |
|---|
| 1193 | #{$footer} { |
|---|
| 1194 | height: $height; |
|---|
| 1195 | } |
|---|
| 1196 | |
|---|
| 1197 | } |
|---|
| 1198 | |
|---|
| 1199 | // SCUT V-CENTER: INLINE-BLOCK |
|---|
| 1200 | // http://davidtheclark.github.io/scut/#v-center_inline-block |
|---|
| 1201 | |
|---|
| 1202 | @mixin scut-vcenter-ib ( |
|---|
| 1203 | $inner: ".scut-inner" |
|---|
| 1204 | ) { |
|---|
| 1205 | |
|---|
| 1206 | // The inner element is vertically centered |
|---|
| 1207 | // by middle-aligning it with an inline pseudo-element |
|---|
| 1208 | // whose height is 100%. |
|---|
| 1209 | |
|---|
| 1210 | &:before { |
|---|
| 1211 | content: ""; |
|---|
| 1212 | height: 100%; |
|---|
| 1213 | display: inline-block; |
|---|
| 1214 | vertical-align: middle; |
|---|
| 1215 | // A small negative right margin is set |
|---|
| 1216 | // to account for the default |
|---|
| 1217 | // word-spacing of inline-block. |
|---|
| 1218 | margin-right: -0.25em; |
|---|
| 1219 | } |
|---|
| 1220 | |
|---|
| 1221 | & > #{$inner} { |
|---|
| 1222 | display: inline-block; |
|---|
| 1223 | vertical-align: middle; |
|---|
| 1224 | } |
|---|
| 1225 | |
|---|
| 1226 | } |
|---|
| 1227 | |
|---|
| 1228 | %scut-vcenter-ib { |
|---|
| 1229 | @include scut-vcenter-ib; |
|---|
| 1230 | } |
|---|
| 1231 | |
|---|
| 1232 | |
|---|
| 1233 | // SCUT V-CENTER: LINE-HEIGHT |
|---|
| 1234 | // http://davidtheclark.github.io/scut/#v-center_line-height |
|---|
| 1235 | |
|---|
| 1236 | @mixin scut-vcenter-lh ( |
|---|
| 1237 | $height |
|---|
| 1238 | ) { |
|---|
| 1239 | |
|---|
| 1240 | height: $height; |
|---|
| 1241 | line-height: $height; |
|---|
| 1242 | |
|---|
| 1243 | } |
|---|
| 1244 | |
|---|
| 1245 | // SCUT V-CENTER: TABLE DISPLAY |
|---|
| 1246 | // http://davidtheclark.github.io/scut/#v-center_table_display |
|---|
| 1247 | |
|---|
| 1248 | @mixin scut-vcenter-td ( |
|---|
| 1249 | $inner: ".scut-inner" |
|---|
| 1250 | ) { |
|---|
| 1251 | |
|---|
| 1252 | display: table; |
|---|
| 1253 | |
|---|
| 1254 | & > #{$inner} { |
|---|
| 1255 | display: table-cell; |
|---|
| 1256 | vertical-align: middle; |
|---|
| 1257 | } |
|---|
| 1258 | |
|---|
| 1259 | } |
|---|
| 1260 | |
|---|
| 1261 | |
|---|
| 1262 | %scut-vcenter-td { |
|---|
| 1263 | @include scut-vcenter-td; |
|---|
| 1264 | } |
|---|
| 1265 | |
|---|
| 1266 | // SCUT V-CENTER: TRANSFORM |
|---|
| 1267 | // http://davidtheclark.github.io/scut/#v-center_transform |
|---|
| 1268 | |
|---|
| 1269 | // Depends on scut-center-transform |
|---|
| 1270 | |
|---|
| 1271 | @mixin scut-vcenter-tt () { |
|---|
| 1272 | @include scut-center-transform(y); |
|---|
| 1273 | } |
|---|
| 1274 | |
|---|
| 1275 | %scut-vcenter-tt { |
|---|
| 1276 | @include scut-vcenter-tt; |
|---|
| 1277 | } |
|---|
| 1278 | |
|---|
| 1279 | // BOOKENDS |
|---|
| 1280 | // http://davidtheclark.github.io/scut/#bookends |
|---|
| 1281 | |
|---|
| 1282 | @mixin scut-bookends ( |
|---|
| 1283 | $space: 0.5em, |
|---|
| 1284 | $content: "" |
|---|
| 1285 | ) { |
|---|
| 1286 | |
|---|
| 1287 | $content-list: length($content) == 2; |
|---|
| 1288 | |
|---|
| 1289 | // If $content is a list or there $space exist, |
|---|
| 1290 | // set some pseudo-element-specific rules. |
|---|
| 1291 | @if $content-list or $space { |
|---|
| 1292 | &:before { |
|---|
| 1293 | @if $content-list { |
|---|
| 1294 | content: nth($content, 1); |
|---|
| 1295 | } |
|---|
| 1296 | @if $space { |
|---|
| 1297 | margin-right: $space; |
|---|
| 1298 | } |
|---|
| 1299 | } |
|---|
| 1300 | &:after { |
|---|
| 1301 | @if $content-list { |
|---|
| 1302 | content: nth($content, 2); |
|---|
| 1303 | } |
|---|
| 1304 | @if $space { |
|---|
| 1305 | margin-left: $space; |
|---|
| 1306 | } |
|---|
| 1307 | } |
|---|
| 1308 | } |
|---|
| 1309 | |
|---|
| 1310 | // Then set some rules that apply to both |
|---|
| 1311 | // pseudo-elements. |
|---|
| 1312 | &:before, |
|---|
| 1313 | &:after { |
|---|
| 1314 | display: inline-block; |
|---|
| 1315 | |
|---|
| 1316 | @if $content and length($content) == 1 { |
|---|
| 1317 | content: $content; |
|---|
| 1318 | } |
|---|
| 1319 | |
|---|
| 1320 | // Any additional styling applies to both. |
|---|
| 1321 | @content; |
|---|
| 1322 | |
|---|
| 1323 | } |
|---|
| 1324 | |
|---|
| 1325 | } |
|---|
| 1326 | |
|---|
| 1327 | // SCUT CSS CHARACTERS |
|---|
| 1328 | // http://davidtheclark.github.io/scut/#characters |
|---|
| 1329 | |
|---|
| 1330 | // space |
|---|
| 1331 | $scut-space: "\0020"; |
|---|
| 1332 | // non-breaking space |
|---|
| 1333 | $scut-nbsp: "\00a0"; |
|---|
| 1334 | |
|---|
| 1335 | // quotation mark |
|---|
| 1336 | $scut-quot: "\0022"; |
|---|
| 1337 | // left single curly quote |
|---|
| 1338 | $scut-lsquo: "\2018"; |
|---|
| 1339 | // right single curly quote |
|---|
| 1340 | $scut-rsquo: "\2019"; |
|---|
| 1341 | // left double curly quote |
|---|
| 1342 | $scut-ldquo: "\201C"; |
|---|
| 1343 | // right double curly quote |
|---|
| 1344 | $scut-rdquo: "\201D"; |
|---|
| 1345 | // left single angle quote (guillemet) |
|---|
| 1346 | $scut-lsaquo: "\2039"; |
|---|
| 1347 | // right single angle quote (guillemet) |
|---|
| 1348 | $scut-rsaquo: "\203A"; |
|---|
| 1349 | // left double angle quote (guillemet) |
|---|
| 1350 | $scut-laquo: "\00ab"; |
|---|
| 1351 | // right double angle quote (guillemet) |
|---|
| 1352 | $scut-raquo: "\00bb"; |
|---|
| 1353 | |
|---|
| 1354 | // em dash (mutton) |
|---|
| 1355 | $scut-mdash: "\2014"; |
|---|
| 1356 | // en dash (nut) |
|---|
| 1357 | $scut-ndash: "\2013"; |
|---|
| 1358 | // hyphen |
|---|
| 1359 | $scut-hyphen: "\2010"; |
|---|
| 1360 | |
|---|
| 1361 | // ampersand |
|---|
| 1362 | $scut-amp: "\0026"; |
|---|
| 1363 | // greater than |
|---|
| 1364 | $scut-gt: "\003e"; |
|---|
| 1365 | // less than |
|---|
| 1366 | $scut-lt: "\003c"; |
|---|
| 1367 | // times |
|---|
| 1368 | $scut-times: "\00D7"; |
|---|
| 1369 | // big times |
|---|
| 1370 | $scut-bigtimes: "\2715"; |
|---|
| 1371 | // checkmark |
|---|
| 1372 | $scut-checkmark: "\2713"; |
|---|
| 1373 | |
|---|
| 1374 | // section sign (double S, hurricane, sectional symbol, the legal doughnut, signum sectionis) |
|---|
| 1375 | $scut-sect: "\00a7"; |
|---|
| 1376 | // paragraph symbol (pilcrow) |
|---|
| 1377 | $scut-para: "\00b6"; |
|---|
| 1378 | |
|---|
| 1379 | // middot (interpunct, interpoint) |
|---|
| 1380 | $scut-middot: "\00b7"; |
|---|
| 1381 | // o-slash (slashed o) |
|---|
| 1382 | $scut-oslash: "\00f8"; |
|---|
| 1383 | // bullet |
|---|
| 1384 | $scut-bull: "\2022"; |
|---|
| 1385 | // white bullet |
|---|
| 1386 | $scut-whibull: "\25E6"; |
|---|
| 1387 | // horizontal ellipsis |
|---|
| 1388 | $scut-hellip: "\2026"; |
|---|
| 1389 | // vertical ellipsis |
|---|
| 1390 | $scut-vellip: "\22EE"; |
|---|
| 1391 | // midline horizontal ellipsis |
|---|
| 1392 | $scut-midhellip: "\22EF"; |
|---|
| 1393 | |
|---|
| 1394 | // up-pointing triangle |
|---|
| 1395 | $scut-utri: "\25b2"; |
|---|
| 1396 | // down-pointing triangle |
|---|
| 1397 | $scut-dtri: "\25bc"; |
|---|
| 1398 | // left-pointing triangle |
|---|
| 1399 | $scut-ltri: "\25c0"; |
|---|
| 1400 | // right-pointing triangle |
|---|
| 1401 | $scut-rtri: "\25b6"; |
|---|
| 1402 | // up-pointing small triangle |
|---|
| 1403 | $scut-ustri: "\25b4"; |
|---|
| 1404 | // down-pointing small triangle |
|---|
| 1405 | $scut-dstri: "\25be"; |
|---|
| 1406 | // left-pointing small triangle |
|---|
| 1407 | $scut-lstri: "\25c2"; |
|---|
| 1408 | // right-pointing small triangle |
|---|
| 1409 | $scut-rstri: "\25b8"; |
|---|
| 1410 | // diamond |
|---|
| 1411 | $scut-diamond: "\25c6"; |
|---|
| 1412 | // fisheye |
|---|
| 1413 | $scut-fisheye: "\25c9"; |
|---|
| 1414 | // bullseye |
|---|
| 1415 | $scut-bullseye: "\25ce"; |
|---|
| 1416 | // circle |
|---|
| 1417 | $scut-circle: "\25cf"; |
|---|
| 1418 | // white circle |
|---|
| 1419 | $scut-whitecircle: "\25cb"; |
|---|
| 1420 | |
|---|
| 1421 | // SCUT FONT-FACE |
|---|
| 1422 | // http://davidtheclark.github.io/scut/#font-face |
|---|
| 1423 | |
|---|
| 1424 | @mixin scut-font-face ( |
|---|
| 1425 | $font-family, |
|---|
| 1426 | $file-path, |
|---|
| 1427 | $weight: normal, |
|---|
| 1428 | $style: normal |
|---|
| 1429 | ) { |
|---|
| 1430 | |
|---|
| 1431 | @font-face { |
|---|
| 1432 | font-family: $font-family; |
|---|
| 1433 | font-weight: $weight; |
|---|
| 1434 | font-style: $style; |
|---|
| 1435 | |
|---|
| 1436 | src: url('#{$file-path}.eot'); |
|---|
| 1437 | src: url('#{$file-path}.eot?#iefix') format('embedded-opentype'), |
|---|
| 1438 | url('#{$file-path}.woff') format('woff'), |
|---|
| 1439 | url('#{$file-path}.ttf') format('truetype'), |
|---|
| 1440 | url('#{$file-path}.svg##{$font-family}') format('svg'); |
|---|
| 1441 | } |
|---|
| 1442 | |
|---|
| 1443 | } |
|---|
| 1444 | |
|---|
| 1445 | // SCUT HANGING INDENT |
|---|
| 1446 | // http://davidtheclark.github.io/scut/#hanging_indent |
|---|
| 1447 | |
|---|
| 1448 | @mixin scut-hanging-indent ( |
|---|
| 1449 | $indent: 1em |
|---|
| 1450 | ) { |
|---|
| 1451 | |
|---|
| 1452 | // padding-left creates the indent, |
|---|
| 1453 | // while text-indent pulls the first line |
|---|
| 1454 | // back to the edge. |
|---|
| 1455 | |
|---|
| 1456 | padding-left: $indent; |
|---|
| 1457 | text-indent: -$indent; |
|---|
| 1458 | |
|---|
| 1459 | } |
|---|
| 1460 | |
|---|
| 1461 | %scut-hanging-indent { |
|---|
| 1462 | @include scut-hanging-indent; |
|---|
| 1463 | } |
|---|
| 1464 | |
|---|
| 1465 | // SCUT INDENTED PARAGRAPHS |
|---|
| 1466 | // http://davidtheclark.github.io/scut/#indented_paragraphs |
|---|
| 1467 | |
|---|
| 1468 | @mixin scut-indented-ps ( |
|---|
| 1469 | $indent: 1.5em, |
|---|
| 1470 | $no-first-indent: true |
|---|
| 1471 | ) { |
|---|
| 1472 | |
|---|
| 1473 | p { |
|---|
| 1474 | margin: 0; |
|---|
| 1475 | text-indent: $indent; |
|---|
| 1476 | } |
|---|
| 1477 | |
|---|
| 1478 | @if $no-first-indent { |
|---|
| 1479 | p:first-of-type { |
|---|
| 1480 | text-indent: 0; |
|---|
| 1481 | } |
|---|
| 1482 | } |
|---|
| 1483 | |
|---|
| 1484 | } |
|---|
| 1485 | |
|---|
| 1486 | %scut-indented-ps { |
|---|
| 1487 | @include scut-indented-ps; |
|---|
| 1488 | } |
|---|
| 1489 | |
|---|
| 1490 | // SCUT KEY-VALUE |
|---|
| 1491 | // http://davidtheclark.github.io/scut/#key-value |
|---|
| 1492 | |
|---|
| 1493 | @mixin scut-key-val ( |
|---|
| 1494 | $divider: ":", |
|---|
| 1495 | $pad: 0.25em, |
|---|
| 1496 | $indent: 1em, |
|---|
| 1497 | $spacing: 0, |
|---|
| 1498 | $pad-left: 0 |
|---|
| 1499 | ) { |
|---|
| 1500 | |
|---|
| 1501 | & > dt { |
|---|
| 1502 | clear: both; |
|---|
| 1503 | float: left; |
|---|
| 1504 | &:after { |
|---|
| 1505 | content: $divider; |
|---|
| 1506 | margin-right: $pad; |
|---|
| 1507 | @if $pad-left != 0 { |
|---|
| 1508 | margin-left: $pad-left; |
|---|
| 1509 | } |
|---|
| 1510 | } |
|---|
| 1511 | } |
|---|
| 1512 | |
|---|
| 1513 | & > dd { |
|---|
| 1514 | margin-left: $indent; |
|---|
| 1515 | @if $spacing != 0 { |
|---|
| 1516 | margin-bottom: $spacing; |
|---|
| 1517 | } |
|---|
| 1518 | } |
|---|
| 1519 | |
|---|
| 1520 | } |
|---|
| 1521 | |
|---|
| 1522 | %scut-key-val { |
|---|
| 1523 | @include scut-key-val; |
|---|
| 1524 | } |
|---|
| 1525 | |
|---|
| 1526 | // SCUT LINK: BOTTOM-BORDERED |
|---|
| 1527 | // http://davidtheclark.github.io/scut/#link_bottom-bordered |
|---|
| 1528 | |
|---|
| 1529 | @mixin scut-link-bb ( |
|---|
| 1530 | $color: inherit, |
|---|
| 1531 | $style: solid, |
|---|
| 1532 | $width: 1px |
|---|
| 1533 | ) { |
|---|
| 1534 | |
|---|
| 1535 | text-decoration: none; |
|---|
| 1536 | |
|---|
| 1537 | border-bottom-width: $width; |
|---|
| 1538 | border-bottom-style: $style; |
|---|
| 1539 | @if $color != inherit { |
|---|
| 1540 | border-bottom-color: $color; |
|---|
| 1541 | } |
|---|
| 1542 | |
|---|
| 1543 | } |
|---|
| 1544 | |
|---|
| 1545 | %scut-link-bb { |
|---|
| 1546 | @include scut-link-bb; |
|---|
| 1547 | } |
|---|
| 1548 | |
|---|
| 1549 | // SCUT REVERSE ITALICS |
|---|
| 1550 | // http://davidtheclark.github.io/scut/#reverse-italics |
|---|
| 1551 | |
|---|
| 1552 | @mixin scut-reverse-italics ( |
|---|
| [3427] | 1553 | $elements: null |
|---|
| [2640] | 1554 | ) { |
|---|
| 1555 | |
|---|
| 1556 | $element-list: em, cite, i; |
|---|
| 1557 | @each $el in $elements { |
|---|
| 1558 | $element-list: append($element-list, unquote($el), comma) |
|---|
| 1559 | } |
|---|
| 1560 | |
|---|
| 1561 | font-style: italic; |
|---|
| 1562 | #{$element-list} { |
|---|
| 1563 | font-style: normal; |
|---|
| 1564 | } |
|---|
| 1565 | |
|---|
| 1566 | } |
|---|
| 1567 | |
|---|
| 1568 | %scut-reverse-italics { |
|---|
| 1569 | @include scut-reverse-italics; |
|---|
| 1570 | } |
|---|
| 1571 | |
|---|
| 1572 | // SCUT SIDE-LINED |
|---|
| 1573 | // http://davidtheclark.github.io/scut/#side-lined |
|---|
| 1574 | |
|---|
| 1575 | @mixin scut-side-lined ( |
|---|
| 1576 | $height: 1px, |
|---|
| 1577 | $space: 0.5em, |
|---|
| 1578 | $color: inherit, |
|---|
| 1579 | $style: solid, |
|---|
| 1580 | $v-adjust: false, |
|---|
| 1581 | $double: false |
|---|
| 1582 | ) { |
|---|
| 1583 | |
|---|
| 1584 | display: block; |
|---|
| 1585 | overflow: hidden; |
|---|
| 1586 | text-align: center; |
|---|
| 1587 | |
|---|
| 1588 | &:before, |
|---|
| 1589 | &:after { |
|---|
| 1590 | content: ""; |
|---|
| 1591 | display: inline-block; |
|---|
| 1592 | vertical-align: middle; |
|---|
| 1593 | position: relative; |
|---|
| 1594 | width: 50%; |
|---|
| 1595 | |
|---|
| 1596 | border-top-style: $style; |
|---|
| 1597 | border-top-width: $height; |
|---|
| 1598 | |
|---|
| 1599 | @if $color != inherit { |
|---|
| 1600 | border-top-color: $color; |
|---|
| 1601 | } |
|---|
| 1602 | |
|---|
| 1603 | @if $v-adjust != false { |
|---|
| 1604 | bottom: $v-adjust; |
|---|
| 1605 | } |
|---|
| 1606 | |
|---|
| 1607 | @if $double != false { |
|---|
| 1608 | height: $double; |
|---|
| 1609 | border-bottom-style: $style; |
|---|
| 1610 | border-bottom-width: $height; |
|---|
| 1611 | @if $color != inherit { |
|---|
| 1612 | border-bottom-color: $color; |
|---|
| 1613 | } |
|---|
| 1614 | } |
|---|
| 1615 | } |
|---|
| 1616 | |
|---|
| 1617 | &:before { |
|---|
| 1618 | right: $space; |
|---|
| 1619 | margin-left: -50%; |
|---|
| 1620 | } |
|---|
| 1621 | &:after { |
|---|
| 1622 | left: $space; |
|---|
| 1623 | margin-right: -50%; |
|---|
| 1624 | } |
|---|
| 1625 | |
|---|
| 1626 | } |
|---|
| 1627 | |
|---|
| 1628 | %scut-side-lined { |
|---|
| 1629 | @include scut-side-lined; |
|---|
| 1630 | } |
|---|
| 1631 | |
|---|
| 1632 | // SCUT TRUNCATE |
|---|
| 1633 | // http://davidtheclark.github.io/scut/#truncate |
|---|
| 1634 | |
|---|
| 1635 | @mixin scut-truncate { |
|---|
| 1636 | |
|---|
| 1637 | white-space: nowrap; |
|---|
| 1638 | overflow: hidden; |
|---|
| 1639 | text-overflow: ellipsis; |
|---|
| 1640 | |
|---|
| 1641 | } |
|---|
| 1642 | |
|---|
| 1643 | %scut-truncate { |
|---|
| 1644 | @include scut-truncate; |
|---|
| 1645 | } |
|---|