🙏 🙏 🙏
大佬们能否写个代码片段,当鼠标移动到大纲的时候,大纲对应的内容自动展开,当鼠标移出对应的内容时恢复原来状态
🙏 🙏 🙏
🙏 🙏 🙏
大佬们能否写个代码片段,当鼠标移动到大纲的时候,大纲对应的内容自动展开,当鼠标移出对应的内容时恢复原来状态
🙏 🙏 🙏
应该是作为上下文发给 ai 的 😄
我让 GPT 辅助写了一个 JS 片段,基本能实现,但我感觉交互很奇怪:
// 鼠标移动到大纲标题自动展开与折叠下级 JS片段
setTimeout(() => {
const headings = document.querySelectorAll('li.b3-list-item[data-type="NodeHeading"]');
headings.forEach((heading) => {
let hideTimeout;
let removeTimeout;
let isMouseInHeading = false; // 标志变量,跟踪鼠标是否在 heading 内
let isMouseInSubMenu = false; // 标志变量,跟踪鼠标是否在子菜单内
// 鼠标进入列表项
heading.addEventListener('mouseenter', () => {
isMouseInHeading = true; // 设置标志变量
clearTimeout(removeTimeout); // 清除可能存在的移除定时器
let nextElement = heading.nextElementSibling;
if (nextElement && nextElement.tagName.toLowerCase() === 'ul') {
removeTimeout = setTimeout(() => {
if (isMouseInHeading) {
nextElement.classList.remove('fn__none');
}
}, 200); // 延迟 200ms 后再移除 fn__none
}
});
// 鼠标离开列表项
heading.addEventListener('mouseleave', () => {
isMouseInHeading = false; // 更新标志变量
hideTimeout = setTimeout(() => {
let nextElement = heading.nextElementSibling;
if (nextElement && nextElement.tagName.toLowerCase() === 'ul' && !isMouseInSubMenu) {
nextElement.classList.add('fn__none');
}
}, 200); // 延迟 200ms 后再添加 fn__none
});
// 鼠标移动到 ul > li 上时,阻止 fn__none 添加
let nextElement = heading.nextElementSibling;
if (nextElement) {
nextElement.querySelectorAll('li').forEach((ulItem) => {
ulItem.addEventListener('mouseenter', () => {
isMouseInSubMenu = true; // 更新标志变量
clearTimeout(hideTimeout); // 清除定时器,防止隐藏
clearTimeout(removeTimeout); // 清除移除定时器
});
ulItem.addEventListener('mouseleave', () => {
isMouseInSubMenu = false; // 更新标志变量
hideTimeout = setTimeout(() => {
if (nextElement) {
nextElement.classList.add('fn__none');
}
}, 200);
});
});
}
});
}, 1000);
FreeMarker 是一款好用且功能强大的 Java 模版引擎。
CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。
Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。
让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
新手上路,请谨慎驾驶!
iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。
发布对别人有帮助的原创内容是最好的 SEO 方式。
Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。
你若安好,便是晴天。
禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。
Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。
正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。
Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。
我来 wolai:不仅仅是未来的云端笔记!
阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。
TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。
Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。
RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。
uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。
沉迷游戏伤身,强撸灰飞烟灭。
Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。
为成为自由职业者在家办公而努力吧!
单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。
你比 99% 的人都优秀么?