网页开发中实用的11个文本输入和6个按钮操作特效

文本输入特效

1. Placeholder效果

占位符是指在文本框或输入框中,未输入任何内容时提示用户应输入的内容,可以让页面更加友好和简洁。通过JavaScript实现以下代码展示出了一个具有占位符特效的文本输入框:

<input type="text" id="inputText" placeholder="请输入用户名">

<script>

var input = document.getElementById('inputText');

input.addEventListener('focus', function() {

this.placeholder = '';

});

input.addEventListener('blur', function() {

this.placeholder = '请输入用户名';

});

</script>

上述代码通过addEventListener()方法添加了input的事件监听器,当文本框获得焦点时占位符会被清空,失去焦点时占位符又会出现,对用户进行友好的提示。

2. 限制输入框字数

当用户需要在特定的文本框或输入框输入固定字数的内容时,限制输入框字数就显得特别有用。下面的代码通过HTML和JavaScript实现了这一功能:

<input type="text" id="inputNum" maxlength="10">

<script>

var input = document.getElementById('inputNum');

input.addEventListener('input', function() {

var len = this.value.length;

if (len > 10) {

this.value = this.value.substring(0, 10);

}

});

</script>

上述代码通过maxlength属性限制了文本框的最大长度为10个字符,其中addEventListener()方法添加了input的事件监听器,当用户在文本框中输入内容时,脚本会判断文本框中输入的字符数,如果超过最大长度,则截取掉多余字符。

3. 实时搜索效果

在搜索引擎和电商网站中,实时搜索是一种比较常见的功能。以下代码通过JavaScript实现了一个热门商品展示的实时搜索效果:

<input type="text" id="search" placeholder="输入热门商品">

<div id="result"></div>

<script>

var items = ['iPhone 11', 'Matebook X Pro', 'ThinkPad T480s', 'iPad Pro', 'AirPods 2', 'Kindle Paperwhite'];

var search = document.getElementById('search');

var result = document.getElementById('result');

search.addEventListener('input', function() {

var str = '';

for (var i = 0; i < items.length; i++) {

if (items[i].indexOf(this.value) !== -1) {

str += '<p>' + items[i] + '</p>';

}

}

result.innerHTML = str;

});

</script>

上述代码中创建了一个包含热门商品名称的数组items,当用户在输入框中输入文字时,脚本会遍历数组,如果数组中的内容包含了用户输入的文字,则将匹配到的结果展示在页面中,从而使用户更快地找到所需商品。

4. 动态改变文本框字体大小

对于特殊字体或输入较多的文本框,可以根据输入框中的内容来动态调整字体大小,让文字更加美观易读。下面的代码展示了一个字体大小可调的输入框:

<input type="text" id="fontSize" size="30">

<script>

var input = document.getElementById('fontSize');

input.addEventListener('input', function() {

var len = this.value.length;

if (len <= 5) {

this.style.fontSize = '32px';

} else if (len <= 10) {

this.style.fontSize = '24px';

} else {

this.style.fontSize = '18px';

}

});

</script>

上述代码通过addEventListener()方法添加了input的事件监听器,当用户在文本框中输入内容时,脚本会根据输入的字符数动态地改变文本框的字体大小,从而保证了用户输入的内容在页面上的美观程度。

5. 自动提示输入内容

在许多网站和应用程序中,自动提示功能是一种非常有用的功能。以下代码通过JavaScript实现了一个自动提示功能:

<input type="text" id="autoComplete" placeholder="输入首字母进行自动提示">

<script>

var items = ['Apple', 'Banana', 'Cherry', 'Durian', 'Eggplant', 'Fig', 'Grape', 'Honeydew'];

var input = document.getElementById('autoComplete');

input.addEventListener('input', function() {

var len = this.value.length;

var str = '';

if (len > 0) {

for (var i = 0; i < items.length; i++) {

if (items[i].indexOf(this.value) === 0) {

str += '<p>' + items[i] + '</p>';

}

}

}

result.innerHTML = str;

});

</script>

上述代码中创建了一个包含单词的数组items,当用户在输入框中输入单词的首字母时,脚本会在数组中查找匹配项,并将匹配到的结果展示在页面中,从而保证用户输入的单词是正确的。

按钮操作特效

1. 按钮焦点效果

按钮焦点效果可以使按钮在用户操作时更加明显,以下代码展示了一个简单的加减操作按钮的焦点效果:

<button id="minus">-</button>

<input type="text" id="num" value="1">

<button id="plus">+</button>

<script>

var minus = document.getElementById('minus');

var num = document.getElementById('num');

var plus = document.getElementById('plus');

minus.addEventListener('focus', function() {

minus.style.backgroundColor = 'gray';

});

minus.addEventListener('blur', function() {

minus.style.backgroundColor = '';

});

plus.addEventListener('focus', function() {

plus.style.backgroundColor = 'gray';

});

plus.addEventListener('blur', function() {

plus.style.backgroundColor = '';

});

</script>

上述代码中,通过addEventListener()方法为按钮添加了focus和blur的事件监听器,当按钮获得焦点时,按钮的背景色改变,当失去焦点时背景色恢复,从而实现了按钮焦点效果。

2. 防止按钮重复点击

在一些需要提交表单或进行AJAX请求的场景中,可以使用按钮防止重复点击,以下代码展示了一个防止重复点击的按钮:

<button id="submit">提交</button>

<script>

var submit = document.getElementById('submit');

var isSubmitting = false;

submit.addEventListener('click', function() {

if (!isSubmitting) {

isSubmitting = true;

// 进行表单提交或AJAX请求

// ...

// 请求结束后,重置isSubmitting变量

isSubmitting = false;

}

});

</script>

上述代码中通过isSubmitting变量来判断是否正在提交表单或请求AJAX,如果没有提交请求则将其设置为true,并进行表单提交或AJAX请求,在请求结束后将变量设置为false,从而避免了重复提交的问题。

3. 上传文件按钮美化

上传文件功能是许多网站和应用程序必需的功能,可以通过CSS美化上传文件按钮,以下代码展示了一个简单的上传文件按钮的美化:

<label class="upload">

<span>上传文件</span>

<input type="file">

</label>

<style>

.upload {

display: inline-block;

position: relative;

border: 1px solid #ccc;

border-radius: 4px;

background-color: #f7f7f7;

padding: 6px 12px;

cursor: pointer;

}

.upload input[type="file"] {

position: absolute;

left: 0;

top: 0;

width: 100%;

height: 100%;

opacity: 0;

cursor: pointer;

}

</style>

上述代码中,在label标签内包含一个span标签和一个input标签,span标签用于显示上传文件按钮的文本,input标签用于实现文件上传功能,在CSS样式中对上传文件按钮进行了相关的样式设置,从而实现了一个简单的上传文件按钮美化。

4. 全选/取消全选按钮

当需要同时选中或取消一组复选框或单选框时,可以使用全选/取消全选按钮。以下代码展示了一个实现全选/取消全选的按钮:

<input type="checkbox" id="selectAll">全选/取消全选

<br>

<input type="checkbox" class="checkbox">A

<input type="checkbox" class="checkbox">B

<input type="checkbox" class="checkbox">C

<input type="checkbox" class="checkbox">D

<script>

var selectAll = document.getElementById('selectAll');

var checkboxes = document.getElementsByClassName('checkbox');

selectAll.addEventListener('click', function() {

for (var i = 0; i < checkboxes.length; i++) {

checkboxes[i].checked = this.checked;

}

});

for (var i = 0; i < checkboxes.length; i++) {

checkboxes[i].addEventListener('click', function() {

var checkedCount = 0;

for (var j = 0; j < checkboxes.length; j++) {

if (checkboxes[j].checked) {

checkedCount++;

}

}

selectAll.checked = checkedCount === checkboxes.length;

});

}

</script>

上述代码中,通过addEventListener()方法为全选/取消全选按钮添加了click事件监听器,当用户点击该按钮时,脚本会将所有的复选框的选中状态改变为与该按钮相同,同时为每个复选框添加了click事件监听器,当用户点击复选框时,脚本会动态更新全选/取消全选按钮的状态。

5. 分页按钮效果

在显示大量数据的页面中,可以使用分页功能来分割数据,以下代码展示了带分页按钮效果的页面:

<div id="pageBtns"></div>

<script>

var currentPage = 1;

var pageSize = 10;

var totalPage = Math.ceil(data.length / pageSize);

var pageBtns = '';

for (var i = 1; i <= totalPage; i++) {

pageBtns += '<button class="pageBtn"' + (i === currentPage ? ' disabled' : '') + '>' + i + '</button>';

}

document.getElementById('pageBtns').innerHTML = pageBtns;

var pageBtn = document.getElementsByClassName('pageBtn');

for (var i = 0; i < pageBtn.length; i++) {

pageBtn[i].addEventListener('click', function() {

currentPage = this.innerText;

for (var i = 0; i < pageBtn.length; i++) {

pageBtn[i].removeAttribute('disabled');

}

this.setAttribute('disabled', 'disabled');

// 显示当前页数据

// ...

});

}

</script>

上述代码中,currentPage和pageSize变量分别表示当前页和每页显示的数据量,totalPage变量表示数据总页数,通过循环创建了分页按钮,并为当前页的按钮添加了disabled属性,表示该按钮不可点击,为每个按钮添加了click事件监听器,当用户点击分页按钮时,脚本会根据当前页码和每页数据量来更新数据,并动态地更新当前页按钮的状态。

6. layui分页效果

layui是一个非常流行的前端UI框架,其中的分页效果十分优秀,以下代码展示了一个使用layui框架的分页效果:

<div id="pageBtns"></div>

<script>

layui.use(['laypage'], function() {

var laypage = layui.laypage;

var currentPage = 1;

var pageSize = 10;

var totalPage = Math.ceil(data.length / pageSize);

laypage.render({

elem: 'pageBtns',

count: data.length,

limit: pageSize,

curr: currentPage,

jump: function(obj, first) {

currentPage = obj.curr;

if (!first) {

// 显示当前页数据

// ...

}

}

});

});

</script>

上述代码中,通过layui的laypage组件来生成分页效果,其中elem属性指定分页容器的dom id,count属性指定总数据数,limit属性指定每页显示的数据量,curr属性指定当前页码,jump回调函数用于处理用户跳转页码的操作,在回调函数中,通过obj.curr获得用户跳转的页码,并根据该页码来更新数据,从而实现了一个借助于layui框架的分页效果。