代码之家  ›  专栏  ›  技术社区  ›  niyasc

为什么li元素与“block”显示重叠?

  •  0
  • niyasc  · 技术社区  · 8 年前

    我正在尝试创建如下响应菜单。

    .menu {
      margin: auto;
      text-align: center;
      margin-top: 10px;
      padding: 10px;
    }
    .menu ul {
      list-style-type: none;
      padding-left: 0;
    }
    .menu li {
      display: inline;
    }
    .menu li a {
      border: 1px solid #eee;
      padding: 10px 15px;
      text-transform: uppercase;
      transition: background 0.5s ease;
    }
    .menu li a:focus {
      text-decoration: none;
    }
    .menu li a:hover {
      text-decoration: none;
      background: #ddd;
    }
    @media (max-width: 620px) {
      .menu li {
        display: block;
        width: 100%;
      }
    }
    <div class="menu">
      <ul>
        <li><a href="#/home">Home</a>
        </li>
        <li><a href="#/experience">Experience</a>
        </li>
        <li><a href="#/education">Education</a>
        </li>
        <li><a href="#/opensource">Open Source</a>
        </li>
        <li><a href="#/contact">Contact</a>
        </li>
      </ul>
    </div>

    但菜单项在小屏幕中重叠。为什么会出现这个问题?此外,我已经将宽度设置为100%,但条目在小屏幕中的大小不会像预期的那样改变。

    2 回复  |  直到 8 年前
        1
  •  2
  •   z0mBi3    8 年前

    您需要设置 display:inline-block 用于锚标记

    .menu li a {
      display: inline-block;
    }
    

    .menu {
      margin: auto;
      text-align: center;
      margin-top: 10px;
      padding: 10px;
    }
    .menu ul {
      list-style-type: none;
      padding-left: 0;
    }
    .menu li {
      display: inline;
    }
    .menu li a {
      border: 1px solid #eee;
      padding: 10px 15px;
      text-transform: uppercase;
      transition: background 0.5s ease;
      display: inline-block;
    }
    .menu li a:focus {
      text-decoration: none;
    }
    .menu li a:hover {
      text-decoration: none;
      background: #ddd;
    }
    @media (max-width: 620px) {
      .menu li {
        display: block;
      }
    }
    <div class="menu">
      <ul>
        <li><a href="#/home">Home</a>
        </li>
        <li><a href="#/experience">Experience</a>
        </li>
        <li><a href="#/education">Education</a>
        </li>
        <li><a href="#/opensource">Open Source</a>
        </li>
        <li><a href="#/contact">Contact</a>
        </li>
      </ul>
    </div>
        2
  •  0
  •   Dhawal M    8 年前

    .menu {
      margin: auto;
      text-align: center;
      margin-top: 10px;
      padding: 10px;
    }
    .menu ul {
      list-style-type: none;
      padding-left: 0;
    }
    .menu li {
      display: inline;
    }
    .menu li a {
      border: 1px solid #eee;
      padding: 10px 15px;
      text-transform: uppercase;
      transition: background 0.5s ease;
      display:block;
    }
    .menu li a:focus {
      text-decoration: none;
    }
    .menu li a:hover {
      text-decoration: none;
      background: #ddd;
    }
    @media (max-width: 620px) {
      .menu li {
        display: block;
        width: 100%;
      }
    }
    <div class="menu">
      <ul>
        <li><a href="#/home">Home</a>
        </li>
        <li><a href="#/experience">Experience</a>
        </li>
        <li><a href="#/education">Education</a>
        </li>
        <li><a href="#/opensource">Open Source</a>
        </li>
        <li><a href="#/contact">Contact</a>
        </li>
      </ul>
    </div>

    默认锚定具有 display: inline 所有物你需要把它设置为 display:block 如果需要全宽或设置为 display:inline-block 根据文本确定尺寸。