Code Monkey home page Code Monkey logo

jquery.customselect's Introduction

Custom Select Box CSS Style Plugin: jQuery + CSS

Getting started

Initiate the plugin

$(document).ready(function(){
	$('#someSelectBox').customSelect();
});

Style using CSS however you like

.customSelect { 
/* This is the default class that is used */
/* Put whatever custom styles you want here */
}

.customSelect.customSelectHover {
/* Styles for when the select box is hovered */
}

.customSelect.customSelectOpen {
/* Styles for when the select box is open */
}

.customSelect.customSelectFocus {
/* Styles for when the select box is in focus */
}

.customSelect.customSelectDisabledOption {
/* Styles for when the selected item is a disabled one */
}

.customSelect.customSelectDisabled {
/* Styles for when the select box itself is disabled */
}

.customSelectInner {
/* You can style the inner box too */
}

More Examples

Cookbook

Trigger an update on the select box

Useful if any modifications are made to the select box after customSelect() has been applied

$('#someSelectBox').customSelect();

// as an example....
$('#someSelectBox').width(500).append('<option>New!</option>');

// Trigger an refresh on the select box. Good as new!
$('#someSelectBox').trigger('render');

Making customSelect responsive

In a responsive layout, you may need to change the size / style of the select box. The best way to do this is with matchMedia. Consider using a matchMedia polyfill for better browser support. The addListener extension makes it very easy to update the customSelect:

// add a media query listener and trigger a customSelect update whenever the query gets matched or unmatched
matchMedia('only screen and (max-width: 480px)').addListener(function(list){
    $('#mySelectBox').trigger('render');
});

Options

There are a few extra options if you need them

$('#someSelectBox').customSelect({
    customClass: "mySexySelect", // Specify a different class name (default is 'customSelect')
    mapClass:    true, // Copy any existing classes from the given select element (defaults to true)
    mapStyle:    true // Copy the value of the style attribute from the given select element (defaults to true)
});

Changelog

Version 0.5.1 (19/03/2013)

  • Merge fix for #60 by gu3st (Fixes issue when select box moves from display:none; to display:block;)

Version 0.5.0 (19/03/2013)

  • Namespaced events
  • API Change: 'update' event changed to 'render' to fix some compatibility issues

Version 0.4.1 (26/05/2013)

  • Fixed multiple customSelectOpen handling in FF
  • Esc & Enter key support

Version 0.4.0 (26/04/2013)

  • Some optimizations for better compression/minification
  • If you specify a customClass, that classname will be used for all states.
  • eg. {customClass:'mySexySelect'} will produce class names like mySexySelectOpen, mySexySelectFocus, mySexySelectHover
  • The only exception is the hasCustomSelect class, which will maintain the plugin's default namespace since it is applied to the select box to distinguish it from an unstyled select.

Version 0.3.7 (26/04/2013)

  • Support for disabled <option> via customSelectDisabledOption class

Version 0.3.6 (16/04/2013)

  • Calls change function instead of invoking change event to fix double-fire

Version 0.3.5 (16/04/2013)

  • Much improved logic for customSelectOpen
  • Bug fix for Firefox keyboard selection

Version 0.3.4 (15/04/2013)

Version 0.3.3 (04/03/2013)

  • Pass original customSelectSpan reference to changed() function

Version 0.3.2 (28/02/2013)

  • Patch for incorrect select height caused by 0.3.0
  • Support for disabled select boxes via customSelectDisabled class

Version 0.3.0 (12/02/2013)

  • Refactored coding style
  • Changed filenames to standard jQuery plugin naming conventions
  • Fixed IE6 Filtering
  • Added component.json for bower
  • Moved method 'changed' to local scope
  • Update to Dual GPL/MIT license

Version 0.2.5 (04/02/2013)

  • Updates/fixes to .customSelectChanged class usage
  • customSelectChanged class is added to span when select value changes
  • customSelectChanged class is removed on mousedown or on blur

Version 0.2.4 (03/02/2013)

  • Supports hover via .customSelectHover class on customSelect span

Version 0.2.3 (30/01/2013)

  • Fixes change event not firing for Firefox keyboard users
  • customSelect no longer triggers the change event on initiation

Version 0.2.1 (17/12/2012)

  • Select box listens for 'update' event which can be triggered to update the size and content if needed
  • Removed dependency on $.browser

Version 0.2.0

CHANGES IN 0.2.0

  • Streamlined creation/selection of span elements
  • Renamed span classes to "customSelect" and "customSelectInner" to coinside with plugin name
  • You can now have styles for when select box is open or focused via the classes .customSelectOpen and .customSelectFocus
  • ability to set a custom class by passing in {customClass:'myClassName'}

Copyright 2013 Adam Coulombe

Dual licensed under the MIT and GPL licenses:

This lightweight, unintrusive technique uses the native select box functionality of the web browser, and overlays a stylable element in order to acheive your desired look. Since it makes use of default browser functionality,it can be treated just like any ordinary HTML select box.

jquery.customselect's People

Contributors

adamcoulombe avatar baohouse avatar colinta avatar jako avatar mpettitt avatar rtvenge avatar stano avatar themire avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jquery.customselect's Issues

.value= does not change dropDowns text

hi,

when setting a value in JS for customSelect dropdown, just only selectedIndex is changed, not displayed value:

document.getElementById("P107_EDIT_VATID").value = 117;

selectedIndex does return value correctly, but not visible in the dropdown, until you drop it.

alert(document.getElementById("P107_EDIT_VATID").options[document.getElementById("P107_EDIT_VATID").selectedIndex].value);

validation

Hi

I'm using jq.validate form my forms.

How do I get the custom select to reflect the '.error' class on my select fields which have the class required?

Labels not working alongside select fields

Hello guys,

I'm not 100% sure this is of much concern but while trying to get my form to layout that way I wanted it to I noticed that when I add a label for my select field the actual select field gets pushed up and over to the right of everything.

You you click around and finally click within the select field you get your dropdown. Is this plugin not friendly to labels? or am I missing something?

My HTML:

<label for="upload-action">What are you doing? (Optional)</label>
 <select class="upload-select">
 <option value="Select an Activity" selected="selected">Select an Activity</option>
 <option value="Option 1">Option 1</option>
 <option value="Option 2">Option 2</option>
 </select>

My JS:

jQuery('.upload-select').customSelect({
    customClass: 'select-fields'
});

My CSS:

.select-fields { 
            padding: 9px;
            border: solid 1px #c5c6c8;
            outline: 0;
            background: #FFFFFF;
            background: -webkit-gradient(linear, left top, left 25, from(#FFFFFF), color-stop(4%, #EEEEEE), to(#FFFFFF));
            background: -moz-linear-gradient(top, #FFFFFF, #EEEEEE 1px, #FFFFFF 25px);
            box-shadow: rgba(0,0,0, 0.1) 0px 0px 8px;
            font-family: Arial, sans-serif;
            font-size: 12px;
            -moz-box-shadow: rgba(0,0,0, 0.1) 0px 0px 8px;
            -webkit-box-shadow: rgba(0,0,0, 0.1) 0px 0px 8px;
            -webkit-appearance: none;
            width: 100%;
        }

Bug on IE10

Thanks for this great plugin. I was previously using directy Ryan Fait's method, but it is much simpler with this script!

Unfortunately, while Custom Select works just fine on IE8 and IE9, it is a bit buggy on IE10 (as Ryan Fait's method), even on the demo on the officiel website (http://adam.co/lab/jquery/customselect/). The select list doesn't show up at the bottom of the select box.

Thank you!

CustomSelect Positioning Not Adapting After Resize or Media Query

I noticed that if you are using media queries to change placement of elements the selects do not follow to the new position. I have written below some enhancements to the plugin that would fix this scenario.

The simple answer to fixing this problem would be to wrap the select and the spans in a div with relative positioning. By doing this setting the coordinates is unnecessary because the select is now positioned relative to its parent.

Thanks for all the hard work you have done and the great plugin you have created.

return this.each(function () {
    var $select = $(this),
        customSelectInnerSpan = $('<span />').addClass(getClass('Inner')),
        customSelectSpan = $('<span />');

    customSelectSpan.addClass(prefix);

    if (options.mapClass) {
        customSelectSpan.addClass($select.attr('class'));
    }
    if (options.mapStyle) {
        customSelectSpan.attr('style', $select.attr('style'));
    }

    $select
        .addClass('hasCustomSelect')
        .on('update', function () {
            changed($select,customSelectSpan);

            var selectBoxWidth = parseInt($select.outerWidth(), 10) -
                    (parseInt(customSelectSpan.outerWidth(), 10) -
                        parseInt(customSelectSpan.width(), 10));

            // Set to inline-block before calculating outerHeight
            customSelectSpan.css({
                display: 'inline-block'
            });

            var selectBoxHeight = customSelectSpan.outerHeight();

            if ($select.attr('disabled')) {
                customSelectSpan.addClass(getClass('Disabled'));
            } else {
                customSelectSpan.removeClass(getClass('Disabled'));
            }

            customSelectInnerSpan.css({
                width:   selectBoxWidth,
                display: 'inline-block'
            });

            $select.css({
                '-webkit-appearance': 'menulist-button',
                width:                customSelectSpan.outerWidth(),
                position:             'absolute',
                opacity:              0,
                height:               selectBoxHeight,
                fontSize:             customSelectSpan.css('font-size'),
                top:                  0,
                left:                 0
            });
        })
        .on('change', function () {
            customSelectSpan.addClass(getClass('Changed'));
            changed($select,customSelectSpan);
        })
        .on('keyup', function (e) {
            if(!customSelectSpan.hasClass(getClass('Open'))){
                $select.blur();
                $select.focus();
            }else{
                if(e.which==13||e.which==27||e.which==9){
                    changed($select,customSelectSpan);
                }
            }
        })
        .on('mousedown', function (e) {
            customSelectSpan.removeClass(getClass('Changed'));
        })
        .on('mouseup', function (e) {

            if( !customSelectSpan.hasClass(getClass('Open'))){
                // if FF and there are other selects open, just apply focus
                if($('.'+getClass('Open')).not(customSelectSpan).length>0 && typeof InstallTrigger !== 'undefined'){
                    $select.focus();
                }else{
                    customSelectSpan.addClass(getClass('Open'));
                    e.stopPropagation();
                    $(document).one('mouseup.'+getClass('Open'), function (e) {
                        if( e.target != $select.get(0) && $.inArray(e.target,$select.find('*').get()) < 0 ){
                            $select.blur();
                        }else{
                            changed($select,customSelectSpan);
                        }
                    });
                }
            }
        })
        .focus(function () {
            customSelectSpan.removeClass(getClass('Changed')).addClass(getClass('Focus'));
        })
        .blur(function () {
            customSelectSpan.removeClass(getClass('Focus')+' '+getClass('Open'));
        })
        .hover(function () {
            customSelectSpan.addClass(getClass('Hover'));
        }, function () {
            customSelectSpan.removeClass(getClass('Hover'));
        })
        .wrap('<div style="position:relative" />')
        .parent("div").append(customSelectSpan.append(customSelectInnerSpan))
        .find("select").trigger('update');
});

Tabbing into select field fires focus event twice

My app has binds that executes a function based on the focus event. When you tab from one field into a customSelect field, the focus event gets called twice, first from tabbing into the field, and the second from line 107:

.on('keyup', function (e) {
    if(!customSelectSpan.hasClass(getClass('Open'))){
        $select.blur();
        $select.focus();
    }else{
        if(e.which==13||e.which==27){
            changed($select,customSelectSpan);
        }
    }
})

I'm guessing this part of the code is used to deal with multiple instances of customSelect?

Replace CSS camelCase with dashed-syntax

There are a number of reasons to use dashed-syntax rather than camelCase in CSS, but most importantly:

From the spec, section 4.1.3:

All CSS syntax is case-insensitive within the ASCII range...

In CSS, identifiers (including element names, classes, and IDs in selectors) can contain only the characters [a-zA-Z0-9] and ISO 10646 characters U+00A1 and higher, plus the hyphen (-) and the underscore (_); they cannot start with a digit, or a hyphen followed by a digit. Identifiers can also contain escaped characters and any ISO 10646 character as a numeric code (see next item). For instance, the identifier "B&W?" may be written as "B&W?" or "B\26 W\3F".

...the case-sensitivity of values of the HTML attributes "id" and "class", of font names, and of URIs lies outside the scope of this specification.

I've added this in a pull request: #70

.customSelectOpen class issue

Man, it's always me. I found another bug on css class change.

If you have two or more customSelect in the same page:
e.g. #cSelectA and #cSelectB.
You click on #cSelectA the plugin adds .customSelectOpen to it, but then if you click on #cSelectB without closing #cSelectA both the customSelects will have .customSelectOpen class.

See example here, .customSelectOpen adds a red background.
http://jsfiddle.net/hysHB/74/

customSelect Doesn't "Close" When You Click Elsewhere

If you click on the customSelect box and it opens and then click on an area of the page other than the customSelect or options box, the options box closes, but customSelect retains the customSelectOpen class.

Looking at the code, it's because the only way to remove the customSelectOpen class is for the customSelect to lose focus and "blur," but since the customSelect still has focus, it's retaining the customSelectOpen class.

I guess the issue is what event do you look for, then?

I'd gladly amend the script myself, but wonder what the best solution is.

Thanks!

Opening native select menus on mobile

In mobile Safari on the iPhone the native select menu opens as expected when clicking the customSelect. However, clicking does nothing in Chrome on Android and the default Android browser.

menus in responsive design

Hi,

I have a strage problem in that if I resize the browser on my responsive site the hit zone of the select menu is very small - it is fine if I refresh the page. I think this is because it is set to display:none initially ? Is there anyway to avoid this problem?

thanks,
Gareth

Flash of unstyled select menu

Hi,

Thank you for this plugin, when viewing my site on the iPhone as I view each page the native select menu is shown for a second or two,before it is replaced with my custom style.

is there a way to avoid this?

thanks,
Gareth

Key events closes the options list

After opening the options through a click, if you press some key, the list is closed automatically. This becomes a problem since it has a behavior different from the select default and prevents the user of switching between the options with the arrow keys.

Disabled class not changing after select's disabled property changes.

customSelect will set a class .customSelectDisabled on a select element that is disabled on initialisation.
But it doesn't listen for changes in the disabled/enabled state and add/remove the .customSelectDisabled class accordingly.

It would be nice if it did.

Workaround: instead of using the handy CSS class shortcuts to style a disabled element, select it like so:

.hasCustomSelect:disabled + .customSelect { background:gray; }

events fire twice

var ele = $('#selector_id').customSelect({customClass:'selector_style'});

ele.change(function(event, ele){
    console.log(event);//triggers twice
});

and .on('change', function (event) in the source triggers twice as well
any idea why? thanks!

select in hidden DIVs

Hey Adam

thanks for this - looks great.

(I originally posted about IE9 not showing this properly on your demo page, but on my page its fine, so lets ignore that).

i have a tage inside a hidden div. when the div is opened - the width of that select is minute - almost un-noticable. for now i have added a min-width on the span, but if you have better ideas i would appreciate it. thanks!

Custom select not positioned correctly in modal

Added a select field and trying to style with plugin. No luck.

Have other select fields styled just right but when appears in modal the select target area is small and in the top left corner of the .customSelect span.

Is this a bug or is there some type of workaround?

Wrong position/width of span if the element is not visible

I have two forms one is hidden (display:none) and only shows when you submit the first form (ajax).

I tried making something like this:

$(form).fadeIn(200, function(){
$('.custom-select').trigger('update');
});

But doesn't update the width and the position of the select box.

I'll try to see what's going on.

BTW thanks for the plugin!

Delay Updating Selection

On a few select dropdowns, the customSelect box takes almost 10 seconds to update with the selection. Re-clicking the box causes it to update before hand.

Anyone ever had any trouble with there being a delay between the select box updating with the selected value?

Dynamically Populated Custom Select

How do you make this plugin work in a situation where you use AJAX to repopulate a select list's options after you've already called .customSelect() on that same select element before?

Enter key is not submitting changes

Hi. While i'm focused on other inputs of form, hitting Enter key causes "Submit" key being pressed. But while focusing custom select, it just ignores Enter.
How to force enter for default behavior?
Thanks

Bugs with customSelectHover... why not just use CSS?

I found using the customSelectHover CSS class to style the hover state to be buggy. Sometimes when mousing out and clicking on other select menus, the hover state doesn't go away right away.

I found it to be much more consistent and reliable to do the following, using the CSS adjacent sibling selector:

select.hasCustomSelect:hover + .customSelect {

}

HTML5 Validation not showing

I'm implementing this on a form with HTML5 validation, however once the plugin is activated, the selects which have validation do not show the browsers "tooltip" to show it's a required field. I'm guessing this is to do with the opacity.

Is there any way around this?

Cheers
Mark

Adding options dynamically

Hi,

I have created empty select which is filled with options on page load event. And when i trigger customSelect on it, i am getting empty select without options. I found out that its issued by .trigger('update').

I am able to fix it by adding following code at the end of return function is your script:

var temp = $select.html();
$select.trigger('update');
$select.html(temp); 

but i am not sure if its a good fix. So please check it if you can.

Broken on Magento

Hi

There is some issue with Prototype used in Magento. Event 'update' crash display select. When I change 'update' to 'update2' it's work fine. But I thing it's not a good solution :)

Safari Autofill not updating selection value

When autofilling a credit card form with Safari, the selected values that display to the user in the "faked" dropdown span class="customSelect" are not accurate. If I click on the dropdown the correct value is checked in the option list, but the customSelect instance is not updated/refreshed with the correct value. I must choose another value, then my original value for it to update.

Span is Above Select Box - Opening The Select Box is Kinda Weird

The customSelect span is above my select box, as a result, I have to click above the actual select box to get this to open, I have tried using CSS to bring the span down but the max I can get it is a few pixels down. Hence, at the moment this is unusable for me.

Do you know how to fix this?

Very much appreciated.

Problem applying styles to multiple select boxes on the same page

I'm noticing a problem where select drop downs are unable to open if customSelect is being used to style multiple selects on the same page (only one select box will open in this case). I am targeting all the select boxes and styling them with the following:

$('select').customSelect();

The problem still occurs if I target each individual class one by one (ex. $('.select-1').customSelect(); & $('.select-2').customSelect(); ). Any ideas on a way to work around this?

Add a container to customSelect

Sometimes, the select arent positioning correctly. On the image below, i show where is the custom select, and the current select element (blue transparent element).

image

this can be solved by simply adding a container (with position relative) around the current elements. Eg.

<span class="custom-select-container">
  <select class="custom-select">
        <option>Option A</option>
        <option>Option B</option>
        <option>Option C</option>
    </select>
    <span class="custom-select-inner">
        <span class="custom-select-value">Option A</span>
    </span>
</span>

Thank you for the attention

100% select width

Hi guys,

I have select width 100%, but during resize the window customSelect doesn't resize. May be I miss something, please help.

Specify width of SELECTs

There is a problem with customSelectSpan.outerWidth() on 95 line. It throw different values with same elements. So I need to specify default width.

screen

How to do that? Maybe:

Initialization:
$("#some-select").customSelect({width: 276});

Defaults:
var defaults = {
customClass: 'customSelect',
mapClass: true,
mapStyle: true,
width: null
},

On update:
$select.css({
'-webkit-appearance': 'menulist-button',
width: options.width || customSelectSpan.outerWidth(),
position: 'absolute',
opacity: 0,
height: selectBoxHeight,
fontSize: customSelectSpan.css('font-size'),
left: position.left,
top: position.top
});

Thank you for your plugin! :)

Update selected value

Hi. I'm using Custom select alongside with KnockoutJS.
I have two custom selects. '.child' - dependent on '.parent' select, so while choosing options from Parent select - Child options are changing.

There is an issue, when you've selected an option from child select, than selected another value from parent, so now option you've chosen on child - doesn't exist, but still is selected.

I've tried using $('.child').trigger('update');, but i've got completely no result. It's like not using this 'update' at all.

Would be much appritiated, if you'll help me to change child select's value to first available.

click is not opening the options list

Sorry for the silly question, but I'm getting crazy on this.
I have a select coded from django, and i applied your plugin. It works fine for the style (perfectly i would say), but when i click on the select i get no option list. Any hint?
my html markup:

<select name="supplier" id="id_supplier" class="hasCustomSelect" style="width: 254px; position: absolute; opacity: 0; height: 28px; font-size: 12px;">
<option selected="selected" value="">---------</option>
</select>
<span class="customSelect" style="display: inline-block;">
<span class="customSelectInner" style="width: 236px; display: inline-block;">---------</span>
</span>

my js:

$('#id_supplier, #id_iva').customSelect();

my css:

.customSelect {
    /* Styles For Your Select Box */
    position: relative;
    background:url('/static/web/images/calendario.png') no-repeat 205px center;
    font-family:$_font_arial;
    font-size:12px;
}
.customSelect {
    border-radius:5px;
    border:2px solid $_blu_chiaro;
    padding:0 5px;
    margin:0 0 30px 30px;
    font-family:$_font_arial;
    font-size:12px;
        width:220px;
    height:25px;
}

Responsive

Hello, I have noticed when using this plugin in a responsive design the width of the select and span are static relative to the width of the browser upon refresh. Is there a way to make it have a dynamic width?

I can make it dynamic when I go into the browser and inspect the element. I change both the width of the span.customSelectInner and the select to 100%.

Thanks.

Select height problem

It seems that the hidden select does not get the correct height on this line:

var selectBoxHeight = customSelectSpan.outerHeight();

Version 0.2.4 seems ok.

Apply script on dynamically cloned elements

If you clone the styled select element, it does not work. Trying to run the below code again results in the doubled instances for each select menu. I think the script should check if the instance is already on the element and update it, if necessary.

$('select').customSelect();

Style the option box

Hi,

I'm trying to customize the borders of the option box which appears once you click on the select arrow, as they look different depending on the browser. However after playing with the css and the jQuery code I'm unable to modify these. Here is the closest I got by modifying jquery.customSelect.css 0.5.1, line 92:

$select.css({
    '-webkit-appearance': 'menulist-button',
    width:                customSelectSpan.outerWidth(),
    position:             'absolute',
    opacity:              0,
    height:               selectBoxHeight,
    fontSize:             customSelectSpan.css('font-size')
    // added code
    ,
    background: 'yellow',
    border: '1px solid #CCCCCC',
    'border-radius': '6px',
    'box-shadow': '1px 1px 2px #eee inset'
});

The yellow color is applied, but not the borders. Is possible to have custom ones? Thanks.

selected option setting

Hi,
Great plugin.
I have a select that get its values through an AJAX request.
After it gets new values the selected value remains the same
although that option may not be available anymore.
More over select.val does not make any difference. (It should set the selected value)

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.