当前位置:首页 > 文章列表 > 文章 > 前端 > HTML视频优化技巧全解析

HTML视频优化技巧全解析

2025-10-05 13:58:04 0浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个文章开发实战,手把手教大家学习《HTML视频SEO优化技巧分享》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

视频SEO的核心在于通过HTML标签、结构化数据和高质量内容传递上下文,使搜索引擎能有效识别和索引视频。首先使用标准

HTML视频SEO怎么优化_视频内容搜索引擎优化

视频内容要被搜索引擎有效识别和排名,核心在于通过HTML标签、结构化数据以及高质量的内容信号,将视频的元数据和上下文信息清晰地传递给搜索引擎。这不仅仅是上传一个视频那么简单,更是一套系统性的优化策略,让视频不再是页面上的“黑盒子”,而是可被理解、索引和展示的丰富媒体资源。

解决方案

优化HTML视频的SEO,我们首先要从视频的承载方式——HTML本身入手,再结合一系列辅助信号。最直接的方法是确保你的视频嵌入方式对搜索引擎友好,并提供足够多的上下文信息。

这包括:

  1. 使用标准的标签: 尽管许多CMS或视频平台会提供iframe嵌入代码,但如果条件允许,直接使用HTML5的标签,并填充其属性,是最佳实践。例如:

    这里,poster属性至关重要,它提供了一个视频的缩略图,搜索引擎可以索引这张图片,并在搜索结果中展示。source标签则提供了视频文件的路径和类型。

  2. 提供清晰的标题和描述: 在视频周围的HTML文本中,包含一个描述性的标题(

    )和一段详细的文字描述。这段描述应该包含视频的关键关键词,并准确概括视频内容。这就像给一篇文章写标题和摘要一样,视频也需要。

  3. 利用Schema Markup(结构化数据): 这是让搜索引擎“理解”视频内容的关键。使用VideoObject类型的结构化数据,可以明确告诉搜索引擎视频的标题、描述、缩略图URL、上传日期、时长等信息。这对于在Google等搜索引擎中获得富媒体结果(Rich Snippets)至关重要。

    这段JSON-LD代码可以放在页面的中。

  4. 提供视频转录文本(Transcript): 这是一个经常被忽视但极其有效的优化手段。将视频中的对话和旁白转换成文字,作为视频内容的一部分呈现在页面上。搜索引擎无法“观看”视频,但它们可以“阅读”文本。转录文本提供了大量的关键词和上下文信息,极大地增强了视频的可索引性。

  5. 创建视频站点地图(Video Sitemap): 类似于常规的XML站点地图,视频站点地图专门列出你网站上的所有视频内容,并提供每个视频的元数据。这能帮助搜索引擎更全面、更高效地发现和索引你的视频。

  6. 优化视频文件本身: 确保视频文件大小适中,加载速度快,避免用户等待过久而跳出。选择合适的视频格式,并考虑响应式设计,让视频在不同设备上都能良好播放。

搜索引擎如何“看懂”视频内容?

这个问题其实挺有意思的,因为它揭示了搜索引擎在处理多媒体内容时的局限性与进步。从技术角度讲,搜索引擎本身并不能像人一样“看”或“听”一个视频。它们理解视频,主要依赖于我们提供的各种“线索”和“上下文”。

最初,视频对搜索引擎来说,可能就是页面上的一个二进制文件,或者是一个指向外部平台的链接(比如YouTube的iframe)。那时候,搜索引擎能做的,更多是根据视频周围的文字内容来猜测视频讲了什么。这就像你拿到一个包裹,不知道里面是什么,只能通过包裹上的标签、寄件人信息来推断。

但现在,情况复杂多了,也智能多了:

  • 元数据解析: 这是最基础的。搜索引擎会抓取视频文件或嵌入代码中的HTML属性(比如标签的postersrc),以及页面标题、描述、URL等。这些都是直接的信号。
  • 结构化数据(Schema Markup): 这是个大杀器。通过VideoObject这种标准化格式,我们能非常明确地告诉搜索引擎视频的名称、描述、时长、缩略图、上传日期、内容URL等。这就像给包裹贴上了详细的物品清单和说明书,搜索引擎一目了然。
  • 文本内容分析: 视频所在页面的所有文本内容,包括视频标题、描述、正文、评论,尤其是视频转录文本,都是搜索引擎理解视频主题的关键。转录文本几乎是视频内容的“文字版”,提供了最直接、最丰富的关键词和上下文。
  • 图像识别和语音识别(AI): 现代搜索引擎,尤其是像Google这样的巨头,已经开始利用AI技术来分析视频的缩略图、甚至视频帧中的图像内容,以及视频中的语音信息。虽然这块技术还在发展中,但它意味着搜索引擎未来能更深入地理解视频的视觉和听觉内容。比如,AI可能会识别出视频中出现的特定物体、人物或场景,甚至分析语音内容来提取主题。
  • 用户行为信号: 视频的播放量、观看时长、点赞、评论、分享等用户互动数据,也会被搜索引擎作为衡量视频质量和相关性的重要信号。如果一个视频很多人看,看完率高,说明它可能内容不错。

所以,搜索引擎“看懂”视频,其实是一个多维度、综合性的过程,它结合了传统的信息抓取、语义分析,以及越来越先进的AI技术。我们优化视频SEO,就是尽可能多地提供这些“线索”,让搜索引擎能更准确、更全面地理解我们的视频。

除了HTML,还有哪些因素影响视频的SEO表现?

光是搞定HTML标签和结构化数据,这只是视频SEO的“骨架”。要让视频真正活起来,并在搜索结果中脱颖而出,还需要考虑更多层面的因素,有些甚至超出了我们对传统SEO的认知。

  1. 视频内容本身的质量与价值: 这点再怎么强调都不为过。一个标题、描述、结构化数据都做得完美的视频,如果内容本身枯燥乏味、信息量低,或者与标题严重不符,用户看完就跳出,甚至直接关闭,那所有的技术优化都可能白费。搜索引擎越来越重视用户体验,低质量的内容会收到负面信号。视频要解决用户痛点、提供独特视角、制作精良、信息准确,这是根本。

  2. 用户参与度(Engagement): 这包括观看时长、观看完成率、点赞、评论、分享、订阅等。高用户参与度是搜索引擎判断视频内容受欢迎程度和相关性的重要指标。如果用户在一个视频上停留时间长,说明视频内容吸引人。YouTube等平台尤其看重这些指标,它们会直接影响视频的推荐和排名。所以,要思考如何制作引人入胜的开场、保持节奏、鼓励互动。

  3. 视频托管平台与加载速度: 视频文件通常较大,托管平台的选择和加载速度至关重要。如果视频托管在自己的服务器上,需要确保服务器带宽充足,并使用CDN(内容分发网络)来加速全球用户的访问。如果使用第三方平台(如YouTube、Vimeo),它们的CDN通常很强大,但也要注意嵌入方式是否会拖慢页面加载速度。页面加载速度是整体SEO的一个重要组成部分。

  4. 移动设备友好性: 如今大部分用户通过移动设备观看视频。确保你的视频播放器是响应式的,能在各种屏幕尺寸上自适应,并且在移动网络环境下也能流畅播放。这包括优化视频编码,提供不同分辨率的视频源。

  5. 推广与外链建设: 像对待任何其他内容一样,视频也需要推广。在社交媒体上分享,在相关博客或网站上获得嵌入和链接,这些都能增加视频的曝光度,带来流量,并建立外部链接,提升视频页面的权威性。一个视频被广泛引用和分享,本身就是一种强大的排名信号。

  6. 上下文相关性与用户意图匹配: 视频所在的页面内容、视频周围的文本、甚至整个网站的主题,都应该与视频内容高度相关。搜索引擎会综合判断视频是否能很好地满足用户的搜索意图。比如,用户搜索“如何制作咖啡”,你的视频就应该直接展示制作咖啡的步骤,而不是泛泛而谈咖啡文化。

  7. 可访问性(Accessibility): 除了转录文本,还可以考虑提供字幕(Captions)和音频描述。这不仅能帮助听障或视障人士,也能让搜索引擎更好地理解视频内容。字幕文件(如SRT格式)本身就可以被索引。

这些因素相互作用,共同决定了视频在搜索引擎中的表现。仅仅优化HTML只是万里长征第一步,更重要的是围绕视频内容本身,构建一个用户友好、搜索引擎友好的生态系统。

如何为视频内容创建有效的Schema Markup?

创建有效的Schema Markup是视频SEO中一个非常关键的环节,它直接告诉搜索引擎视频的详细信息,从而提高视频在搜索结果中以富媒体形式展现的机会。这里我们主要聚焦于VideoObject类型。

1. 基础结构: 首先,你需要一个

2. 核心属性(必填或强烈推荐):

  • "@context": "http://schema.org":指定使用Schema.org词汇表。
  • "@type": "VideoObject":明确声明这是关于一个视频的结构化数据。
  • "name": "你的视频标题":视频的标题,要准确、描述性强,且包含关键词。这通常与页面上的

    </code>标签内容一致。</li><li><code>"description": "视频的详细描述"</code>:对视频内容的详细总结,同样要包含关键词,并吸引用户点击。这可以比页面上的视频描述更精炼,但信息要完整。</li><li><code>"thumbnailUrl": "https://www.yourdomain.com/path/to/thumbnail.jpg"</code>:视频的缩略图URL。这张图片应该高质量、有吸引力,且能准确代表视频内容。Google建议图片至少16:9的宽高比,且像素宽度不低于1920px。</li><li><code>"uploadDate": "YYYY-MM-DDTHH:MM:SS+HH:MM"</code>:视频的上传日期,遵循ISO 8601格式。例如:"2023-10-27T10:00:00+08:00"。</li><li><code>"duration": "PT#M#S"</code>:视频的时长,遵循ISO 8601格式。例如,5分钟30秒表示为"PT5M30S";1小时20分5秒表示为"PT1H20M5S"。</li><li><code>"contentUrl": "https://www.yourdomain.com/path/to/your-video.mp4"</code>:视频文件的直接URL。这是实际的视频文件地址,搜索引擎可能会尝试抓取它。</li><li><code>"embedUrl": "https://www.yourdomain.com/embed/your-video-id"</code>:视频播放器的嵌入URL。如果你的视频是通过iframe或其他嵌入代码播放的,这里填写嵌入代码中<code>src</code>属性的URL。</li></ul><p><strong>3. 推荐但非强制属性:</strong></p><ul><li><code>"publisher"</code>:视频的发布者信息。可以是一个<code>Organization</code>(组织)或<code>Person</code>(个人)。<pre class="brush:language-json;toolbar:false;">"publisher": { "@type": "Organization", "name": "你的公司或网站名称", "logo": { "@type": "ImageObject", "url": "https://www.yourdomain.com/images/logo.png" } }</pre></li><li><code>"interactionCount": "12345"</code>:视频的观看次数。虽然不是必填,但可以提供给搜索引擎一个受欢迎程度的信号。</li><li><code>"keywords": "关键词1, 关键词2, 关键词3"</code>:与视频相关的关键词列表。</li><li><code>"expires": "YYYY-MM-DDTHH:MM:SS+HH:MM"</code>:如果视频内容有过期时间,可以在此指定。过期后,视频可能不再显示在搜索结果中。</li></ul><p><strong>4. 完整示例:</strong></p><pre class="brush:language-json;toolbar:false;"><script type="application/ld+json"> { "@context": "http://schema.org", "@type": "VideoObject", "name": "如何用Python进行数据分析入门教程", "description": "本视频教程为Python数据分析新手提供了一系列基础指导,包括Pandas和NumPy库的使用,数据清洗与可视化。", "thumbnailUrl": "https://www.example.com/images/python-data-analysis-thumb.jpg", "uploadDate": "2023-10-26T14:30:00+08:00", "duration": "PT15M45S", "contentUrl": "https://www.example.com/videos/python-data-analysis.mp4", "embedUrl": "https://www.example.com/embed/video-id-123", "interactionCount": "25890", "publisher": { "@type": "Organization", "name": "TechLearn Academy", "logo": { "@type": "ImageObject", "url": "https://www.example.com/images/techlearn-logo.png", "width": "600", "height": "60" } }, "keywords": "Python, 数据分析, Pandas, NumPy, 数据可视化, 编程入门" } </script></pre><p><strong>5. 验证:</strong> 完成Schema Markup后,务必使用Google的富媒体搜索结果测试工具(Rich Results Test)或Schema Markup验证器来检查代码是否有错误。这能确保你的结构化数据被搜索引擎正确解析。如果出现警告或错误,需要及时修正。</p><p>创建有效的Schema Markup,不仅能提升视频在搜索结果中的可见性,还能帮助搜索引擎更准确地理解你的内容,从而将其展示给最相关的用户。</p><p>以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。</p> </div> <div class="labsList"> <a href="javascript:;" title="搜索引擎">搜索引擎</a> <a href="javascript:;" title="HTML标签">HTML标签</a> <a href="javascript:;" title="HTML视频SEO">HTML视频SEO</a> <a href="javascript:;" title="SchemaMarkup">SchemaMarkup</a> <a href="javascript:;" title="视频转录文本">视频转录文本</a> </div> <div class="cateBox"> <div class="cateItem"> <a href="/article/335191.html" title="快手极速版邀请码获取方法" class="img_box"> <img src="/uploads/20251005/175964386968e208dd1d89c.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="快手极速版邀请码获取方法">快手极速版邀请码获取方法 </a> <dl> <dt class="lineOverflow"><a href="/article/335191.html" title="快手极速版邀请码获取方法" class="aBlack">上一篇<i></i></a></dt> <dd class="lineTwoOverflow">快手极速版邀请码获取方法</dd> </dl> </div> <div class="cateItem"> <a href="/article/335193.html" title="JS版本管理配置详解" class="img_box"> <img src="/uploads/20251005/175964397568e2094768b7d.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="JS版本管理配置详解"> </a> <dl> <dt class="lineOverflow"><a href="/article/335193.html" class="aBlack" title="JS版本管理配置详解">下一篇<i></i></a></dt> <dd class="lineTwoOverflow">JS版本管理配置详解</dd> </dl> </div> </div> </div> </div> <div class="leftContBox pt0"> <div class="pdl20"> <div class="contTit"> <a href="/articlelist.html" class="more" title="查看更多">查看更多<i class="iconfont"></i></a> <div class="tit">最新文章</div> </div> </div> <ul class="newArticleList"> <li> <div class="contBox"> <a href="/article/620069.html" class="img_box" title="前端静态资源上云部署选型:对象存储、CDN 和容器服务怎么选"> <img src="/uploads/20260627/1782572123-frontend-static-cache-architecture.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端静态资源上云部署选型:对象存储、CDN 和容器服务怎么选"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  3小时前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/652_new_0_1.html" class="aLightGray" title="静态资源">静态资源</a> · <a href="/articletag/5322_new_0_1.html" class="aLightGray" title="cdn">cdn</a> · <a href="/articletag/40011_new_0_1.html" class="aLightGray" title="云部署">云部署</a> · <a href="javascript:;" class="aLightGray" title="对象存储">对象存储</a> <a href="javascript:;" class="aLightGray" title="静态资源">静态资源</a> <a href="javascript:;" class="aLightGray" title="缓存策略">缓存策略</a> <a href="javascript:;" class="aLightGray" title="cdn">cdn</a> <a href="javascript:;" class="aLightGray" title="前端部署">前端部署</a> <a href="javascript:;" class="aLightGray" title="容器服务">容器服务</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/620069.html" class="aBlack" target="_blank" title="前端静态资源上云部署选型:对象存储、CDN 和容器服务怎么选">前端静态资源上云部署选型:对象存储、CDN 和容器服务怎么选</a> </dt> <dd class="cont2"> <span><i class="view"></i>433浏览</span> <span class="collectBtn user_collection" data-id="620069" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/620045.html" class="img_box" title="前端表单重复提交防护工作流:从按钮状态到请求取消和幂等键"> <img src="/uploads/20260622/1782110788-frontend-idempotent-key-flow.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端表单重复提交防护工作流:从按钮状态到请求取消和幂等键"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  5天前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/39982_new_0_1.html" class="aLightGray" title="接口联调">接口联调</a> · <a href="/articletag/39989_new_0_1.html" class="aLightGray" title="表单交互">表单交互</a> · <a href="/articletag/39990_new_0_1.html" class="aLightGray" title="重复提交">重复提交</a> · <a href="/articletag/39991_new_0_1.html" class="aLightGray" title="用户体验">用户体验</a> · <a href="javascript:;" class="aLightGray" title="前端">前端</a> <a href="javascript:;" class="aLightGray" title="表单提交">表单提交</a> <a href="javascript:;" class="aLightGray" title="重复请求">重复请求</a> <a href="javascript:;" class="aLightGray" title="AbortController">AbortController</a> <a href="javascript:;" class="aLightGray" title="幂等键">幂等键</a> <a href="javascript:;" class="aLightGray" title="按钮禁用">按钮禁用</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/620045.html" class="aBlack" target="_blank" title="前端表单重复提交防护工作流:从按钮状态到请求取消和幂等键">前端表单重复提交防护工作流:从按钮状态到请求取消和幂等键</a> </dt> <dd class="cont2"> <span><i class="view"></i>374浏览</span> <span class="collectBtn user_collection" data-id="620045" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/620039.html" class="img_box" title="前端 CORS 预检失败排查流程:从请求头到网关响应"> <img src="/uploads/20260618/1781767364-frontend-cors-flow.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端 CORS 预检失败排查流程:从请求头到网关响应"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1星期前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/4720_new_0_1.html" class="aLightGray" title="cors">cors</a> · <a href="/articletag/39980_new_0_1.html" class="aLightGray" title="跨域排查">跨域排查</a> · <a href="/articletag/39981_new_0_1.html" class="aLightGray" title="浏览器网络">浏览器网络</a> · <a href="/articletag/39982_new_0_1.html" class="aLightGray" title="接口联调">接口联调</a> · <a href="javascript:;" class="aLightGray" title="前端">前端</a> <a href="javascript:;" class="aLightGray" title="cors">cors</a> <a href="javascript:;" class="aLightGray" title="请求头">请求头</a> <a href="javascript:;" class="aLightGray" title="跨域">跨域</a> <a href="javascript:;" class="aLightGray" title="预检请求">预检请求</a> <a href="javascript:;" class="aLightGray" title="Options">Options</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/620039.html" class="aBlack" target="_blank" title="前端 CORS 预检失败排查流程:从请求头到网关响应">前端 CORS 预检失败排查流程:从请求头到网关响应</a> </dt> <dd class="cont2"> <span><i class="view"></i>422浏览</span> <span class="collectBtn user_collection" data-id="620039" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/620035.html" class="img_box" title="前端 position sticky 不生效排查:从滚动容器到 overflow 限制"> <img src="/uploads/20260618/1781761300-frontend-sticky-check-flow.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端 position sticky 不生效排查:从滚动容器到 overflow 限制"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1星期前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/4729_new_0_1.html" class="aLightGray" title="css">css</a> · <a href="/articletag/9935_new_0_1.html" class="aLightGray" title="sticky">sticky</a> · <a href="/articletag/39972_new_0_1.html" class="aLightGray" title="布局排查">布局排查</a> · <a href="/articletag/39973_new_0_1.html" class="aLightGray" title="滚动容器">滚动容器</a> · <a href="javascript:;" class="aLightGray" title="CSS">CSS</a> <a href="javascript:;" class="aLightGray" title="前端">前端</a> <a href="javascript:;" class="aLightGray" title="Overflow">Overflow</a> <a href="javascript:;" class="aLightGray" title="position sticky">position sticky</a> <a href="javascript:;" class="aLightGray" title="滚动容器">滚动容器</a> <a href="javascript:;" class="aLightGray" title="吸顶失效">吸顶失效</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/620035.html" class="aBlack" target="_blank" title="前端 position sticky 不生效排查:从滚动容器到 overflow 限制">前端 position sticky 不生效排查:从滚动容器到 overflow 限制</a> </dt> <dd class="cont2"> <span><i class="view"></i>449浏览</span> <span class="collectBtn user_collection" data-id="620035" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/620015.html" class="img_box" title="前端图片懒加载实战:首屏 LCP 与滚动加载完整流程"> <img src="/uploads/20260617/1781673768-frontend-image-lazyload-flow.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端图片懒加载实战:首屏 LCP 与滚动加载完整流程"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1星期前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/729_new_0_1.html" class="aLightGray" title="性能优化">性能优化</a> · <a href="/articletag/39948_new_0_1.html" class="aLightGray" title="图片加载">图片加载</a> · <a href="javascript:;" class="aLightGray" title="前端">前端</a> <a href="javascript:;" class="aLightGray" title="性能优化">性能优化</a> <a href="javascript:;" class="aLightGray" title="图片懒加载">图片懒加载</a> <a href="javascript:;" class="aLightGray" title="IntersectionObserver">IntersectionObserver</a> <a href="javascript:;" class="aLightGray" title="LCP">LCP</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/620015.html" class="aBlack" target="_blank" title="前端图片懒加载实战:首屏 LCP 与滚动加载完整流程">前端图片懒加载实战:首屏 LCP 与滚动加载完整流程</a> </dt> <dd class="cont2"> <span><i class="view"></i>105浏览</span> <span class="collectBtn user_collection" data-id="620015" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/620013.html" class="img_box" title="前端表单联动校验失效排查:旧状态、重复提交和提交锁"> <img src="/uploads/20260617/1781671884-frontend-form-bug-flow.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端表单联动校验失效排查:旧状态、重复提交和提交锁"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1星期前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/729_new_0_1.html" class="aLightGray" title="性能优化">性能优化</a> · <a href="/articletag/39947_new_0_1.html" class="aLightGray" title="表单校验">表单校验</a> · <a href="javascript:;" class="aLightGray" title="JavaScript">JavaScript</a> <a href="javascript:;" class="aLightGray" title="前端">前端</a> <a href="javascript:;" class="aLightGray" title="表单校验">表单校验</a> <a href="javascript:;" class="aLightGray" title="重复提交">重复提交</a> <a href="javascript:;" class="aLightGray" title="提交锁">提交锁</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/620013.html" class="aBlack" target="_blank" title="前端表单联动校验失效排查:旧状态、重复提交和提交锁">前端表单联动校验失效排查:旧状态、重复提交和提交锁</a> </dt> <dd class="cont2"> <span><i class="view"></i>285浏览</span> <span class="collectBtn user_collection" data-id="620013" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/620012.html" class="img_box" title="前端长列表虚拟滚动实战:从可视区计算到滚动流畅"> <img src="/uploads/20260617/1781670928-frontend-virtual-list-before-after.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端长列表虚拟滚动实战:从可视区计算到滚动流畅"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1星期前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/729_new_0_1.html" class="aLightGray" title="性能优化">性能优化</a> · <a href="/articletag/39783_new_0_1.html" class="aLightGray" title="虚拟列表">虚拟列表</a> · <a href="javascript:;" class="aLightGray" title="JavaScript">JavaScript</a> <a href="javascript:;" class="aLightGray" title="前端">前端</a> <a href="javascript:;" class="aLightGray" title="性能优化">性能优化</a> <a href="javascript:;" class="aLightGray" title="虚拟滚动">虚拟滚动</a> <a href="javascript:;" class="aLightGray" title="长列表优化">长列表优化</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/620012.html" class="aBlack" target="_blank" title="前端长列表虚拟滚动实战:从可视区计算到滚动流畅">前端长列表虚拟滚动实战:从可视区计算到滚动流畅</a> </dt> <dd class="cont2"> <span><i class="view"></i>111浏览</span> <span class="collectBtn user_collection" data-id="620012" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/619999.html" class="img_box" title="前端轮询接口越打越多怎么办:从重复定时器到清理机制一步步排查"> <img src="/uploads/20260616/1781600013-frontend-polling-cleanup-solution.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端轮询接口越打越多怎么办:从重复定时器到清理机制一步步排查"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1星期前  |   <a href="/articletag/215_new_0_1.html" class="aLightGray" title="定时器">定时器</a> · <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/39721_new_0_1.html" class="aLightGray" title="性能排查">性能排查</a> · <a href="/articletag/39918_new_0_1.html" class="aLightGray" title="接口请求">接口请求</a> · <a href="/articletag/39934_new_0_1.html" class="aLightGray" title="轮询">轮询</a> · <a href="/articletag/39935_new_0_1.html" class="aLightGray" title="setInterval">setInterval</a> · <a href="javascript:;" class="aLightGray" title="setInterval">setInterval</a> <a href="javascript:;" class="aLightGray" title="页面可见性">页面可见性</a> <a href="javascript:;" class="aLightGray" title="clearInterval">clearInterval</a> <a href="javascript:;" class="aLightGray" title="前端轮询">前端轮询</a> <a href="javascript:;" class="aLightGray" title="请求堆积">请求堆积</a> <a href="javascript:;" class="aLightGray" title="定时器清理">定时器清理</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/619999.html" class="aBlack" target="_blank" title="前端轮询接口越打越多怎么办:从重复定时器到清理机制一步步排查">前端轮询接口越打越多怎么办:从重复定时器到清理机制一步步排查</a> </dt> <dd class="cont2"> <span><i class="view"></i>490浏览</span> <span class="collectBtn user_collection" data-id="619999" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/619992.html" class="img_box" title="前端表单重复提交治理完整流程:按钮锁定、请求去重和幂等 key"> <img src="/uploads/20260616/1781592762-form-submit-idempotent-key.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端表单重复提交治理完整流程:按钮锁定、请求去重和幂等 key"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1星期前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/39919_new_0_1.html" class="aLightGray" title="状态管理">状态管理</a> · <a href="/articletag/39920_new_0_1.html" class="aLightGray" title="表单提交">表单提交</a> · <a href="/articletag/39921_new_0_1.html" class="aLightGray" title="防重复提交">防重复提交</a> · <a href="/articletag/39922_new_0_1.html" class="aLightGray" title="接口幂等">接口幂等</a> · <a href="javascript:;" class="aLightGray" title="重复提交">重复提交</a> <a href="javascript:;" class="aLightGray" title="前端表单">前端表单</a> <a href="javascript:;" class="aLightGray" title="请求去重">请求去重</a> <a href="javascript:;" class="aLightGray" title="按钮锁定">按钮锁定</a> <a href="javascript:;" class="aLightGray" title="幂等key">幂等key</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/619992.html" class="aBlack" target="_blank" title="前端表单重复提交治理完整流程:按钮锁定、请求去重和幂等 key">前端表单重复提交治理完整流程:按钮锁定、请求去重和幂等 key</a> </dt> <dd class="cont2"> <span><i class="view"></i>253浏览</span> <span class="collectBtn user_collection" data-id="619992" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/619990.html" class="img_box" title="前端搜索结果倒退怎么办:AbortController 取消旧请求和序号兜底"> <img src="/uploads/20260616/1781590765-frontend-search-race-fix.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端搜索结果倒退怎么办:AbortController 取消旧请求和序号兜底"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1星期前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/39916_new_0_1.html" class="aLightGray" title="搜索框">搜索框</a> · <a href="/articletag/39917_new_0_1.html" class="aLightGray" title="AbortController">AbortController</a> · <a href="/articletag/39918_new_0_1.html" class="aLightGray" title="接口请求">接口请求</a> · <a href="/articletag/39919_new_0_1.html" class="aLightGray" title="状态管理">状态管理</a> · <a href="javascript:;" class="aLightGray" title="Fetch">Fetch</a> <a href="javascript:;" class="aLightGray" title="AbortController">AbortController</a> <a href="javascript:;" class="aLightGray" title="前端搜索">前端搜索</a> <a href="javascript:;" class="aLightGray" title="请求乱序">请求乱序</a> <a href="javascript:;" class="aLightGray" title="旧响应覆盖">旧响应覆盖</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/619990.html" class="aBlack" target="_blank" title="前端搜索结果倒退怎么办:AbortController 取消旧请求和序号兜底">前端搜索结果倒退怎么办:AbortController 取消旧请求和序号兜底</a> </dt> <dd class="cont2"> <span><i class="view"></i>295浏览</span> <span class="collectBtn user_collection" data-id="619990" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/619979.html" class="img_box" title="前端图片懒加载布局抖动治理完整流程:占位比例、按需加载和 CLS 复查"> <img src="/uploads/20260616/1781579104-frontend-lazy-cls-overview.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端图片懒加载布局抖动治理完整流程:占位比例、按需加载和 CLS 复查"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1星期前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/729_new_0_1.html" class="aLightGray" title="性能优化">性能优化</a> · <a href="/articletag/34073_new_0_1.html" class="aLightGray" title="cls">cls</a> · <a href="/articletag/39909_new_0_1.html" class="aLightGray" title="懒加载">懒加载</a> · <a href="/articletag/39910_new_0_1.html" class="aLightGray" title="Core Web Vitals">Core Web Vitals</a> · <a href="javascript:;" class="aLightGray" title="前端">前端</a> <a href="javascript:;" class="aLightGray" title="图片懒加载">图片懒加载</a> <a href="javascript:;" class="aLightGray" title="IntersectionObserver">IntersectionObserver</a> <a href="javascript:;" class="aLightGray" title="CLS">CLS</a> <a href="javascript:;" class="aLightGray" title="布局稳定">布局稳定</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/619979.html" class="aBlack" target="_blank" title="前端图片懒加载布局抖动治理完整流程:占位比例、按需加载和 CLS 复查">前端图片懒加载布局抖动治理完整流程:占位比例、按需加载和 CLS 复查</a> </dt> <dd class="cont2"> <span><i class="view"></i>128浏览</span> <span class="collectBtn user_collection" data-id="619979" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/619973.html" class="img_box" title="前端 WebSocket 断线重连完整流程:心跳检测、退避重试和消息补发"> <img src="/uploads/20260616/1781541472-frontend-websocket-message-queue.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端 WebSocket 断线重连完整流程:心跳检测、退避重试和消息补发"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1星期前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/277_new_0_1.html" class="aLightGray" title="消息队列">消息队列</a> · <a href="/articletag/1017_new_0_1.html" class="aLightGray" title="websocket">websocket</a> · <a href="/articletag/39899_new_0_1.html" class="aLightGray" title="实时通信">实时通信</a> · <a href="/articletag/39900_new_0_1.html" class="aLightGray" title="断线重连">断线重连</a> · <a href="javascript:;" class="aLightGray" title="前端">前端</a> <a href="javascript:;" class="aLightGray" title="websocket">websocket</a> <a href="javascript:;" class="aLightGray" title="心跳检测">心跳检测</a> <a href="javascript:;" class="aLightGray" title="断线重连">断线重连</a> <a href="javascript:;" class="aLightGray" title="消息补发">消息补发</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/619973.html" class="aBlack" target="_blank" title="前端 WebSocket 断线重连完整流程:心跳检测、退避重试和消息补发">前端 WebSocket 断线重连完整流程:心跳检测、退避重试和消息补发</a> </dt> <dd class="cont2"> <span><i class="view"></i>365浏览</span> <span class="collectBtn user_collection" data-id="619973" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> </ul> </div> </div> <div class="mainRight"> <!-- 右侧广告位banner --> <div class="rightContBox" style="margin-top: 0px;"> <div class="rightTit"> <a href="/courselist.html" class="more" title="查看更多">查看更多<i class="iconfont"></i></a> <div class="tit lineOverflow">课程推荐</div> </div> <ul class="lessonRecomRList"> <li> <a href="/course/9.html" class="img_box" target="_blank" title="前端进阶之JavaScript设计模式"> <img src="/uploads/20221222/52fd0f23a454c71029c2c72d206ed815.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="前端进阶之JavaScript设计模式"> </a> <dl> <dt class="lineTwoOverflow"><a href="/course/9.html" target="_blank" class="aBlack" title="前端进阶之JavaScript设计模式">前端进阶之JavaScript设计模式</a></dt> <dd class="cont1 lineTwoOverflow"> 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。 </dd> <dd class="cont2">543次学习</dd> </dl> </li> <li> <a href="/course/2.html" class="img_box" target="_blank" title="GO语言核心编程课程"> <img src="/uploads/20221221/634ad7404159bfefc6a54a564d437b5f.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="GO语言核心编程课程"> </a> <dl> <dt class="lineTwoOverflow"><a href="/course/2.html" target="_blank" class="aBlack" title="GO语言核心编程课程">GO语言核心编程课程</a></dt> <dd class="cont1 lineTwoOverflow"> 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。 </dd> <dd class="cont2">516次学习</dd> </dl> </li> <li> <a href="/course/74.html" class="img_box" target="_blank" title="简单聊聊mysql8与网络通信"> <img src="/uploads/20240103/bad35fe14edbd214bee16f88343ac57c.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="简单聊聊mysql8与网络通信"> </a> <dl> <dt class="lineTwoOverflow"><a href="/course/74.html" target="_blank" class="aBlack" title="简单聊聊mysql8与网络通信">简单聊聊mysql8与网络通信</a></dt> <dd class="cont1 lineTwoOverflow"> 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让 </dd> <dd class="cont2">500次学习</dd> </dl> </li> <li> <a href="/course/57.html" class="img_box" target="_blank" title="JavaScript正则表达式基础与实战"> <img src="/uploads/20221226/bbe4083bb3cb0dd135fb02c31c3785fb.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="JavaScript正则表达式基础与实战"> </a> <dl> <dt class="lineTwoOverflow"><a href="/course/57.html" target="_blank" class="aBlack" title="JavaScript正则表达式基础与实战">JavaScript正则表达式基础与实战</a></dt> <dd class="cont1 lineTwoOverflow"> 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。 </dd> <dd class="cont2">487次学习</dd> </dl> </li> <li> <a href="/course/28.html" class="img_box" target="_blank" title="从零制作响应式网站—Grid布局"> <img src="/uploads/20221223/ac110f88206daeab6c0cf38ebf5fe9ed.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="从零制作响应式网站—Grid布局"> </a> <dl> <dt class="lineTwoOverflow"><a href="/course/28.html" target="_blank" class="aBlack" title="从零制作响应式网站—Grid布局">从零制作响应式网站—Grid布局</a></dt> <dd class="cont1 lineTwoOverflow"> 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。 </dd> <dd class="cont2">485次学习</dd> </dl> </li> </ul> </div> <div class="rightContBox"> <div class="rightTit"> <a href="/ai.html" class="more" title="查看更多">查看更多<i class="iconfont"></i></a> <div class="tit lineOverflow">AI推荐</div> </div> <ul class="lessonRecomRList"> <li> <a href="/ai/13109.html" target="_blank" title="ljg-skills - "Prompt之神"李继刚开源的 AI 技能集" class="img_box"> <img src="/uploads/ai/20260616/ljg-skills-icon-8bbe1468e5.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="ljg-skills - "Prompt之神"李继刚开源的 AI 技能集" style="object-fit:cover;width:100%;height:100%;"> </a> <dl> <dt class="lineTwoOverflow"><a href="/ai/13109.html" class="aBlack" target="_blank" title="ljg-skills">ljg-skills</a></dt> <dd class="cont1 lineTwoOverflow"> ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。 </dd> <dd class="cont2">2511次使用</dd> </dl> </li> <li> <a href="/ai/13108.html" target="_blank" title="MELO音乐 - AI 音乐生成平台,支持多模态创作能力" class="img_box"> <img src="/uploads/ai/20260616/melo-icon-10bf590762.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="MELO音乐 - AI 音乐生成平台,支持多模态创作能力" style="object-fit:cover;width:100%;height:100%;"> </a> <dl> <dt class="lineTwoOverflow"><a href="/ai/13108.html" class="aBlack" target="_blank" title="MELO音乐">MELO音乐</a></dt> <dd class="cont1 lineTwoOverflow"> MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款! </dd> <dd class="cont2">2317次使用</dd> </dl> </li> <li> <a href="/ai/13107.html" target="_blank" title="UniScribe - AI 免费在线音视频转文字平台" class="img_box"> <img src="/uploads/ai/20260616/uniscribe-icon-3c88366a15.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="UniScribe - AI 免费在线音视频转文字平台" style="object-fit:cover;width:100%;height:100%;"> </a> <dl> <dt class="lineTwoOverflow"><a href="/ai/13107.html" class="aBlack" target="_blank" title="UniScribe">UniScribe</a></dt> <dd class="cont1 lineTwoOverflow"> UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。 </dd> <dd class="cont2">2266次使用</dd> </dl> </li> <li> <a href="/ai/13106.html" target="_blank" title="剧云 - 免费 AI 智能中文剧本创作平台" class="img_box"> <img src="/uploads/ai/20260615/d36c7176-icon-2b0cd581ce.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="剧云 - 免费 AI 智能中文剧本创作平台" style="object-fit:cover;width:100%;height:100%;"> </a> <dl> <dt class="lineTwoOverflow"><a href="/ai/13106.html" class="aBlack" target="_blank" title="剧云">剧云</a></dt> <dd class="cont1 lineTwoOverflow"> 剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。 </dd> <dd class="cont2">2463次使用</dd> </dl> </li> <li> <a href="/ai/13105.html" target="_blank" title="万象有声 - AI 一站式有声内容创作平台" class="img_box"> <img src="/uploads/ai/20260615/50267bac-icon-c146b001b5.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="万象有声 - AI 一站式有声内容创作平台" style="object-fit:cover;width:100%;height:100%;"> </a> <dl> <dt class="lineTwoOverflow"><a href="/ai/13105.html" class="aBlack" target="_blank" title="万象有声">万象有声</a></dt> <dd class="cont1 lineTwoOverflow"> 万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单! </dd> <dd class="cont2">2442次使用</dd> </dl> </li> </ul> </div> <!-- 相关文章 --> <div class="rightContBox"> <div class="rightTit"> <a href="/articlelist.html" class="more" title="查看更多">查看更多<i class="iconfont"></i></a> <div class="tit lineOverflow">相关文章</div> </div> <ul class="aboutArticleRList"> <li> <dl> <dt class="lineTwoOverflow"><a href="/article/207000.html" class="aBlack" title="JavaScript函数定义及示例详解">JavaScript函数定义及示例详解</a></dt> <dd> <span class="left">2025-05-11</span> <span class="right">502浏览</span> </dd> </dl> </li> <li> <dl> <dt class="lineTwoOverflow"><a href="/article/619053.html" class="aBlack" title="CSS变量简化按钮悬停效果技巧">CSS变量简化按钮悬停效果技巧</a></dt> <dd> <span class="left">2026-05-31</span> <span class="right">501浏览</span> </dd> </dl> </li> <li> <dl> <dt class="lineTwoOverflow"><a href="/article/618916.html" class="aBlack" title="JavaScript符号类型详解与应用">JavaScript符号类型详解与应用</a></dt> <dd> <span class="left">2026-05-31</span> <span class="right">501浏览</span> </dd> </dl> </li> <li> <dl> <dt class="lineTwoOverflow"><a href="/article/612539.html" class="aBlack" title="HTML剪贴板复制粘贴怎么用">HTML剪贴板复制粘贴怎么用</a></dt> <dd> <span class="left">2026-05-26</span> <span class="right">501浏览</span> </dd> </dl> </li> <li> <dl> <dt class="lineTwoOverflow"><a href="/article/611774.html" class="aBlack" title="data-*属性详解:HTML数据存储与DOM操作技巧">data-*属性详解:HTML数据存储与DOM操作技巧</a></dt> <dd> <span class="left">2026-05-25</span> <span class="right">501浏览</span> </dd> </dl> </li> </ul> </div> </div> </div> <div class="footer"> <div class="footerIn"> <div class="footLeft"> <div class="linkBox"> <a href="/about/1.html" target="_blank" class="aBlack" title="关于我们">关于我们</a> <a href="/about/5.html" target="_blank" class="aBlack" title="免责声明">免责声明</a> <a href="#" class="aBlack" title="意见反馈">意见反馈</a> <a href="/about/2.html" class="aBlack" target="_blank" title="联系我们">联系我们</a> <a href="/send.html" class="aBlack" title="广告合作">内容提交</a> <a href="/manual/go/" target="_blank" class="aBlack" title="手册">手册</a> </div> <div class="footTip">Golang学习网:公益在线Go学习平台,帮助Go学习者快速成长!</div> <div class="shareBox"> <span><i class="qq"></i>技术交流群</span> </div> <div class="copyRight"> Copyright 2023 http://www.17golang.com/ All Rights Reserved | <a href="https://beian.miit.gov.cn/" target="_blank" title="备案">苏ICP备2023003363号-1</a> </div> </div> <div class="footRight"> <ul class="encodeList"> <li> <div class="encodeImg"> <img src="/assets/examples/qrcode_for_gh.jpg" alt="Golang学习网"> </div> <div class="tit">关注公众号</div> <div class="tip">Golang学习网</div> </li> <div class="clear"></div> </ul> </div> <div class="clear"></div> </div> </div> <!-- 微信登录弹窗 --> <style> .popupBg .n-error{ color: red; } </style> <div class="popupBg"> <div class="loginBoxBox"> <div class="imgbg"> <img src="/assets/images/leftlogo.jpg" alt=""> </div> <!-- 微信登录 --> <div class="loginInfo encodeLogin" style="display: none;"> <div class="closeIcon" onclick="$('.popupBg').hide();"></div> <div class="changeLoginType cursorPointer create_wxqrcode" onclick="$('.loginInfo').hide();$('.passwordLogin').show();"> <div class="tip">密码登录在这里</div> </div> <div class="encodeInfo"> <div class="tit"><i></i> 微信扫码登录或注册</div> <div class="encodeImg"> <span id="wx_login_qrcode"><img src="/assets/examples/code.png" alt="二维码"></span> <!-- <div class="refreshBox"> <p>二维码失效</p> <button type="button" class="create_wxqrcode">刷新1111</button> </div> --> </div> <div class="tip">打开微信扫一扫,快速登录/注册</div> </div> <div class="beforeLoginTip">登录即同意 <a href="#" class="aBlue" title="用户协议">用户协议</a> 和 <a href="#" class="aBlue" title="隐私政策">隐私政策</a></div> </div> <!-- 密码登录 --> <div class="loginInfo passwordLogin"> <div class="closeIcon" onclick="$('.popupBg').hide();"></div> <div class="changeLoginType cursorPointer create_wxqrcode" onclick="$('.loginInfo').hide();$('.encodeLogin').show();"> <div class="tip">微信登录更方便</div> </div> <div class="passwordInfo"> <ul class="logintabs selfTabMenu"> <li class="selfTabItem loginFormLi curr">密码登录</li> <li class="selfTabItem registerFormBox ">注册账号</li> </ul> <div class="selfTabContBox"> <div class="selfTabCont loginFormBox" style="display: block;"> <form name="form" id="login-form" class="form-vertical form" method="POST" action="/index/user/login"> <input type="hidden" name="url" value="//17golang.com/article/335192.html"/> <input type="hidden" name="__token__" value="610916f69b0e955019a9cc2f96b3c34e" /> <div class="form-group" style="height:70px;"> <input class="form-control" id="account" type="text" name="account" value="" data-rule="required" placeholder="邮箱/用户名" autocomplete="off"> </div> <div class="form-group" style="height:70px;"> <input class="form-control" id="password" type="password" name="password" data-rule="required;password" placeholder="密码" autocomplete="off"> </div> <div class="codeBox" style="height:70px;"> <div class="form-group" style="height:70px; width:205px; float: left;"> <input type="text" name="captcha" class="form-control" placeholder="验证码" data-rule="required;length(4)" /> </div> <span class="input-group-btn" style="padding:0;border:none;"> <img src="/captcha.html" width="100" height="45" onclick="this.src = '/captcha.html?r=' + Math.random();"/> </span> </div> <div class="other"> <a href="#" class="forgetPwd aGray" onclick="$('.loginInfo').hide();$('.passwordForget').show();" title="忘记密码">忘记密码</a> </div> <div class="loginBtn mt25"> <button type="submit">登录</button> </div> </form> </div> <div class="selfTabCont registerFormBox" style="display: none;"> <form name="form1" id="register-form" class="form-vertical form" method="POST" action="/index/user/register"> <input type="hidden" name="invite_user_id" value="0"/> <input type="hidden" name="url" value="//17golang.com/article/335192.html"/> <input type="hidden" name="__token__" value="610916f69b0e955019a9cc2f96b3c34e" /> <div class="form-group" style="height:70px;"> <input type="text" name="email" id="email2" data-rule="required;email" class="form-control" placeholder="邮箱"> </div> <div class="form-group" style="height:70px;"> <input type="text" id="username" name="username" data-rule="required;username" class="form-control" placeholder="用户名必须3-30个字符"> </div> <div class="form-group" style="height:70px;"> <input type="password" id="password2" name="password" data-rule="required;password" class="form-control" placeholder="密码必须6-30个字符"> </div> <div class="codeBox" style="height:70px;"> <div class="form-group" style="height:70px; width:205px; float: left;"> <input type="text" name="captcha" class="form-control" placeholder="验证码" data-rule="required;length(4)" /> </div> <span class="input-group-btn" style="padding:0;border:none;"> <img src="/captcha.html" width="100" height="45" onclick="this.src = '/captcha.html?r=' + Math.random();"/> </span> </div> <div class="loginBtn"> <button type="submit">注册</button> </div> </form> </div> </div> </div> <div class="beforeLoginTip">登录即同意 <a href="https://www.17golang.com/about/3.html" target="_blank" class="aBlue" title="用户协议">用户协议</a> 和 <a href="https://www.17golang.com/about/4.html" target="_blank" class="aBlue" title="隐私政策">隐私政策</a></div> </div> <!-- 重置密码 --> <div class="loginInfo passwordForget"> <div class="closeIcon" onclick="$('.popupBg').hide();"></div> <div class="returnLogin cursorPointer" onclick="$('.passwordForget').hide();$('.passwordLogin').show();">返回登录</div> <div class="passwordInfo"> <ul class="logintabs selfTabMenu"> <li class="selfTabItem">重置密码</li> </ul> <div class="selfTabContBox"> <div class="selfTabCont"> <form id="resetpwd-form" class="form-horizontal form-layer nice-validator n-default n-bootstrap form" method="POST" action="/api/user/resetpwd.html" novalidate="novalidate"> <div style="height:70px;"> <input type="text" class="form-control" id="email" name="email" value="" placeholder="输入邮箱" aria-invalid="true"> </div> <div class="codeBox" style="height:70px;"> <div class="form-group" style="height:70px; width:205px; float: left;"> <input type="text" name="captcha" class="form-control" placeholder="验证码" /> </div> <span class="input-group-btn" style="padding:0;border:none;"> <a href="javascript:;" class="btn btn-primary btn-captcha cursorPointer" style="background: #2080F8; border-radius: 4px; color: #fff; padding: 12px; position: absolute;" data-url="/api/ems/send.html" data-type="email" data-event="resetpwd">发送验证码</a> </span> </div> <input type="password" class="form-control" id="newpassword" name="newpassword" value="" placeholder="请输入6-18位密码"> <div class="loginBtn mt25"> <button type="submit">重置密码</button> </div> </form> </div> </div> </div> </div> </div> </div> <script src="/assets/js/juejin-theme.js?v=20260613b" defer></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?3dc5666f6478c7bf39cd5c91e597423d"; hm.async = true; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script src="/assets/js/frontend/common.js"></script> </body> </html>