Firstly, you do not need ul before the identifier, because the identifier is quite unique, but it can be readable by you, etc.
Of course, you can remove >ul , but I assume that you added it knowingly to be specific, and in CSS it is βsaferβ (although βbetterβ can be said) to be more specific than general.
Then, if you don't change your markup (with an extra class or so), I think this is the right way. There is redundancy, and I completely agree. This is an inherited issue in CSS. You cannot solve this with CSS. Are you living with him or looking for something that does not pose a problem for creating CSS for you.
In my current project I use LESS CSS, this syntax is very similar to CSS and generates actual CSS files via the command line (or Visual Studio extension, well, LessExtension, which is generated when saving), The browser also has a JS file to generate.
Check this. I bet you will like it. You can take your CSS file as is and start adding benefits.
http://lesscss.org
You have selected the following in LESS:
#menu-navigation { li>ul li a { &:hover { } } }
Of course, you can also have an average nesting level. Here I did all li>ul li a single selector instead of several nesting levels for simplicity, but usually I made each of them a nesting level.
source share