当前位置: 首页 > news >正文

JS+H5美观的带搜索的博客文章列表(可搜索多个参数)

实现

  1. 美观的界面(电脑、手机端界面正常使用)
  2. 多参数搜索(文章标题,文章简介,文章发布时间等)
  3. 文章链接跳转

效果图

手机端

在这里插入图片描述

电脑端

在这里插入图片描述

搜索实现

搜索功能实现解释

  1. 定义文章数据:

    • 文章数据保存在一个 JavaScript 数组 articles 中。每篇文章包含以下信息:文章 ID、标题、描述、链接地址、阅读数量、点赞数、收藏数、评论数和发布时间。
  2. 搜索框和按钮:

    • 页面上有一个搜索框(<input> 元素)和一个搜索按钮(<button> 元素)。
    • 搜索按钮的 onclick 属性绑定了一个函数 searchArticles(),这个函数会在点击按钮时被调用。
  3. 搜索功能实现:

    • searchArticles() 函数首先获取用户在搜索框中输入的搜索查询(query),并将其转换为小写以便进行不区分大小写的搜索。
    • 然后,函数通过 Array.prototype.filter() 方法在 articles 数组中筛选出符合查询条件的文章。筛选条件是:文章的标题或描述中包含查询字符串。
    • 如果没有找到符合条件的文章,显示一个提示框 (alert('没有搜索到'))。
    • 如果找到了符合条件的文章,调用 displayArticles() 函数来更新页面显示内容。
  4. 更新显示内容:

    • displayArticles() 函数接收一个文章数组(articleList)作为参数。这个数组包含了需要显示的文章数据。
    • 函数首先清空页面中现有的文章内容(通过将 articles-container 元素的 innerHTML 设置为空)。
    • 然后,为每篇文章创建一个新的 <div> 元素,并根据文章数据设置其内容,包括标题、描述、阅读数量、点赞数、收藏数、评论数和发布时间。
    • 将新创建的文章元素添加到页面中,以显示筛选后的结果。
  5. 初始加载:

    • 当页面加载时,调用 displayArticles(articles) 来显示所有文章。这样用户在页面加载时可以看到所有可用的文章。

源代码

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>海鸥的博客文章</title><style>body {background-color: #f0f0f0;font-family: "Microsoft YaHei", sans-serif;margin: 0;padding: 0;}.header {background-color: #333;color: white;text-align: center;padding: 20px 0;font-weight: bold;font-size: 24px;}.search-container {display: flex;justify-content: center;margin: 20px 0;}.search-box {border: 1px solid #ddd;border-radius: 20px;padding: 10px;width: 300px;margin-right: 10px;}.search-button {background-color: #007bff;border: none;border-radius: 20px;color: white;padding: 10px 20px;box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);cursor: pointer;}.article {background-color: white;border-radius: 10px;box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);margin: 20px auto;padding: 20px;width: 80%;transition: border 0.3s;cursor: pointer;}.article:hover {border: 2px solid #007bff;}.article-title {font-weight: bold;text-decoration: none;color: black;}.article-title img {height: 20px;margin-left: 10px;vertical-align: middle;}.article-description {color: #555;}.article-meta {color: #888;font-size: 14px;margin-top: 10px;}.divider {border-top: 1px solid #ddd;margin: 10px 0;}</style>
</head>
<body><div class="header">海鸥的博客文章</div><div class="search-container"><input type="text" id="searchInput" class="search-box" placeholder="搜索文章..."><button class="search-button" onclick="searchArticles()">搜索</button></div><div id="articles-container"><!-- Articles will be dynamically inserted here --></div><script>const articles = [{ id: 1, title: "如何用Js存储cookies", description: "这篇文章讲述了如何使用JavaScript语言储存cookies信息", url: "1.html", reads: 113, likes: 50, favorites: 8, comments: 6, date: "2024年8月1日" },{ id: 2, title: "第二篇文章标题", description: "这篇文章的描述内容", url: "2.html", reads: 123, likes: 60, favorites: 10, comments: 7, date: "2024年8月2日" },{ id: 3, title: "第三篇文章标题", description: "这篇文章的描述内容", url: "3.html", reads: 130, likes: 70, favorites: 12, comments: 8, date: "2024年8月3日" }];function displayArticles(articleList) {const container = document.getElementById('articles-container');container.innerHTML = '';articleList.forEach(article => {const articleDiv = document.createElement('div');articleDiv.className = 'article';articleDiv.id = article.id;articleDiv.onclick = () => window.location.href = article.url;articleDiv.innerHTML = `<a href="${article.url}" class="article-title">${article.title} <img src="https://via.placeholder.com/20" alt="图标"></a><p class="article-description"><a href="${article.url}" style="color: inherit; text-decoration: none;">${article.description}</a></p><div class="divider"></div><p class="article-meta">${article.reads}人阅读 ${article.likes}人点赞 ${article.favorites}人收藏 ${article.comments}条评论</p><p class="article-meta">发布于${article.date}</p>`;container.appendChild(articleDiv);});}function searchArticles() {const query = document.getElementById('searchInput').value.toLowerCase();const results = articles.filter(article =>article.title.toLowerCase().includes(query) ||article.description.toLowerCase().includes(query));if (results.length === 0) {alert('没有搜索到');} else {displayArticles(results);}}// Display all articles initiallydisplayArticles(articles);</script>
</body>
</html>

送大家一段话:
笔走龙蛇,意境深远。言之有物,情真意切。
辞藻华丽,意蕴深厚。文思敏捷,才华横溢。
洞若观火,鞭辟入里。文采飞扬,笔力雄健。
行云流水,流畅自然。精辟入里,洞察秋毫。
妙语连珠,引人入胜。深入骨髓,发人深省。
豁然开朗,醍醐灌顶。言之凿凿,掷地金声。
言近旨远,韵味无穷。淋漓尽致,曲尽其妙。
独具匠心,匠心独运。笔底春风,笔下生花。
字字玑珠,句句珠玑。意味深长,耐人寻味。

人话

写作技巧高超,文章意境深远。内容真实感人,情感表达真诚。用词华丽而富有内涵,作者思维敏捷且才华出众。观察事物深刻透彻,分析问题直击要害。文笔生动活泼,才华横溢。文章如同行云流水般流畅自然。分析精辟,能够洞察细微之处。言语中充满智慧,让人读来兴趣盎然。剖析问题深入本质,能引发读者深思。给人以豁然开朗的感觉,像醍醐灌顶一般让人清醒。言辞确凿有力,话语坚定响亮。言简意赅却含义深远,令人回味无穷。表达淋漓尽致,把事情描绘得细致入微。构思独特巧妙,展现了作者的独特匠心。文笔优美,仿佛春风拂面,笔下的文字如同花朵盛开。每个字都精心雕琢,每一句话都充满力量。文章意味深长,值得反复品味。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据可视化(王者英雄数据分析)
  • 系统架构师(每日一练14)
  • 【LeetCode】108. 将有序数组转换为二叉搜索树
  • mysql数据库迁移
  • Face2V人脸向量开发包
  • 使用python爬取今日头条热搜
  • 使用EntityFramework8的学习和开发过程中一些经验
  • Webpack、Vite区别知多少?
  • Linux Ubuntu 20.04 netmap安装
  • OD C卷 - 中庸行者
  • 第128天:内网安全-横向移动IPCATSC 命令Impacket 套件CS 插件全自动
  • 代码随想录 day 30 贪心
  • RabbitMQ应用场景及特性
  • PointMC: Multi-instance Point Cloud Registration based on Maximal Cliques 论文解读
  • 经典算法KMP讲解,包含C++解法ACM模式
  • 2017届校招提前批面试回顾
  • Flex布局到底解决了什么问题
  • mysql 5.6 原生Online DDL解析
  • Terraform入门 - 1. 安装Terraform
  • 爬虫模拟登陆 SegmentFault
  • 前端代码风格自动化系列(二)之Commitlint
  • 设计模式 开闭原则
  • 一个完整Java Web项目背后的密码
  • 函数计算新功能-----支持C#函数
  • # Java NIO(一)FileChannel
  • #单片机(TB6600驱动42步进电机)
  • (2)空速传感器
  • (C#)获取字符编码的类
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (黑马点评)二、短信登录功能实现
  • (九十四)函数和二维数组
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (转)Android学习笔记 --- android任务栈和启动模式
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET Project Open Day(2011.11.13)
  • .net Signalr 使用笔记
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .net与java建立WebService再互相调用
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • @Autowired 与@Resource的区别
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @Resource和@Autowired的区别
  • [ C++ ] 类和对象( 下 )
  • [ NOI 2001 ] 食物链
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [Algorithm][综合训练][kotori和n皇后][取金币][矩阵转置]详细讲解
  • [Android]常见的数据传递方式
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [Avalon] Avalon中的Conditional Formatting.