header
  h1 CSS3 Checkbox Logic Gates
  h3
    a(href="https://twitter.com/Okahyphen" target="_blank") @Okahyphen

.container
  h2 AND Gate
  input(type="checkbox" checked="checked")#box-AND-1
  input(type="checkbox")#box-AND-2

  label(for="box-AND-1").box
  label(for="box-AND-2").box

  .light.light-AND
  
.container
  h2 OR Gate
  input(type="checkbox")#box-OR-1
  input(type="checkbox")#box-OR-2

  label(for="box-OR-1").box
  label(for="box-OR-2").box
  
  .light.light-OR
  
.container
  h2 NOT Gate
  input(type="checkbox")#box-NOT-1

  label(for="box-NOT-1").box
  
  .light.light-NOT
  
.container
  h2 NAND Gate
  input(type="checkbox")#box-NAND-1
  input(type="checkbox")#box-NAND-2

  label(for="box-NAND-1").box
  label(for="box-NAND-2").box
  
  .light.light-NAND
  
.container
  h2 NOR Gate
  input(type="checkbox")#box-NOR-1
  input(type="checkbox")#box-NOR-2

  label(for="box-NOR-1").box
  label(for="box-NOR-2").box
  
  .light.light-NOR
  
.container
  h2 XOR Gate
  input(type="checkbox")#box-XOR-1
  input(type="checkbox")#box-XOR-2

  label(for="box-XOR-1").box
  label(for="box-XOR-2").box
  
  .light.light-XOR
  
.container
  h2 XNOR Gate
  input(type="checkbox")#box-XNOR-1
  input(type="checkbox")#box-XNOR-2

  label(for="box-XNOR-1").box
  label(for="box-XNOR-2").box
  
  .light.light-XNOR
View Compiled
@import "bourbon";

@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400|Dosis:200,300,400);

*,
*:before,
*:after {
  @include box-sizing(border-box);
}

html,
body {
  background-color: #fff;
  font: {
    family: 'Dosis';
  }
  color: #333;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0;
  font-weight: 300;
}

header {
  margin: 15px auto;
  width: 500px;
  text-align: center;
}

h2 {
  margin-bottom: 25px;
  text-indent: 10px;
}

a {
  color: #333;
  &:hover {
    color: #33d68b;
  }
}

.container {
  margin: 0 auto 30px;
  padding: 10px;
  position: relative;
  width: 300px;
  height: 160px;
  background-color: #ddd;
  border-radius: 6px;
  box-shadow: 0 0 4px -1px #333;
  overflow: hidden;
}

.box {
  margin-left: 10px;
  display: block;
  position: relative;
  float: left;
  width: 50px;
  height: 50px;
  background-color: #fff;
  border-radius: 4px;
  @include transition(all 0.4s ease);
  overflow: hidden;
  cursor: pointer;
  
  &:after {
    margin: auto;
    @include position(absolute, 0 0 0 0);
    width: 0;
    height: 0;
    border-radius: 50%;
    background-color: #eee;
    content: '';
    @include transition(all 0.1s ease);
    z-index: 50;
  }
  
  &:hover:after {
    width: 100%;
    height: 100%;
    border-radius: 4px;
  }
}

.light {
  margin-right: 15px;
  position: relative;
  float: right;
  width: 50px;
  height: 50px;
  background-color: #fff;
  border-radius: 50%;
  overflow: hidden;
  
  &:after {
    margin: auto;
    @include position(absolute, 0 0 0 0);
    width: 0;
    height: 0;
    background-color: #33d68b;
    border-radius: 50%;
    @include transition(all 0.1s ease);
    content: '';
  }
}

input[type="checkbox"] {
  display: none;
}

// Checkboxes

#box-AND-1:checked ~ label[for="box-AND-1"],
#box-AND-2:checked ~ label[for="box-AND-2"],
#box-OR-1:checked ~ label[for="box-OR-1"],
#box-OR-2:checked ~ label[for="box-OR-2"],
#box-NOT-1:checked ~ label[for="box-NOT-1"],
#box-NAND-1:checked ~ label[for="box-NAND-1"],
#box-NAND-2:checked ~ label[for="box-NAND-2"],
#box-NOR-1:checked ~ label[for="box-NOR-1"],
#box-NOR-2:checked ~ label[for="box-NOR-2"],
#box-XOR-1:checked ~ label[for="box-XOR-1"],
#box-XOR-2:checked ~ label[for="box-XOR-2"],
#box-XNOR-1:checked ~ label[for="box-XNOR-1"],
#box-XNOR-2:checked ~ label[for="box-XNOR-2"] {
  &:before {
    margin: auto;
    @include position(absolute, 0 0 0 0);
    width: 100%;
    background-color: #d9517e;
    text-align: center;
    line-height: 50px;
    font-family: 'FontAwesome';
    font-size: 2em;
    color: #fff;
    content: "\f00c";
    z-index: 60;
  }
}

// Logic Gates

// AND
#box-AND-1:checked + #box-AND-2:checked ~ .light-AND:after {
  width: 100%;
  height: 100%;
}
// OR
#box-OR-1:checked ~ .light-OR:after,
#box-OR-2:checked ~ .light-OR:after {
  width: 100%;
  height: 100%;
}
// NOT 
#box-NOT-1:not(:checked) ~ .light-NOT:after {
  width: 100%;
  height: 100%;
}
// NAND 
#box-NAND-1:not(:checked) + #box-NAND-2:not(:checked) ~ .light-NAND:after,
#box-NAND-1:checked ~ .light-NAND:after,
#box-NAND-2:checked ~ .light-NAND:after
 {
  width: 100%;
  height: 100%;
}
#box-NAND-1:checked + #box-NAND-2:checked ~ .light-NAND:after {
  width: 0%;
  height: 0%;
}
// NOR
#box-NOR-1:not(:checked) + #box-NOR-2:not(:checked) ~ .light-NOR:after {
  width: 100%;
  height: 100%;
}
// XOR
#box-XOR-1:checked ~ .light-XOR:after,
#box-XOR-2:checked ~ .light-XOR:after
 {
  width: 100%;
  height: 100%;
}
#box-XOR-1:not(:checked) + #box-XOR-2:not(:checked) ~ .light-XOR:after,
#box-XOR-1:checked + #box-XOR-2:checked ~ .light-XOR:after {
  width: 0%;
  height: 0%;
}
// XNOR
#box-XNOR-1:not(:checked) + #box-XNOR-2:not(:checked) ~ .light-XNOR:after,
#box-XNOR-1:checked + #box-XNOR-2:checked ~ .light-XNOR:after {
  width: 100%;
  height: 100%;
}







View Compiled
/*
  Colin 'Oka' Hall-Coates, http://oka.io
  Complete set of Logic Gates created with pure CSS3 hackery.
  http://en.wikipedia.org/wiki/Logic_gate
*/

External CSS

  1. //maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css

External JavaScript

This Pen doesn't use any external JavaScript resources.