大佬们,我想要隐藏面包屑中列表项文本(下图红色部分),请问有办法吗?
一开始想通过:has()来命中,但是 css 好像不支持使用 use 标签内的 xlink:href 属性 作为选择器。
迷茫了 :(
大佬们,我想要隐藏面包屑中列表项文本(下图红色部分),请问有办法吗?
一开始想通过:has()来命中,但是 css 好像不支持使用 use 标签内的 xlink:href 属性 作为选择器。
迷茫了 :(
明白了,不过,css 实现不了,必须通过 js 实现。
你试试下面这个代码是否你想要的效果。
(()=>{
// 监听面包屑项出现
whenElementExist('.layout__center').then(() => {
observeElementExist('.protyle-breadcrumb__item', (element) => {
const xlinkHref = element.querySelector('svg use')?.getAttribute('xlink:href');
if(xlinkHref !== '#iconListItem') return;
const text = element.querySelector('.protyle-breadcrumb__text');
if(!text) return;
text.style.display = 'none';
}, '.layout__center');
});
// 等待元素出现(简版)
function whenElementExist(selector) {
return new Promise(resolve => {
const check = () => {
const el = typeof selector==='function'?selector():document.querySelector(selector);
if (el) resolve(el); else requestAnimationFrame(check);
};
check();
});
}
// 监听元素出现
function observeElementExist(selector, callback, observeNode) {
const handleMutations = (mutationsList, observer) => {
for (let mutation of mutationsList) {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach(node => {
if (node.matches && node.matches(selector)) {
callback(node);
//observer.disconnect(); // 一旦找到元素,停止监听
}
});
}
}
};
// 创建一个MutationObserver实例
const config = { attributes: false, childList: true, subtree: true };
const observer = new MutationObserver(handleMutations);
// 选择需要监听的父节点
observeNode = typeof observeNode === 'string' ? document.querySelector(observeNode) : observeNode;
const targetNode = observeNode || document.body;
// 开始监听目标节点的变化
observer.observe(targetNode, config);
}
})();
用这个代码试试。(之前的代码为了优化性能,缩小了监控范围导致的)
(()=>{
// 监听面包屑项出现
observeElementExist('.protyle-breadcrumb__item', (element) => {
const xlinkHref = element.querySelector('svg use')?.getAttribute('xlink:href');
if(xlinkHref !== '#iconListItem') return;
const text = element.querySelector('.protyle-breadcrumb__text');
if(!text) return;
text.style.display = 'none';
}, document.body);
// 监听元素出现
function observeElementExist(selector, callback, observeNode) {
const handleMutations = (mutationsList, observer) => {
for (let mutation of mutationsList) {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach(node => {
if (node.matches && node.matches(selector)) {
callback(node);
//observer.disconnect(); // 一旦找到元素,停止监听
}
});
}
}
};
// 创建一个MutationObserver实例
const config = { attributes: false, childList: true, subtree: true };
const observer = new MutationObserver(handleMutations);
// 选择需要监听的父节点
observeNode = typeof observeNode === 'string' ? document.querySelector(observeNode) : observeNode;
const targetNode = observeNode || document.body;
// 开始监听目标节点的变化
observer.observe(targetNode, config);
}
})();
如果还有问题,告诉我反链面板的面包屑怎么查看的?另外,你说的嵌入块面板屑应该指的是聚焦窗口的面包屑吧。
明白了,这个可以。
(()=>{
// 监听面包屑项出现
observeElementExist('.protyle-breadcrumb__item', (element) => {
const xlinkHref = element.querySelector('svg use')?.getAttribute('xlink:href');
if(xlinkHref !== '#iconListItem') return;
const text = element.querySelector('.protyle-breadcrumb__text');
if(!text) return;
text.style.display = 'none';
}, document.body);
// 监听元素出现
function observeElementExist(selector, callback, observeNode) {
const handleMutations = (mutationsList, observer) => {
for (let mutation of mutationsList) {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach(node => {
if(!node || node.nodeType !== Node.ELEMENT_NODE) return;
if (node.matches && node.matches(selector)) {
callback(node);
} else if (node.querySelector(selector)) {
const nodes = node.querySelectorAll(selector);
nodes.forEach(node => {
callback(node);
});
}
});
}
}
};
// 创建一个MutationObserver实例
const config = { attributes: false, childList: true, subtree: true };
const observer = new MutationObserver(handleMutations);
// 选择需要监听的父节点
observeNode = typeof observeNode === 'string' ? document.querySelector(observeNode) : observeNode;
const targetNode = observeNode || document.body;
// 开始监听目标节点的变化
observer.observe(targetNode, config);
}
})();
另外吐槽下:
我也很奇怪那个 css,一摸一样的代码,我第一次试那个样式也没用,第二次试就好了 😄 。
这个代码完全符合!感谢大佬! respect❤️
另外吐槽下:
我也很奇怪那个 css,一摸一样的代码,我第一次试那个样式也没用,第二次试就好了 😄 。
原来不止我一个人~ 太奇怪了
Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。
锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。
微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。
Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。
NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。
SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。
希望你我能在旅途中找到人生的下一站。
V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。
i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。
心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。
找到自己的位置,萌新烦恼少。
Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。
VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。
DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。
gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。
提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。
WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于