📅  最后修改于: 2023-12-03 15:10:31.749000             🧑  作者: Mango
在一些需要用户输入数字的场景中,我们经常需要增加一些交互性的元素来方便用户进行输入,例如数字输入框中的加减箭头。本文将介绍如何使用 HTML、CSS 和 JavaScript 实现这样的数字输入框。
我们需要先创建一个数字输入框,包含两个按钮和一个输入框,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
是父容器,minus
和 plus
分别是减少和增加数字的按钮,input
标签是用来输入数字的,设置了最小值为 0
,最大值为 10
,每次增减的步长为 1
,默认值为 0
。
接下来我们需要用 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 代码如下:
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>
现在你可以将这段代码添加到你的网站中,让用户更加方便地使用数字输入框!