📜  显示输入类型数字箭头 (1)

📅  最后修改于: 2023-12-03 15:10:31.749000             🧑  作者: Mango

显示输入类型数字箭头

在一些需要用户输入数字的场景中,我们经常需要增加一些交互性的元素来方便用户进行输入,例如数字输入框中的加减箭头。本文将介绍如何使用 HTML、CSS 和 JavaScript 实现这样的数字输入框。

HTML 部分

我们需要先创建一个数字输入框,包含两个按钮和一个输入框,HTML 代码如下:

<div class="number-input">
  <button class="minus"></button>
  <input type="number" min="0" max="10" step="1" value="0">
  <button class="plus"></button>
</div>

其中 number-input 是父容器,minusplus 分别是减少和增加数字的按钮,input 标签是用来输入数字的,设置了最小值为 0,最大值为 10,每次增减的步长为 1,默认值为 0

CSS 部分

接下来我们需要用 CSS 来美化这个数字输入框,其中最为重要的是给按钮添加样式,让它们看起来像是数字的上下箭头。CSS 代码如下:

.number-input {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  width: 150px;
  height: 50px;
  border: 1px solid #ccc;
  border-radius: 4px;
  overflow: hidden;
}

.number-input button {
  width: 30px;
  height: 50%;
  border: none;
  background-color: #f2f2f2;
  font-size: 16px;
  color: #008CBA;
  cursor: pointer;
  transition: background-color 0.2s;
}

.number-input button:hover {
  background-color: #008CBA;
  color: white;
}

.number-input button:focus {
  outline: none;
}

.number-input input {
  width: 90px;
  height: 100%;
  border: none;
  text-align: center;
  font-size: 16px;
  font-weight: bold;
  color: #008CBA;
  background-color: #f2f2f2;
}

.number-input input::-webkit-outer-spin-button,
.number-input input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.number-input input:focus {
  outline: none;
}

.number-input input:invalid {
  box-shadow: none;
}

在这段代码中,我们使用了 flex 布局来让按钮和输入框在父容器中居中,给按钮添加了一些样式使其看起来像是箭头,给输入框添加了一些样式使其美观。

JavaScript 部分

最后,我们需要用 JavaScript 来实现按钮的功能,让用户能够通过点击按钮来增减数字。JavaScript 代码如下:

const numberInput = document.querySelector(".number-input");
const minusBtn = numberInput.querySelector(".minus");
const plusBtn = numberInput.querySelector(".plus");
const input = numberInput.querySelector("input");

minusBtn.addEventListener("click", (event) => {
  event.preventDefault();
  input.value = parseInt(input.value) - 1;
});

plusBtn.addEventListener("click", (event) => {
  event.preventDefault();
  input.value = parseInt(input.value) + 1;
});

在这段代码中,我们获取到了减少和增加数字的按钮和输入框,然后为按钮添加了 click 事件监听器,在点击按钮时执行相应的操作。

完整代码

完整的 HTML、CSS 和 JavaScript 代码如下:

<div class="number-input">
  <button class="minus"></button>
  <input type="number" min="0" max="10" step="1" value="0">
  <button class="plus"></button>
</div>

<style>
.number-input {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  width: 150px;
  height: 50px;
  border: 1px solid #ccc;
  border-radius: 4px;
  overflow: hidden;
}

.number-input button {
  width: 30px;
  height: 50%;
  border: none;
  background-color: #f2f2f2;
  font-size: 16px;
  color: #008CBA;
  cursor: pointer;
  transition: background-color 0.2s;
}

.number-input button:hover {
  background-color: #008CBA;
  color: white;
}

.number-input button:focus {
  outline: none;
}

.number-input input {
  width: 90px;
  height: 100%;
  border: none;
  text-align: center;
  font-size: 16px;
  font-weight: bold;
  color: #008CBA;
  background-color: #f2f2f2;
}

.number-input input::-webkit-outer-spin-button,
.number-input input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.number-input input:focus {
  outline: none;
}

.number-input input:invalid {
  box-shadow: none;
}
</style>

<script>
const numberInput = document.querySelector(".number-input");
const minusBtn = numberInput.querySelector(".minus");
const plusBtn = numberInput.querySelector(".plus");
const input = numberInput.querySelector("input");

minusBtn.addEventListener("click", (event) => {
  event.preventDefault();
  input.value = parseInt(input.value) - 1;
});

plusBtn.addEventListener("click", (event) => {
  event.preventDefault();
  input.value = parseInt(input.value) + 1;
});
</script>

现在你可以将这段代码添加到你的网站中,让用户更加方便地使用数字输入框!