简化长CSS选择器

简化长CSS选择器,css,optimization,readability,simplification,code-structure,Css,Optimization,Readability,Simplification,Code Structure,我有以下CSS选择器: #AllContextMenus :not(.menu-iconic-left):not(.menu-accel):not(.menu-accel-left):not(.menu-accel-container):not(.menu-accel-container-left):not(.menu-iconic-accel):not(.menu-right)::before 为了便于阅读,我喜欢将所有代码行保持在100个字符以下 有没有什么方法可以简化、优化或编写这个CS

我有以下CSS选择器:

#AllContextMenus :not(.menu-iconic-left):not(.menu-accel):not(.menu-accel-left):not(.menu-accel-container):not(.menu-accel-container-left):not(.menu-iconic-accel):not(.menu-right)::before
为了便于阅读,我喜欢将所有代码行保持在100个字符以下

有没有什么方法可以简化、优化或编写这个CSS选择器,而不改变它匹配的内容,也不降低性能


例如,在
:not()
中是否有任何类型的“and”运算符可以使用?

通常,如果不更改选择器匹配内容的语义,就无法简化选择器

但您可以在多个点将选择器拆分为多行,以满足最大行长度要求。只需使用注释,并将换行符放在注释内。像这样:

#所有上下文菜单:非(.menu图标左)/*
*/:不是(.menu accel)/*
*/:不是(.menu accel left)/*
*/:不是(.menu accel container)/*
*/:不是(.menu accel container left)/*
*/:不是(.menu图标加速度)/*
*/:非(.menu right)::之前
#所有上下文菜单:非(.menu图标左)/*
*/:不是(.menu accel)/*
*/:不是(.menu accel left)/*
*/:不是(.menu accel container)/*
*/:不是(.menu accel container left)/*
*/:不是(.menu图标加速度)/*
*/:非(.menu right)::之前{
颜色:红色;
内容:“测试”
}

A.
菜单图标加速

您能否将样式应用于
#AllContextMenus
,然后为特定的菜单类型覆盖它?需要更多的上下文。上下文与此无关(我可以发布与此选择器相关的数千行相关代码,但没有人会真正阅读,其他人无疑会抱怨)。我只是想在不改变匹配项的情况下改进这个选择器。。。没有别的了。@NiettheDarkAbsol谢谢你的建议。你的想法基本上就是我所做的
#AllContextMenus
有一个样式,但是特定的子元素都需要对样式进行相同的修改。在注释中使用换行符是一个聪明的技巧。我的感谢和投票!使用您的技术,除了可能在每个
*/
之前添加空格之外,还有什么方法可以使代码更可读吗?@RockPaperLizard基于您的HTML,也许您可以这样做;如果您想针对所有
菜单-*
classes@TemaniAfif谢谢你的建议。我喜欢你的主意。我需要检查数千行代码(其中大部分我没有编写),看看这样的事情是否有可能。我将花一点时间考虑一个好的方法来自动化这个过程,因为手工操作会非常耗时。