<div class="newsletter">
    <input type="text" placeholder="Newsletter signup" class="newsletter-input" /><input class="newsletter-send" type="submit" value="Send">
  </div>
* {
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.roboto {
  font-family: "Roboto";
  font-weight: 300;
}
.roboto-bold {
  font-family: "Roboto";
  font-weight: 700;
}

.newsletter {
  position: relative;
  max-width: 580px;
  margin: 4em auto 1em;
}

.newsletter-input {
  vertical-align: top;
  width: 280px;
  outline: 0;
  margin: 0;
  padding: 15px 0 15px 10px;
  border: 1px solid transparent;
  border-radius: 3px;
  .roboto;
  font-size: 24px;
  line-height: 32px;
  
  -webkit-transition: border-color 0.2s ease,
                      color 0.2s ease,
                      padding-left 0.2s ease;
  transition: border-color 0.2s ease,
              color 0.2s ease,
              padding-left 0.2s ease;
  &::placeholder {
    color:    #666;
  }
  &:hover,
  &:focus {
    padding-left: 22px;
    border: 1px solid #ccc;
    color: #333;
    
    &::placeholder {
      color: #444;
    }
}
.newsletter-send {
  vertical-align: top;
  -webkit-appearance: none;
  border: 0;
  border-radius: 3px;
  margin: 0 0 0 24px;
  padding: 0 26px;
  .roboto-bold;
  font-size: 24px;
  line-height: 64px;
  text-transform: uppercase;
  color: white;
  background: #0a0a0a;
  opacity: 0;
  
  -webkit-transition: opacity 0.2s ease;
  transition: opacity 0.2s ease;
}
.newsletter-input:focus + .newsletter-send,
.newsletter-input:hover + .newsletter-send,
/* this last one doesn't actually work - inputs have no "content" */
.newsletter-input:not(:empty) + .newsletter-send {
  opacity: 1;
}
View Compiled
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

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