【问题标题】:CSS: Styling a dropdown menu list, but link style won't change from main navigation styleCSS:样式化下拉菜单列表,但链接样式不会从主导航样式更改
【发布时间】:2018-12-26 22:26:00
【问题描述】:

我对 HTML/CSS 还很陌生,而且我没有受过正规培训,只是把一些科学怪人的东西放在一起。现在我在主导航菜单的末尾有一个下拉菜单。问题是下拉菜单内的链接 - 我需要它们是较暗的颜色,但它们不会从主导航菜单中的浅色改变。无论我尝试什么,颜色总是一样的!出于某种原因,我什至可以更改列表中项目符号点的颜色(我也需要删除它,但这更容易),但文本保持不变。

感谢任何帮助。 :-)

/* (1/3) MAIN NAVIGATION BAR */

#navbar {
  overflow: hidden;
  background-color: #999900;
  font-family: caviar-dreams;
}


/* (2/3) NAVIGATION LINKS */

#navbar a {
  float: left;
  color: #f2f2f2;
  padding-top: 5px;
  padding-bottom: 5px;
  padding-right: 20px;
  padding-left: 15px;
  text-transform: uppercase;
  text-decoration: none;
}


/* (3/3) NAVIGATION LINKS */

#navbar a:hover {
  text-decoration-line: underline;
  text-decoration-style: solid;
}


/* (1/7) DROPDOWN MENU CONTAINER */

.dropdown {
  overflow: hidden;
}


/* (2/7) DROPDOWN MENU BUTTON */

.dropdown .dropbtn {
  font-size: 16px;
  border: none;
  outline: none;
  padding-top: 5px;
  vertical-align: middle;
  background-color: inherit;
  font-family: inherit;
  /* Important for vertical align on mobile phones */
  margin: 0;
  /* Important for vertical align on mobile phones */
}


/* (3/7) DROPDOWN BUTTON HOVER COLOR */

.dropdown:hover .dropbtn {
  background-color: #8d7b8a;
}


/* (4/7) DROPDOWN CONTENT (HIDDEN UNTIL HOVERED) */

.dropdown-content {
  display: none;
  position: absolute;
  background-color: #FFFFFF;
  border: 1px dashed #b89abe;
  width: auto;
}


/* (5/7) DROPDOWN LINKS */

.dropdown-content a {
  float: none;
  color: black;
  background-color: #FFFFFF;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}


/* (6/7) DROPDOWN LINKS HOVER */

.dropdown-content a:hover {
  background-color: #8d7b8a;
}


/* (7/7) SHOW DROPDOWN MENU ON HOVER */

.dropdown:hover .dropdown-content {
  display: block;
}


/* AT LEAST THIS DID /SOMETHING/ ?
.dropdown-content ul li a
    {color:green;
    background-color: blue;
    list-style-type: none;
    } */
<!DOCTYPE html>
<div class="wrapper">
  <link href="style.css" rel="stylesheet" type="text/css">
  <!--| NAVIGATION BAR (1/2) |-->
  <div id="navbar">
    <a href="#">Home</a>
    <a href="#">About</a>
    <a href="#">News</a>
    <a href="#">Contact</a>
    <!--| DROPDOWN MENU IN NAV BAR (2/2) |-->
    <div class="dropdown">
      <button class="dropbtn">Drop Down Menu</button>
      <div class="dropdown-content">
        <ul>
          <li><a href="#">Art Education</a></li>
          <li><a href="#">Graphic Design</a></li>
          <li><a href="#">Custom Projects</a></li>
          <li><a href="#">Events and Parties</a></li>
          <li><a href="#">Studio Work</a></li>
          <li><a href="#">Photo Gallery</a></li>
          <li><a href="#">CV</a></li>
          <li><a href="#">Shop</a></li>
        </ul>
      </div>
    </div>
  </div>
</div>

【问题讨论】:

    标签: html css drop-down-menu navigation


    【解决方案1】:

    问题是ids 在 css 层次结构中比类更高。所以#navbar a 总是会覆盖.dropdown-content a

    你可以试试这个:#navbar .dropdown-content a

    或者你可以重写为#navbar &gt; a。这将只针对作为导航栏直接子级的锚标记。所以它应该忽略下拉列表中的锚标记。

    或者更好的是,不要使用id。在类上使用 id 并没有太多好处,而且它往往会导致这类层次结构问题。

    【讨论】:

    • 您也可以在颜色之后和分号之前添加 !important ,然后浏览器会将 !important 的重要性排序高于其他颜色
    • 一个经验法则是尽可能避免使用!important。它应该被用作绝对的最后手段。这是解决问题的一种懒惰方式,首先以正确的方式编写它会更有用。没有冒犯,克里斯^_^
    【解决方案2】:

    这应该适合你。您只需要一个更具体的选择器来覆盖ids。

    /* (1/3) MAIN NAVIGATION BAR */
    
    #navbar {
      overflow: hidden;
      background-color: #999900;
      font-family: caviar-dreams;
    }
    
    
    /* (2/3) NAVIGATION LINKS */
    
    #navbar a {
      float: left;
      color: #f2f2f2;
      padding-top: 5px;
      padding-bottom: 5px;
      padding-right: 20px;
      padding-left: 15px;
      text-transform: uppercase;
      text-decoration: none;
    }
    
    
    /* (3/3) NAVIGATION LINKS */
    
    #navbar a:hover {
      text-decoration-line: underline;
      text-decoration-style: solid;
    }
    
    
    /* (1/7) DROPDOWN MENU CONTAINER */
    
    .dropdown {
      overflow: hidden;
    }
    
    
    /* (2/7) DROPDOWN MENU BUTTON */
    
    .dropdown .dropbtn {
      font-size: 16px;
      border: none;
      outline: none;
      padding-top: 5px;
      vertical-align: middle;
      background-color: inherit;
      font-family: inherit;
      /* Important for vertical align on mobile phones */
      margin: 0;
      /* Important for vertical align on mobile phones */
    }
    
    
    /* (3/7) DROPDOWN BUTTON HOVER COLOR */
    
    .dropdown:hover .dropbtn {
      background-color: #8d7b8a;
    }
    
    
    /* (4/7) DROPDOWN CONTENT (HIDDEN UNTIL HOVERED) */
    
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #FFFFFF;
      border: 1px dashed #b89abe;
      width: auto;
    }
    
    
    /* (5/7) DROPDOWN LINKS */
    
    #navbar .dropdown-content a {
      float: none;
      color: black;
      background-color: #FFFFFF;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    
    
    /* (6/7) DROPDOWN LINKS HOVER */
    
    #navbar .dropdown-content a:hover {
      background-color: #8d7b8a;
    }
    
    
    /* (7/7) SHOW DROPDOWN MENU ON HOVER */
    
    .dropdown:hover .dropdown-content {
      display: block;
    }
    
    
    /* AT LEAST THIS DID /SOMETHING/ ?
    .dropdown-content ul li a
        {color:green;
        background-color: blue;
        list-style-type: none;
        } */
    <!DOCTYPE html>
    <div class="wrapper">
      <link href="style.css" rel="stylesheet" type="text/css">
      <!--| NAVIGATION BAR (1/2) |-->
      <div id="navbar">
        <a href="#">Home</a>
        <a href="#">About</a>
        <a href="#">News</a>
        <a href="#">Contact</a>
        <!--| DROPDOWN MENU IN NAV BAR (2/2) |-->
        <div class="dropdown">
          <button class="dropbtn">Drop Down Menu</button>
          <div class="dropdown-content">
            <ul>
              <li><a href="#">Art Education</a></li>
              <li><a href="#">Graphic Design</a></li>
              <li><a href="#">Custom Projects</a></li>
              <li><a href="#">Events and Parties</a></li>
              <li><a href="#">Studio Work</a></li>
              <li><a href="#">Photo Gallery</a></li>
              <li><a href="#">CV</a></li>
              <li><a href="#">Shop</a></li>
            </ul>
          </div>
        </div>
      </div>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多