<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Css :required :invalid test</title>
</head>
<body>
  
  <div class="formwrap">
    <label for="name">Your name</label>
    <input type="text" name="name" placeholder="Your name" required>
  </div>
  
  <div class="formwrap">
    <label for="email">Email</label>
    <input type="email" name="email" id="email" placeholder="Your email" required>
  </div>
  
</body>
</html>
* {
  box-sizing: border-box;
}

body {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  min-height: 100vh;
  font-family: sans-serif;
}

.formwrap {
  width: 30%;
  margin: 0 0 1rem 0;
}

label {
  display: block;
  margin: 0 0 0.2rem 0;
}

input {
  width: 100%;
  padding: 0.6rem 1rem;
  border: solid 1px hsl(270, 50%, 30%);
  border-radius: 4px;
  box-shadow: none;
}

input:required:invalid {
  border: 2px solid hsl(0, 50%, 50%);
}

input:required:valid {
  border: 2px solid hsl(120, 50%, 50%);
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.