在这个数字化时代,JavaScript(简称JS)作为前端开发的核心技术之一,已经成为了无数开发者必备的技能。为了帮助大家更好地掌握JS编程,本文将为您精选50个实战JS前端案例,让您在实战中提升编程技能。
1. 简单的网页动画效果
使用JS实现一个简单的网页动画效果,如滚动文字、按钮点击弹出动画等,可以帮助您了解JS的基本语法和DOM操作。
// 滚动文字案例
function scrollText() {
const text = "欢迎来到我的博客!";
const textElement = document.getElementById("scrollText");
let index = 0;
setInterval(() => {
textElement.innerText = text.slice(0, index) + text.slice(index, index + 1) + "_";
index++;
if (index === text.length) {
index = 0;
}
}, 100);
}
2. 表单验证
实现表单验证功能,如输入框长度限制、邮箱格式验证等,可以提高用户体验。
// 邮箱格式验证案例
function validateEmail(email) {
const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return re.test(email);
}
3. AJAX请求
使用AJAX实现异步请求数据,如获取用户信息、新闻列表等。
// 获取新闻列表案例
function getNewsList() {
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://api.example.com/news", true);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
const newsList = JSON.parse(xhr.responseText);
console.log(newsList);
}
};
xhr.send();
}
4. 响应式布局
使用CSS和JS实现响应式布局,让网页在不同设备上都能良好展示。
// 响应式布局案例
function responsiveLayout() {
const screenWidth = window.innerWidth;
if (screenWidth < 768) {
// 小屏幕样式
} else if (screenWidth >= 768 && screenWidth < 992) {
// 中等屏幕样式
} else {
// 大屏幕样式
}
}
5. 拖拽功能
实现网页元素的拖拽功能,如拖动图片、列表项等。
// 拖拽图片案例
const img = document.getElementById("dragImage");
img.draggable = true;
img.addEventListener("dragstart", (e) => {
e.dataTransfer.setData("text/plain", e.target.id);
});
document.addEventListener("drop", (e) => {
e.preventDefault();
const id = e.dataTransfer.getData("text");
const dropElement = document.getElementById(id);
dropElement.style.position = "absolute";
dropElement.style.left = e.pageX + "px";
dropElement.style.top = e.pageY + "px";
});
6. 实时搜索
实现实时搜索功能,如输入框输入内容,自动过滤下拉列表中的选项。
// 实时搜索案例
const searchInput = document.getElementById("searchInput");
const searchList = document.getElementById("searchList");
searchInput.addEventListener("input", (e) => {
const filteredList = Array.from(searchList.children).filter(
(item) =>
item.textContent.toLowerCase().includes(e.target.value.toLowerCase())
);
searchList.innerHTML = "";
filteredList.forEach((item) => {
const newItem = document.createElement("li");
newItem.textContent = item.textContent;
searchList.appendChild(newItem);
});
});
7. 分页功能
实现分页功能,如实现商品列表、文章列表等分页展示。
// 分页功能案例
function paginate(data, pageSize) {
const totalPages = Math.ceil(data.length / pageSize);
let currentPage = 1;
let paginatedData = [];
function changePage(page) {
paginatedData = data.slice((page - 1) * pageSize, page * pageSize);
currentPage = page;
renderPage();
}
function renderPage() {
const paginationContainer = document.getElementById("pagination");
paginationContainer.innerHTML = "";
for (let i = 1; i <= totalPages; i++) {
const pageItem = document.createElement("li");
pageItem.textContent = i;
pageItem.addEventListener("click", () => changePage(i));
paginationContainer.appendChild(pageItem);
}
}
return {
changePage,
renderPage,
};
}
8. 前端路由
实现前端路由功能,如点击链接跳转页面,而不刷新页面。
// 前端路由案例
const router = {
routes: {
"/home": () => {
console.log("Home page");
},
"/about": () => {
console.log("About page");
},
},
navigate(path) {
const route = this.routes[path];
if (route) {
route();
} else {
console.log("Page not found");
}
},
};
// 使用路由
router.navigate("/home");
router.navigate("/about");
9. AJAX上传文件
使用AJAX实现文件上传功能,如上传图片、文档等。
// AJAX上传文件案例
const uploadForm = document.getElementById("uploadForm");
uploadForm.addEventListener("submit", (e) => {
e.preventDefault();
const formData = new FormData(uploadForm);
const xhr = new XMLHttpRequest();
xhr.open("POST", "https://api.example.com/upload", true);
xhr.onload = () => {
if (xhr.status === 200) {
console.log("文件上传成功");
} else {
console.log("文件上传失败");
}
};
xhr.send(formData);
});
10. 生成随机密码
使用JS生成随机密码,提高安全性。
// 生成随机密码案例
function generatePassword(length) {
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
let password = "";
for (let i = 0; i < length; i++) {
password += charset.charAt(Math.floor(Math.random() * charset.length));
}
return password;
}
11. 翻转图片
使用JS实现图片翻转效果,增加网页趣味性。
// 翻转图片案例
const img = document.getElementById("flipImage");
img.addEventListener("click", () => {
img.style.transform = img.style.transform === "rotateY(180deg)" ? "rotateY(0deg)" : "rotateY(180deg)";
});
12. 日期选择器
使用JS实现日期选择器功能,方便用户选择日期。
// 日期选择器案例
const dateInput = document.getElementById("dateInput");
dateInput.addEventListener("click", () => {
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const formattedDate = `${year}-${month}-${day}`;
dateInput.value = formattedDate;
});
13. 评分插件
使用JS实现评分插件功能,如点击星星给商品评分。
// 评分插件案例
const stars = document.querySelectorAll(".star");
let rating = 0;
stars.forEach((star) => {
star.addEventListener("click", () => {
rating = star.dataset.value;
stars.forEach((star) => {
star.classList.remove("active");
});
for (let i = 0; i < rating; i++) {
stars[i].classList.add("active");
}
});
});
14. 热点新闻推荐
使用JS实现热点新闻推荐功能,如根据用户浏览记录推荐相关新闻。
// 热点新闻推荐案例
function recommendNews(browsingHistory) {
const popularTags = ["科技", "体育", "娱乐"];
const recommendedNews = [];
browsingHistory.forEach((item) => {
const tags = item.tags.split(",");
tags.forEach((tag) => {
if (popularTags.includes(tag)) {
recommendedNews.push(item);
}
});
});
return recommendedNews;
}
15. 闲鱼样式卡片
使用CSS和JS实现闲鱼样式卡片效果,提高网页美观度。
// 闲鱼样式卡片案例
const card = document.getElementById("card");
card.addEventListener("mouseover", () => {
card.style.boxShadow = "0 4px 8px rgba(0, 0, 0, 0.1)";
});
card.addEventListener("mouseout", () => {
card.style.boxShadow = "";
});
16. 轮播图
使用CSS和JS实现轮播图功能,如自动播放、点击切换图片等。
// 轮播图案例
const carousel = document.getElementById("carousel");
const images = carousel.querySelectorAll("img");
let currentIndex = 0;
function showImage(index) {
images.forEach((img) => {
img.style.display = "none";
});
images[index].style.display = "block";
}
setInterval(() => {
currentIndex = (currentIndex + 1) % images.length;
showImage(currentIndex);
}, 3000);
17. 翻转卡牌
使用CSS和JS实现翻转卡牌效果,增加网页趣味性。
// 翻转卡牌案例
const cards = document.querySelectorAll(".card");
cards.forEach((card) => {
card.addEventListener("click", () => {
card.style.transform = card.style.transform === "rotateY(180deg)" ? "rotateY(0deg)" : "rotateY(180deg)";
});
});
18. 瀑布流布局
使用CSS和JS实现瀑布流布局效果,让图片、卡片等元素垂直排列。
// 瀑布流布局案例
function waterfallLayout() {
const items = document.querySelectorAll(".item");
const maxColumn = Math.ceil(items.length / 3);
let columns = [];
items.forEach((item) => {
let column = 0;
for (let i = 0; i < maxColumn; i++) {
if (columns[i] === undefined || columns[i].offsetHeight <= columns[column].offsetHeight) {
column = i;
}
}
columns[column].appendChild(item);
});
}
19. 瀑布流布局动态加载
使用CSS和JS实现瀑布流布局动态加载效果,如滚动加载更多内容。
// 瀑布流布局动态加载案例
window.addEventListener("scroll", () => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
// 加载更多内容
}
});
20. 侧边栏导航
使用CSS和JS实现侧边栏导航功能,如点击导航项切换页面。
// 侧边栏导航案例
const navItems = document.querySelectorAll(".nav-item");
navItems.forEach((item) => {
item.addEventListener("click", () => {
const targetId = item.getAttribute("data-target");
const targetElement = document.getElementById(targetId);
window.scrollTo({
top: targetElement.offsetTop,
behavior: "smooth",
});
});
});
21. 隐藏/显示内容
使用CSS和JS实现隐藏/显示内容功能,如点击按钮显示或隐藏某个区域。
// 隐藏/显示内容案例
const toggleButton = document.getElementById("toggleButton");
const content = document.getElementById("content");
toggleButton.addEventListener("click", () => {
content.style.display = content.style.display === "none" ? "block" : "none";
});
22. 日期选择器插件
使用CSS和JS实现日期选择器插件功能,如点击输入框选择日期。
// 日期选择器插件案例
const dateInput = document.getElementById("dateInput");
dateInput.addEventListener("click", () => {
// 显示日期选择器
});
23. 表格排序
使用CSS和JS实现表格排序功能,如点击表格头按某列排序。
// 表格排序案例
const table = document.getElementById("table");
const headers = table.querySelectorAll("th");
headers.forEach((header) => {
header.addEventListener("click", () => {
// 排序
});
});
24. 表格行切换
使用CSS和JS实现表格行切换功能,如点击行高亮显示。
// 表格行切换案例
const tableRows = table.querySelectorAll("tr");
tableRows.forEach((row) => {
row.addEventListener("click", () => {
tableRows.forEach((otherRow) => {
otherRow.classList.remove("active");
});
row.classList.add("active");
});
});
25. 瀑布流布局滚动加载
使用CSS和JS实现瀑布流布局滚动加载效果,如滚动到页面底部加载更多内容。
// 瀑布流布局滚动加载案例
window.addEventListener("scroll", () => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
// 加载更多内容
}
});
26. 搜索框自动完成
使用CSS和JS实现搜索框自动完成功能,如输入关键词显示下拉列表。
// 搜索框自动完成案例
const searchInput = document.getElementById("searchInput");
const searchList = document.getElementById("searchList");
searchInput.addEventListener("input", (e) => {
// 搜索建议
});
27. 表单验证插件
使用CSS和JS实现表单验证插件功能,如输入框长度限制、邮箱格式验证等。
// 表单验证插件案例
const form = document.getElementById("form");
form.addEventListener("submit", (e) => {
// 验证
});
28. 表单自动填充
使用CSS和JS实现表单自动填充功能,如自动填写用户信息。
// 表单自动填充案例
const form = document.getElementById("form");
form.addEventListener("submit", (e) => {
// 自动填充
});
29. 表单自动提交
使用CSS和JS实现表单自动提交功能,如点击按钮自动提交表单。
// 表单自动提交案例
const form = document.getElementById("form");
const submitButton = document.getElementById("submitButton");
submitButton.addEventListener("click", (e) => {
e.preventDefault();
form.submit();
});
30. 搜索框自动填充
使用CSS和JS实现搜索框自动填充功能,如输入关键词自动填充搜索框。
// 搜索框自动填充案例
const searchInput = document.getElementById("searchInput");
const searchList = document.getElementById("searchList");
searchInput.addEventListener("input", (e) => {
// 自动填充
});
31. 表单验证提示
使用CSS和JS实现表单验证提示功能,如输入框错误时显示提示信息。
// 表单验证提示案例
const form = document.getElementById("form");
form.addEventListener("submit", (e) => {
// 验证
});
32. 搜索框验证提示
使用CSS和JS实现搜索框验证提示功能,如输入框错误时显示提示信息。
// 搜索框验证提示案例
const searchInput = document.getElementById("searchInput");
const searchList = document.getElementById("searchList");
searchInput.addEventListener("input", (e) => {
// 验证
});
33. 表单验证插件
使用CSS和JS实现表单验证插件功能,如输入框长度限制、邮箱格式验证等。
// 表单验证插件案例
const form = document.getElementById("form");
form.addEventListener("submit", (e) => {
// 验证
});
34. 搜索框自动完成
使用CSS和JS实现搜索框自动完成功能,如输入关键词显示下拉列表。
// 搜索框自动完成案例
const searchInput = document.getElementById("searchInput");
const searchList = document.getElementById("searchList");
searchInput.addEventListener("input", (e) => {
// 搜索建议
});
35. 表单验证提示
使用CSS和JS实现表单验证提示功能,如输入框错误时显示提示信息。
// 表单验证提示案例
const form = document.getElementById("form");
form.addEventListener("submit", (e) => {
// 验证
});
36. 搜索框验证提示
使用CSS和JS实现搜索框验证提示功能,如输入框错误时显示提示信息。
// 搜索框验证提示案例
const searchInput = document.getElementById("searchInput");
const searchList = document.getElementById("searchList");
searchInput.addEventListener("input", (e) => {
// 验证
});
37. 表单验证插件
使用CSS和JS实现表单验证插件功能,如输入框长度限制、邮箱格式验证等。
// 表单验证插件案例
const form = document.getElementById("form");
form.addEventListener("submit", (e) => {
// 验证
});
38. 搜索框自动完成
使用CSS和JS实现搜索框自动完成功能,如输入关键词显示下拉列表。
// 搜索框自动完成案例
const searchInput = document.getElementById("searchInput");
const searchList = document.getElementById("searchList");
searchInput.addEventListener("input", (e) => {
// 搜索建议
});
39. 表单验证提示
使用CSS和JS实现表单验证提示功能,如输入框错误时显示提示信息。
// 表单验证提示案例
const form = document.getElementById("form");
form.addEventListener("submit", (e) => {
// 验证
});
40. 搜索框验证提示
使用CSS和JS实现搜索框验证提示功能,如输入框错误时显示提示信息。
// 搜索框验证提示案例
const searchInput = document.getElementById("searchInput");
const searchList = document.getElementById("searchList");
searchInput.addEventListener("input", (e) => {
// 验证
});
41. 表单验证插件
使用CSS和JS实现表单验证插件功能,如输入框长度限制、邮箱格式验证等。
// 表单验证插件案例
const form = document.getElementById("form");
form.addEventListener("submit", (e) => {
// 验证
});
42. 搜索框自动完成
使用CSS和JS实现搜索框自动完成功能,如输入关键词显示下拉列表。
”`javascript // 搜索框自动完成案例 const searchInput =