如何在不使用 Material UI 库的情况下创建类似于 Material UI 文本字段的文本字段?

Jam*_*nov 1 html css reactjs material-ui

使用纯 HTML、CSS、Reactjs

我想让占位符在您单击文本字段时向上移动到边框

Material UI 文本字段示例: https: //material-ui.com/components/text-fields/

小智 10

您可以找到许多使用纯 html5 和 css 的替代选项。

下面是一个例子

<div class="form__group">
  <input type="email" id="email" class="form__field" placeholder="Your Email">
  <label for="email" class="form__label">Your Email</label>
</div>

<div class="form__group">
  <textarea id="message" class="form__field" placeholder="Your Message" rows="6"></textarea>
  <label for="message" class="form__label">Your Message</label>
</div>
Run Code Online (Sandbox Code Playgroud)

和CSS

@import url(https://fonts.googleapis.com/css?family=Roboto);

html {
  font-family: 'Roboto', sans-serif;
}

.form__group {
  position: relative;
  padding: 15px 0 0;
  margin-top: 10px;
}

.form__field {
  font-family: inherit;
  width: 100%;
  border: 0;
  border-bottom: 1px solid #d2d2d2;
  outline: 0;
  font-size: 16px;
  color: #212121;
  padding: 7px 0;
  background: transparent;
  transition: border-color 0.2s;
}

.form__field::placeholder {
  color: transparent;
}

.form__field:placeholder-shown ~ .form__label {
  font-size: 16px;
  cursor: text;
  top: 20px;
}

label,
.form__field:focus ~ .form__label {
  position: absolute;
  top: 0;
  display: block;
  transition: 0.2s;
  font-size: 12px;
  color: #9b9b9b;
}

.form__field:focus ~ .form__label {
  color: #009788;
}

.form__field:focus {
  padding-bottom: 6px;
  border-bottom: 2px solid #009788;
}
Run Code Online (Sandbox Code Playgroud)

如本例所示