<form>
  
  <ul class="select">
    <li>
      <input class="select_close" type="radio" name="awesomeness" id="awesomeness-close" value=""/>
      <span class="select_label select_label-placeholder">Awesomeness Level</span>
    </li>
    
    <li class="select_items">
      <input class="select_expand" type="radio" name="awesomeness" id="awesomeness-opener"/>
      <label class="select_closeLabel" for="awesomeness-close"></label>
      
      <ul class="select_options">
        <li class="select_option">
          <input class="select_input" type="radio" name="awesomeness" id="awesomeness-ridiculous"/>
          <label class="select_label" for="awesomeness-ridiculous">ridiculous</label>
        </li>

        <li class="select_option">
          <input class="select_input" type="radio" name="awesomeness" id="awesomeness-reasonable"/>
          <label class="select_label" for="awesomeness-reasonable">reasonable</label>
        </li>

        <li class="select_option">
          <input class="select_input" type="radio" name="awesomeness" id="awesomeness-lacking"/>
          <label class="select_label" for="awesomeness-lacking">lacking</label>
        </li>

        <li class="select_option">
          <input class="select_input" type="radio" name="awesomeness" id="awesomeness-awesomeless"/>
          <label class="select_label" for="awesomeness-awesomeless">awesomeless</label>
        </li>
      </ul>
      
      <label class="select_expandLabel" for="awesomeness-opener"></label>
    </li>
  </ul>
  
</form>
form {
  width: 100%;
  height: 100%;
  padding-bottom: 75px;
  display: flex;
  justify-content: center;
  align-items: center;
  background-image: radial-gradient(at top, #b5e6cf, #9dddad);
}

.select {
  width: 225px;
  height: 40px;
  cursor: pointer;
  background-color: white;
  box-shadow: 0 2px 0 white;
  border-radius: 2px;
  
  &_expand {
    width: 0;
    height: 40px;
    position: absolute;
    top: 0;
    right: 0;
    
    &::after {
      content: '\003E';
      position: absolute;
      top: 50%;
      right: 0;
      transform: translate(-50%, -50%) rotate(90deg) scaleY(1.75);
      color: #3e3e3e;
      font-size: 28px;
      pointer-events: none;
      z-index: 2;
      transition: all 250ms cubic-bezier(.4,.25,.3,1);
      opacity: .6;
    }
    
    &:hover::after {opacity: 1}

    &:checked::after {transform: translate(-50%, -50%) rotate(90deg) scaleX(-1) scaleY(1.75);}
  }
  
  &_expandLabel {
    display: block;
    width: 100%;
    height: 40px;
    position: absolute;
    top: 0;
    left: 0;
    cursor: pointer;
  }
  
  &_close {display: none}
  
  &_closeLabel {
    width: 100vw;
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
    display: none;
  }
  
  &_items {
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    border: 2px solid #2fb5d1;
    border-radius: 2px;
    padding-top: 40px;
  }
  
  &_input {display: none}
  
  &_label {
    transition: all 250ms cubic-bezier(.4,.25,.3,1);
    display: block;
    height: 0;
    font-size: 1.2rem;
    line-height: 40px;
    overflow: hidden;
    color: #3e3e3e;
    background-color: #fff;
    cursor: pointer;
    padding-left: 20px;
    
    &-placeholder {
      height: 40px;
      vertical-align: middle;
      position: absolute;
      top: 0;
      left: 0;
      opacity: .6;
      background-color: transparent;
    }
  }
  
  &_expand:checked {
    + .select_closeLabel {
      display: block;
      
      + .select_options {
        .select_label {
          height: 40px;
          &:hover {background-color: #f7f7f7}
        }
        
        + .select_expandLabel {display: none}
      }
    }
  }
  
  &_input:checked + .select_label {
    height: 40px;
    margin-top: -40px;
  }
}
View Compiled

External CSS

  1. https://codepen.io/udyux/pen/jWMbjG.postcss

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js