将 HTML id 更改为 class 会弄乱 CSS 样式

Changing HTML id to class messes up CSS styling

我想将一些使用 id 标记的项目更改为单个 class,这样在我的 CSS 中我可以使用 .sortsubmenu 而不是 #sortsongmenu#sortartistmenu、等等

问题是,当我将其中一个从 id 更改为 class 时,它弄乱了格式。下图中,songsubmenu和artistsubmenu完全一样,只是songsubmenu用id标识,artistsubmenu用class.

标识

#topbar {
 background-color: #222;
}

#topbar_wrapper {
 width: 100%;
 margin: 0 auto;
 text-align: left;
}

#mainmenu {
 list-style-type: none;
 padding: 0px;
 margin: 0px;
 position: relative;
 min-width: 200px;
}

#mainmenu li {
 display: inline-block;
 width: 200px;
}

#mainmenu li:hover {
 background-color: #333;
}

#mainmenu li a {
 color: #CCC;
 display: block;
 padding: 15px;
 text-decoration: none;
}

#mainmenu li:hover > ul {
 display: block;
}

#sortmenu {
 display: none;
 position: absolute;
 background-color: #333;
 border: 5px solid #222;
 border-top: 0;
 margin-left: -5px;
}

#sortmenu > li {
 display: block;
 position: relative;
}

#sortmenu li a:hover {
 color: #699;
}

#sortmenu li:hover ul {
 display: inline-block;
}

#sortsongmenu, .sortsubmenu {
 display: none;
 position: absolute;
 background-color: #333;
 border: 5px solid #222;
 border-left: 0px;
 text-align: right;
 top: 0;
 left: 100%;
 width: 100px;
}

#sortsongmenu li, .sortsubmenu li {
 display: inline;
}

#sortsongmenu li a:hover, .sortsubmenu li a:hover {
 color: #DB7093;
}
<div id="topbar">
  <div id="topbar_wrapper">
    <ul id="mainmenu">
      <li><a href="#">Home</a>
      </li>
      <li>
        <a href="#">Search</a>
      </li>
      <li>
        <a href="#">Sort By &#9660</a>
        <ul id="sortmenu">
          <li><a href='#'>Song</a>
            <ul id="sortsongmenu">
              <li><a href='#'>A to Z</a>
              </li>
              <li>
                <a href='#'>Z to A</a>
              </li>
            </ul>
          </li>
          <li>
            <a href='#'>Artist</a>
            <ul class="sortsubmenu">
              <li><a href='#'>A to Z</a>
              </li>
              <li>
                <a href='#'>Z to A</a>
              </li>
            </ul>
          </li>
          <li>
            <a href='#'>Album</a>
          </li>
          <li>
            <a href='#'>Genre</a>
          </li>
          <li>
            <a href='#'>BPM</a>
          </li>
          <li>
            <a href='#'>Release Date</a>
          </li>
        </ul>
      </li>
      <li>
        <a href="#">Add Song</a>
      </li>
      <li>
        <a href="#">Contact Us</a>
      </li>
    </ul>
  </div>
</div>

#mainmenu li 规则妨碍了您。它不会被基于 class 的选择器覆盖,因为它被基于 id 的选择器覆盖。

只保留 直接 后代的定位/大小,即更改:

#mainmenu li {

#mainmenu > li {

一切顺利。

#topbar {

  background-color: #222;

}

#topbar_wrapper {

  width: 100%;

  margin: 0 auto;

  text-align: left;

}

#mainmenu {

  list-style-type: none;

  padding: 0px;

  margin: 0px;

  position: relative;

  min-width: 200px;

}

#mainmenu > li {

  display: inline-block;

  width: 200px;

}

#mainmenu li:hover {

  background-color: #333;

}

#mainmenu li a {

  color: #CCC;

  display: block;

  padding: 15px;

  text-decoration: none;

}

#mainmenu li:hover > ul {

  display: block;

}

#sortmenu {

  display: none;

  position: absolute;

  background-color: #333;

  border: 5px solid #222;

  border-top: 0;

  margin-left: -5px;

}

#sortmenu > li {

  display: block;

  position: relative;

}

#sortmenu li a:hover {

  color: #699;

}

#sortmenu li:hover ul {

  display: inline-block;

}

#sortsongmenu,

.sortsubmenu {

  display: none;

  position: absolute;

  background-color: #333;

  border: 5px solid #222;

  border-left: 0px;

  text-align: right;

  top: 0;

  left: 100%;

  width: 100px;

}

#sortsongmenu li,

.sortsubmenu li {

  display: inline;

}

#sortsongmenu li a:hover,

.sortsubmenu li a:hover {

  color: #DB7093;

}
<div id="topbar">
  <div id="topbar_wrapper">
    <ul id="mainmenu">
      <li><a href="#">Home</a>
      </li>
      <li>
        <a href="#">Search</a>
      </li>
      <li>
        <a href="#">Sort By &#9660</a>
        <ul id="sortmenu">
          <li><a href='#'>Song</a>
            <ul id="sortsongmenu">
              <li><a href='#'>A to Z</a>
              </li>
              <li>
                <a href='#'>Z to A</a>
              </li>
            </ul>
          </li>
          <li>
            <a href='#'>Artist</a>
            <ul class="sortsubmenu">
              <li><a href='#'>A to Z</a>
              </li>
              <li>
                <a href='#'>Z to A</a>
              </li>
            </ul>
          </li>
          <li>
            <a href='#'>Album</a>
          </li>
          <li>
            <a href='#'>Genre</a>
          </li>
          <li>
            <a href='#'>BPM</a>
          </li>
          <li>
            <a href='#'>Release Date</a>
          </li>
        </ul>
      </li>
      <li>
        <a href="#">Add Song</a>
      </li>
      <li>
        <a href="#">Contact Us</a>
      </li>
    </ul>
  </div>
</div>