|
Server : Apache/2.4.62 System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64 User : www ( 80) PHP Version : 8.3.8 Disable Function : NONE Directory : /domains/tomcochemical/bower_components/foundation/scss/foundation/components/ |
Upload File : |
// Foundation by ZURB
// foundation.zurb.com
// Licensed under MIT Open Source
@import "global";
//
// @name
// @dependencies _global.scss
//
//
// @variables
//
// NOTE: Switches have been deprecated in Foundation 5 and will be removed in the future.
$include-html-form-classes: $include-html-classes !default;
// Controlling border styles and background colors for the switch container
$switch-border-color: scale-color(#fff, $lightness: -20%) !default;
$switch-border-style: solid !default;
$switch-border-width: 1px !default;
$switch-bg: #fff !default;
// We use these to control the switch heights for our default classes
$switch-height-tny: 22px !default;
$switch-height-sml: 28px !default;
$switch-height-med: 36px !default;
$switch-height-lrg: 44px !default;
$switch-bottom-margin: rem-calc(20) !default;
// We use these to control default font sizes for our classes.
$switch-font-size-tny: 11px !default;
$switch-font-size-sml: 12px !default;
$switch-font-size-med: 14px !default;
$switch-font-size-lrg: 17px !default;
$switch-label-side-padding: 6px !default;
// We use these to style the switch-paddle
$switch-paddle-bg: #fff !default;
$switch-paddle-fade-to-color: scale-color($switch-paddle-bg, $lightness: -10%) !default;
$switch-paddle-border-color: scale-color($switch-paddle-bg, $lightness: -35%) !default;
$switch-paddle-border-width: 1px !default;
$switch-paddle-border-style: solid !default;
$switch-paddle-transition-speed: .1s !default;
$switch-paddle-transition-ease: ease-out !default;
$switch-positive-color: scale-color($success-color, $lightness: 94%) !default;
$switch-negative-color: #f5f5f5 !default;
// Outline Style for tabbing through switches
$switch-label-outline: 1px dotted #888 !default;
//
// @mixins
//
// We use this mixin to create the base styles for our switch element.
//
// $transition-speed - Time in ms for switch to toggle. Default: $switch-paddle-transition-speed.
// $transition-ease - Easing function to use for animation (i.e. ease-out). Default: $switch-paddle-transition-ease.
@mixin switch-base(
$transition-speed:$switch-paddle-transition-speed,
$transition-ease:$switch-paddle-transition-ease) {
// Default position and structure for switch container.
position: relative;
padding: 0;
display: block;
overflow: hidden;
border-style: $switch-border-style;
border-width: $switch-border-width;
margin-bottom: $switch-bottom-margin;
// Default label styles for type and transition
label {
position: relative;
#{$default-float}: 0;
z-index: 2;
float: $default-float;
width: 50%;
height: 100%;
margin: 0;
font-weight: bold;
text-align: $default-float;
// Transition for the switch label to follow paddle
@include single-transition(all, $transition-speed, $transition-ease);
}
// So that we don't need to recreate the form with any JS, we use the
// existing radio button, but we cleverly position and hide it.
input {
position: absolute;
z-index: 3;
opacity: 0;
width: 100%;
height: 100%;
-moz-appearance: none;
// Hover and focus styles for the paddle
&:hover,
&:focus {
cursor: $cursor-pointer-value;
}
}
// The toggle area for radio switches. We call is a paddle.
span:last-child {
position: absolute;
top: -1px;
#{$default-float}: -1px;
z-index: 1;
display: block;
padding: 0;
border-width: $switch-paddle-border-width;
border-style: $switch-paddle-border-style;
// Transition for the switch paddle
@include single-transition(all, $transition-speed, $transition-ease);
}
// When a label isn't :checked, we hide it as it slides away.
input:not(:checked) + label { opacity: 0; }
// Controlling the position of the labels as they are toggled.
input:checked { display: none !important; }
input { #{$default-float}: 0; display: block !important; }
// Left Label alignment and position changes, including fixes for while inside a custom form
input:first-of-type + label,
input:first-of-type + span + label { #{$default-float}: -50%; }
input:first-of-type:checked + label,
input:first-of-type:checked + span + label { #{$default-float}: 0%; }
// Right Label alignment and position changes, including fixes for while inside a custom form
input:last-of-type + label,
input:last-of-type + span + label {#{$opposite-direction}: -50%; #{$default-float}: auto; text-align: $opposite-direction; }
input:last-of-type:checked + label,
input:last-of-type:checked + span + label { #{$opposite-direction}: 0%; #{$default-float}: auto; }
// Hiding custom form spans since we auto-create them
span.custom { display: none !important; }
// FIXME We should be able to remove this going forward.
// Bugfix for older Webkit, including mobile Webkit. Adapted from:
// http://css-tricks.com/webkit-sibling-bug/
// @media only screen and (-webkit-min-device-pixel-ratio:0) and (max-device-width:480px) {
// @if $experimental { -webkit-animation: webkitSiblingBugfix infinite 1s; }
// }
// @media only screen and (-webkit-min-device-pixel-ratio:1.5) {
// @if $experimental { -webkit-animation: none 0; }
// }
form.custom & .hidden-field {
margin-left: auto;
position: absolute;
visibility: visible;
}
}
// We use this mixin to create the size styles for switches.
//
// $height - Height (in px) of the switch. Default: $switch-height-med.
// $font-size - Font size of text in switch. Default: $switch-font-size-med.
// $line-height - Line height of switch. Default: 2.3rem.
@mixin switch-size(
$height: $switch-height-med,
$font-size: $switch-font-size-med,
$line-height: 2.3rem) {
height: rem-calc($height);
label {
padding: rem-calc(0, $switch-label-side-padding);
line-height: $line-height;
font-size: rem-calc($font-size);
}
input {
// Move the paddle to the right position
&:first-of-type:checked ~ span:last-child {
#{$default-float}: 100%;
margin-#{$default-float}: rem-calc(-$height + 1px);
}
}
span:last-child {
width: rem-calc($height);
height: rem-calc($height);
}
}
// We use this mixin to add color and other fanciness to the switches.
//
// $paddle-bg - Background of switch paddle. Default: $switch-paddle-bg.
// $positive-color - Background color of positive side of switch. Default: $switch-positive-color.
// $negative-color - Background color of negative side of switch. Default: $switch-negative-color.
// $radius - Radius to apply to switch. Default: false.
// $base-style - Apply base styles? Default: true.
@mixin switch-style(
$paddle-bg:$switch-paddle-bg,
$positive-color:$switch-positive-color,
$negative-color:$switch-negative-color,
$radius:false,
$base-style:true) {
@if $base-style {
background: $switch-bg;
border-color: $switch-border-color;
span:last-child {
border-color: scale-color($paddle-bg, $lightness: -30%);
background: $paddle-bg;
@if $experimental {
background: -moz-linear-gradient(top, $paddle-bg 0%, scale-color($paddle-bg, $lightness: -5%) 100%);
background: -webkit-linear-gradient(top, $paddle-bg 0%, scale-color($paddle-bg, $lightness: -5%) 100%);
}
background: linear-gradient(to bottom, $paddle-bg 0%, scale-color($paddle-bg, $lightness: -5%) 100%);
// Building the alternating colored sides of the switch
@if $experimental {
-webkit-box-shadow: 2px 0 10px 0 rgba(0,0,0,0.07),
1000px 0 0 1000px $positive-color,
-2px 0 10px 0 rgba(0,0,0,0.07),
-1000px 0 0 1000px $negative-color;
}
box-shadow: 2px 0 10px 0 rgba(0,0,0,0.07),
1000px 0 0 980px $positive-color,
-2px 0 10px 0 rgba(0,0,0,0.07),
-1000px 0 0 1000px $negative-color;
}
&:hover,
&:focus {
span:last-child {
background: $paddle-bg;
@if $experimental {
background: -moz-linear-gradient(top, $paddle-bg 0%, scale-color($paddle-bg, $lightness: -10%) 100%);
background: -webkit-linear-gradient(top, $paddle-bg 0%, scale-color($paddle-bg, $lightness: -10%) 100%);
}
background: linear-gradient(to bottom, $paddle-bg 0%, scale-color($paddle-bg, $lightness: -10%) 100%);
}
}
&:active { background: transparent; }
}
// Setting up the radius for switches
@if $radius == true {
@include radius(4px);
span:last-child { @include radius(3px); }
}
@else if $radius {
@include radius($radius);
span:last-child { @include radius($radius - 1px); }
}
}
// We use this to quickly create switches with a single mixin
//
// $transition-speed - Time in ms for switch to toggle. Default: $switch-paddle-transition-speed.
// $transition-ease - Easing function to use for animation (i.e. ease-out). Default: $switch-paddle-transition-ease.
// $height - Height (in px) of the switch. Default: $switch-height-med.
// $font-size - Font size of text in switch. Default: $switch-font-size-med.
// $line-height - Line height of switch. Default: 2.3rem.
// $paddle-bg - Background of switch paddle. Default: $switch-paddle-bg.
// $positive-color - Background color of positive side of switch. Default: $switch-positive-color.
// $negative-color - Background color of negative side of switch. Default: $switch-negative-color.
// $radius - Radius to apply to switch. Default: false.
// $base-style - Apply base styles? Default: true.
@mixin switch(
$transition-speed: $switch-paddle-transition-speed,
$transition-ease: $switch-paddle-transition-ease,
$height: $switch-height-med,
$font-size: $switch-font-size-med,
$line-height: 2.3rem,
$paddle-bg: $switch-paddle-bg,
$positive-color: $switch-positive-color,
$negative-color: $switch-negative-color,
$radius:false,
$base-style:true) {
@include switch-base($transition-speed, $transition-ease);
@include switch-size($height, $font-size, $line-height);
@include switch-style($paddle-bg, $positive-color, $negative-color, $radius, $base-style);
}
@include exports("switch") {
@if $include-html-form-classes {
div.switch {
@include switch;
// Large radio switches
&.large { @include switch-size($switch-height-lrg, $switch-font-size-lrg); }
// Small radio switches
&.small { @include switch-size($switch-height-sml, $switch-font-size-sml, 2.1rem); }
// Tiny radio switches
&.tiny { @include switch-size($switch-height-tny, $switch-font-size-tny, 1.9rem); }
// Add a radius to the switch
&.radius { @include radius(4px);
span:last-child{ @include radius(3px); }
}
// Make the switch completely round, like a pill
&.round { @include radius(1000px);
span:last-child { @include radius(999px); }
label { padding: rem-calc(0 $switch-label-side-padding + 3); }
}
}
@if $experimental { @-webkit-keyframes webkitSiblingBugfix { from { position: relative; } to { position: relative; } } }
}
}