Skip to content

Commit

Permalink
init/destroy/enable/disable methods. 2x arrow graphic. cleanup.
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewfiorillo committed Jun 17, 2012
1 parent aea56cb commit 651baab
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 113 deletions.
45 changes: 0 additions & 45 deletions css/default.css

This file was deleted.

14 changes: 13 additions & 1 deletion css/fancyselect.css
Expand Up @@ -32,14 +32,26 @@
line-height: 26px;
}
.fancyselect .arrows {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKCAYAAAB4zEQNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4QURGODFFOTU3MjgxMUUxQjBCMkZCOTU5OTkzODVBQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4QURGODFFQTU3MjgxMUUxQjBCMkZCOTU5OTkzODVBQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRBNzBDMUM0NTY5RjExRTFCMEIyRkI5NTk5OTM4NUFDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhBREY4MUU4NTcyODExRTFCMEIyRkI5NTk5OTM4NUFDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+b05x8QAAAEpJREFUeNp8kIEKAEEERIfuq/w/vzWb67ac1r6SMUIBSexwd9Za8RERrDnRbtRachUGJHdPKC48/d5v0szk1Ehft+iNV9yesAQYAOC/RCWRWPXTAAAAAElFTkSuQmCC) 0 0 no-repeat;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKCAYAAAB4zEQNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUeNp8T9sJwEAIa6RTuT+ulV4EWznq5SshDxEkr0JESMDdU9tmCFw8CdRsRgdsMHLhVmIwv5t/UJOn5jSLmt0Dqa0eboE3+AgwAHN7GgmNZ9fsAAAAAElFTkSuQmCC) 0 0 no-repeat;
display: block;
width: 7px;
height: 10px;
position: absolute;
top: 8px;
right: 8px;
}

/* Pixel ratio of 2. Background-size is 1/2 = 50% (of a 200px image) */
@media
only screen and (-moz-min-device-pixel-ratio: 2),
only screen and (-o-min-device-pixel-ratio: 2/1),
only screen and (-webkit-min-device-pixel-ratio: 2),
only screen and (min-device-pixel-ratio: 2) {
.fancyselect .arrows {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAUCAYAAAC9BQwsAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFxJREFUeNrc00sKACAIBNC8lvfXaxkERdEHc1o1W3kbHcnMUiS0g6paB8TMPtihtMMTXKAlHuABTbhBBxpwgReoYRIRe3qOnyC0nNA5oAJAlYNKDr0V9MieZAEGADRBax9ga1hcAAAAAElFTkSuQmCC) 0 0 no-repeat;
background-size: 100%;
}
}
.fancyselect.focus {
border: 1px solid #96b7ff;
-moz-box-shadow: 0 0 4px rgba(150,183,255,0.7), 0 1px 1px rgba(0,0,0,0.05);
Expand Down
21 changes: 21 additions & 0 deletions css/style.css
@@ -0,0 +1,21 @@
body {
background: white;
text-align: center;
font-family: "proxima nova", "helvetica neue", helvetica, arial, sans-serif;
font-size: 13px;
color: #333;
padding: 20px;
}
#wrapper {
margin: 0 auto;
width: 400px;
}
h1 {
text-align: center;
font-size: 22px;
font-weight: 600;
}
.fancyselect {
margin: 0 auto 20px auto;
vertical-align: middle;
}
57 changes: 14 additions & 43 deletions index.html
@@ -1,39 +1,19 @@
<!DOCTYPE html>
<html>
<head>

<title></title>
<title>Styling Select Boxes</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<!-- <link rel="stylesheet" href="css/default.css" type="text/css" /> -->
<link rel="stylesheet" href="css/fancyselect.css" type="text/css" />

<style type="text/css">
body {
background: white;
text-align: center;
font-family: "proxima nova", "helvetica neue", helvetica, arial, sans-serif;
font-size: 13px;
color: #333;
padding: 20px;
}
#wrapper {
margin: 0 auto;
width: 400px;
}
h1 {
text-align: center;
font-size: 22px;
font-weight: 600;
}
</style>
<link rel="stylesheet" href="css/fancyselect.css" type="text/css" />
<link rel="stylesheet" href="css/style.css" type="text/css" />

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/fancyselect.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("select").fancyselect();
$(document).ready(function() {
$('select').fancyselect();
});
</script>

Expand All @@ -46,49 +26,40 @@
<h1>Styling Select Boxes</h1>
<br />
<br />

<select>
<option>One</option>
<option>Two</option>
<option>The</option>
</select>

&nbsp;

<select>
<option>Uno</option>
<option>Dos</option>
<option>Tres</option>
</select>

&nbsp;

<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<br />

<br /><br />

<select>
<option>Something</option>
<option>Something a little bit longer</option>
<option>something medium</option>
</select>
<br />

<br /><br />

<select disabled="disabled">
<option>Something</option>
<option>Something a little bit longer</option>
<option>something medium</option>
<option>disabled</option>
<option>lorem</option>
<option>lorem ipsum dolor</option>
</select>

</div>



</body>
</html>

</html>
71 changes: 47 additions & 24 deletions js/fancyselect.js
@@ -1,29 +1,52 @@
(function($){

$.fn.fancyselect = function() {

this.each(function(i,select) {
$(select)
.wrap('<span class="fancyselect" />')
.before('<span class="arrows" />')
.before('<span class="selecttext" />')
.fadeTo(0,0)
.focus(function() { $(this).parent('span').addClass('focus') })
.blur(function() { $(this).parent('span').removeClass('focus') })
.on("change keyup", function() { $(this).prev(".selecttext").text($(select).val()) })
.siblings(".selecttext").text($(select).val());

select.disable = function() {
$(this).attr("disabled", "disabled").parent().addClass('disabled');
};
select.enable = function() {
$(this).removeAttr('disabled').parent().removeClass('disabled');
};

if ($(select).attr("disabled")) select.disable();

});

var methods = {
init: function() {
return this.each(function(i,el) {
$(el).wrap('<span class="fancyselect" />')
.before('<span class="arrows" />')
.before('<span class="selecttext" />')
.fadeTo(0,0)
.focus(function() { $(el).parent('span').addClass('focus'); })
.blur(function() { $(el).parent('span').removeClass('focus'); })
.on("change keydown keyup", function() { $(el).fancyselect('update'); })
.fancyselect('update');
if ($(el).attr("disabled")) $(el).fancyselect('disable');
});
},
destroy: function() {
return this.each(function(i,el) {
$(el).siblings('span').remove();
$(el).unwrap().fadeTo(0,1).unbind('focus blur change keydown keyup');
});
},
enable: function() {
return this.each(function(i,el) {
$(el).removeAttr('disabled').parent().removeClass('disabled');
});
},
disable: function() {
return this.each(function(i,el) {
$(el).attr("disabled", "disabled").parent().addClass('disabled');
});
},
update: function() {
return this.each(function(i,el) {
$(el).prev(".selecttext").text($(el).children('option:selected').text());
});
}
};

$.fn.fancyselect = function(method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
}
else if (typeof method === 'object' || ! method) {
return methods.init.apply(this, arguments);
}
else {
$.error('Method ' + method + ' does not exist for .fancyselect()');
}
};

})( jQuery );

0 comments on commit 651baab

Please sign in to comment.