Skip to content

Instantly share code, notes, and snippets.

@bootsified
Last active February 12, 2016 18:09
Show Gist options
  • Save bootsified/6050e1d19f61facebe1d to your computer and use it in GitHub Desktop.
Save bootsified/6050e1d19f61facebe1d to your computer and use it in GitHub Desktop.
The Select or Die (http://vst.mn/selectordie/) CSS converted to Sass.
/* ===========================================================
*
* Name: selectordie.css
* Updated: 2014-10-10
* Created by: Per V @ Vst.mn
* What?: Base CSS for Select or Die
*
* Copyright (c) 2014 Per Vestman
* Dual licensed under the MIT and GPL licenses.
*
* No, I don't usually comment my CSS, but in this
* case it might "help" someone.
*
* Oddny | Cogs 'n Kegs
* =========================================================== */
/* ===========================================================
*
* Conversion to Sass by Boots on 2016-2-12 (boots.media)
*
* =========================================================== */
.sod_select {
// The SoD - Please keep this first three lines intact,
// otherwise all hell will break looooooose
display: inline-block;
position: relative;
line-height: 1;
@include background-image(linear-gradient(#f5f4f1, #cac7ba));
border: 1px solid #c8c5b8;
border-radius: 0.25em;
color: #494948;
cursor: default;
font-size: 1em;
outline: 0;
outline-offset: -2px; /* Opera */
padding: 1em;
text-align: left;
transition:
border-color 200ms ease,
box-shadow 200ms ease,
color 200ms ease;
width: 100%;
&, * {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* Divider Bar */
&::before {
border-left: 1px solid #cac7ba;
border-right: 1px solid #f5f4f1;
content: ' ';
height: 100%;
right: 3em;
position: absolute;
top: 0;
width: 1px;
}
/* Down arrow */
&::after {
color: #494948;
content: "\25BC";
font-size: 0.8em;
position: absolute;
right: 1.3em;
top: 50%;
transform: translateY(-50%);
}
/* Change the border color on hover, focus and when open */
&:hover,
&.open,
&.focus { border-color: #8c8a81; }
&.open { color: #919191; }
&.focus { box-shadow: 0 0 5px rgba(0,0,0,.2); }
/* When the entire SoD is disabled, go crazy! */
&.disabled {
border-color: #828282;
color: #b2b2b2;
cursor: not-allowed;
}
/* The "label", or whatever we should call it. Keep the first three lines for truncating. */
.sod_label {
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
padding-right: 15px;
}
.sod_prefix {
/* Use this if you're using a prefix and want to style it */
}
.sod_placeholder {
/* Use this if you're using a placeholder and want to style it */
}
/* Options list wrapper */
.sod_list_wrapper {
background: #ffffff;
border-top: none;
border: 1px solid #c8c5b8;
border-radius: 0 0 0.25em 0.25em;
color: $baseFont;
display: none;
font-weight: 400;
height: auto;
left: 0;
position: absolute;
top: 100%;
width: 100%;
z-index: 1;
}
/* Shows the option list (don't edit) */
&.open .sod_list_wrapper { display: block; }
/* Don't display the options when */
&.disabled.open .sod_list_wrapper { display: none; }
/* When the option list is displayed above the SoD */
&.above .sod_list_wrapper {
border-bottom: none;
border-top: 1px solid #c8c5b8;
border-radius: 0.25em 0.25em 0 0;
bottom: 100%;
top: auto;
}
/* Options list container */
.sod_list {
display: block;
overflow-y: auto;
padding: 0;
margin: 0;
}
/* All the options. Keep the first three lines for truncating... */
.sod_option {
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
position: relative;
padding: 10px 10px;
list-style-type: none;
}
/* Optgroups */
.sod_option.optgroup,
.sod_option.optgroup.disabled {
background: inherit;
color: #939393;
font-size: 10px;
font-style: italic;
}
/* Children of an optgroup */
.sod_option.groupchild { padding-left: 20px; }
/* Used together with placeholderOption / data-placeholder-option */
.sod_option.is-placeholder {
display: none;
}
/* Disabled option */
.sod_option.disabled {
background: inherit;
color: #cccccc;
}
/* Hover state for options, also used when a user uses his/hers up/down keys */
.sod_option.active {
background: #f7f7f7;
color: #333333;
}
/*Make room for the check mark */
.sod_option.selected {
font-weight: 700;
padding-right: 25px;
}
/* Displays a check mark for the selected option */
.sod_option.selected:before {
content: "";
position: absolute;
right: 10px;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
display: inline-block;
color: #808080;
height: 9px;
width: 10px;
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMTAgOSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAgOSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8cGF0aCBmaWxsPSIjRDlEOUQ4IiBkPSJNNCw2LjdDMy42LDYuMywzLjUsNi4xLDMuMSw1LjdDMi42LDUuMiwyLDQuNiwxLjUsNC4xYy0wLjgtMC44LTIsMC40LTEuMiwxLjJjMC45LDAuOSwxLjksMS45LDIuOCwyLjgNCgkJYzAuNywwLjcsMS4zLDEsMiwwQzYuNyw2LDguMywzLjcsOS44LDEuNUMxMC41LDAuNSw5LTAuMyw4LjMsMC42bDAsMEM2LjcsMi45LDUuNyw0LjQsNCw2LjciLz4NCjwvZz4NCjwvc3ZnPg0K);
}
/* Add a .no_highlight class to you SoD to hide the check mark and don't bold the option */
&.no_highlight .sod_option.selected { font-weight: 300; }
&.no_highlight .sod_option.selected:before { display: none; }
.sod_option.link {
/* If data-link is set on a specific option */
}
.sod_option.linkexternal {
/* If data-link-external is set on a specific option */
}
/* Hide native select */
select { display: none !important; }
/* The native select in touch mode. Keep this first line. Sorry, keep everything. */
&.touch select {
-webkit-appearance: menulist-button;
position: absolute;
top: 0;
left: 0;
display: block !important;
height: 100%;
width: 100%;
opacity: 0;
z-index: 1;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment