我有一个列表,列表中也有列表.
我在父列表上设置样式,但我想要父母和子列表的不同样式,但它们混合在一起我不能分开它们.
我在父列表上设置样式,但我想要父母和子列表的不同样式,但它们混合在一起我不能分开它们.
- <ul id="accountNavigation">
- <li><a href="#">Something</a></li>
- <li id="userNavigation">
- <img src="https://si0.twimg.com/profile_images/135460415/UAB_dragon_head_normal.png" alt=""/>
- <a href="#">Username</a>
- <div class="showme">
- <ul id="userNavigationSubMenu">
- <li>test</li>
- <li>test</li>
- <li>test</li>
- <li>test</li>
- <li>test</li>
- <li>test</li>
- <li>test</li>
- </ul>
- </div>
- </li>
- </ul>
CSS文件:
- body{background:#ff0000;}
- #accountNavigation{ list-style: none;float: right;height: 44px;}
- #accountNavigation li{ float: left;color: #fff;height: 44px;}
- #accountNavigation li:hover{ background: #ddd;cursor: pointer;}
- #accountNavigation li a{ text-decoration: none;color: #fff;line-height: 44px;font-weight: bold;font-size: 13px;height: 44px;padding: 15px 27px 0 14px;outline: none;}
- #accountNavigation li img{ position: absolute;top: 12px;left: 10px;width: 22px;height: 22px;}
- #userNavigation{position: relative;}
- #userNavigation a {padding-left: 38px !important;}
- #userNavigation{}
- #userNavigation:hover{}
- #userNavigation:hover .showme{display: inline;}
- .showme
- {
- display: none;
- width: 140px;
- height: 200px;
- background: #f5f5f5;
- margin: 0px auto;
- padding: 10px 5px 0px 5px;
- border: 1px solid #ddd;
- border-top: none;
- z-index: 10;
- position: absolute;
- right:0;
- top: auto;
- }
- #userNavigation ul { list-style: none;}
这是fiddle.
解决方法
只需使用>直接/直接后代组合子,以及用于指定您要定位的li(或ul)元素的ID:
- #accountNavigation { /* outer ul element */
- }
- #accountNavigation > li { /* outer ul element's children li */
- }
- #accountNavigation > li > ul { /* first 'inner' ul element */
- }
- #accountNavigation > li > ul > li { /* first 'inner' ul element's li children */
- }
当然,您可以更通用,只需使用:
- ul { /* targets all ul elements */
- /* general styles */
- }
- ul li { /* targets all li elements within a ul */
- /* general styles */
- }
- ul li ul { /* targets all ul elements within an li element,itself within a ul */
- /* overrule general 'outer' styles */
- }
- ul li ul li { /* targets all li elements within a ul element,within an li element,itself within a ul...and so on */
- /* overrule general 'outer' styles */
- }
使用一般方法:
- <ul>
- <li>This should be green!</li>
- <li>This is also green...
- <ul>
- <li>But this is not,it's,um...blue!</li>
- <li>And so on...</li>
- </ul></li>
- <li>This is green too,just because.</li>
- </ul>
以下CSS应证明其用途:
- ul li {
- color: green; /* the 'general'/'default' settings */
- margin-left: 10%;
- }
- ul li ul li {
- color: blue; /* this overrides the 'general' color setting */
- /* the margin is not overridden however */
- }
参考文献: