如何在菜单中左对齐文本并保持文本可见?

How do I left align text in a menu and keep the text visible?

我想在下拉菜单中左对齐文本,但我遇到了一些问题。我有这个 HTML

 <nav>
       <a>Vote</a>
       <a>Search</a>
       <a>About</a>
 </nav>

和这个 CSS 用于下拉菜单

nav {
  display: none;
  width: 30rem;
  padding: 0rem;
  background-color: red;
  position: absolute;
  right: 0%;
  top: 100%;
  text-align: left;
}

.nav-open {
  display: block;
}

nav a {
  display: block;
  width: 100%;
  text-align: left;
  padding: 1.4rem 1.6rem;
  text-decoration: none;
  cursor: pointer;
  font-size: 1.2rem;
  color: #000;
}

但是如您所见,当您单击菜单图标时,文本甚至都不可见。有趣的是,当我改变时:

text-align: left;

text-align: center;

我又能看到文字了,但它没有对齐到我想要的位置。如何左对齐我的文本并使其可见?

$('.menu-btn').click(function() {
  $('nav').toggleClass('nav-open');
});
style* {
  margin: 0 auto;
  font-family: sans-serif;
}

body {
  margin: 0 auto;
  font-family: Benton Sans, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, Helvetica, Tahoma, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
}

header {
  width: 100%;
  background-color: orange;
  text-align: center;
  position: relative;
}

#pageTitle {
  display: flex;
  padding: 10px;
}

#pageTitle h2 {
  justify-content: center;
  /* align horizontal */
  align-items: center;
  width: 95%;
}

.menu-btn {
  position: absolute;
  display: inline-block;
  cursor: pointer;
}

.menu-btn div {
  position: absolute;
  left: 100%;
  top: 0%;
  padding-right: 8px;
  margin-top: -0.50em;
  line-height: 1.2;
  font-weight: 200;
  vertical-align: middle;
  z-index: 99;
}

.menu-btn span {
  display: block;
  width: 20px;
  height: 2px;
  margin: 4px 0;
  background: #989da1;
  z-index: 99;
}

nav {
  display: none;
  width: 30rem;
  padding: 0rem;
  background-color: red;
  position: absolute;
  right: 0%;
  top: 100%;
  text-align: left;
}

.nav-open {
  display: block;
}

nav a {
  display: block;
  width: 100%;
  text-align: left;
  padding: 1.4rem 1.6rem;
  text-decoration: none;
  cursor: pointer;
  font-size: 1.2rem;
  color: #000;
}

nav a:hover {
  background-color: #111;
  color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>

  <div id="pageTitle">
    <h2>Page Title</h2>

    <div class="mobile-nav">

      <button class="menu-btn" id="menu-btn">
        <div></div>
        <span></span>
        <span></span>
        <span></span>
     </button>

      <nav>
        <a>Vote</a>
        <a>Search</a>
        <a>About</a>

      </nav>
    </div>
  </div>
</header>

正如其他人已经指出的那样,文本实际上是左对齐的,但由于菜单宽度过大,您的屏幕尺寸可能会阻止它显示。 尝试将 nav 元素的 width 更改为与页面宽度相关的值,例如 80%:

nav {
  display: none;
  width: 80%;
  padding: 0rem;
  background-color: red;
  position: absolute;
  right: 0%;
  top: 100%;
  text-align: left;
}

https://jsfiddle.net/1y8n08aq/1/

问题出在给导航 width 时使用的 rem 单位。您应该使用 vw 视口宽度。这是相对于屏幕宽度从 0 到 100 将视口宽度转换为百分比。

希望对您有所帮助

$('.menu-btn').click(function() {
  $('nav').toggleClass('nav-open');
});
style* {
  margin: 0 auto;
  font-family: sans-serif;
}

body {
  margin: 0 auto;
  font-family: Benton Sans, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, Helvetica, Tahoma, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
}

header {
  width: 100%;
  background-color: orange;
  text-align: center;
  position: relative;
}

#pageTitle {
  display: flex;
  padding: 10px;
}

#pageTitle h2 {
  justify-content: center;
  /* align horizontal */
  align-items: center;
  width: 95%;
}

.menu-btn {
  position: absolute;
  display: inline-block;
  cursor: pointer;
}

.menu-btn div {
  position: absolute;
  left: 100%;
  top: 0%;
  padding-right: 8px;
  margin-top: -0.50em;
  line-height: 1.2;
  font-weight: 200;
  vertical-align: middle;
  z-index: 99;
}

.menu-btn span {
  display: block;
  width: 20px;
  height: 2px;
  margin: 4px 0;
  background: #989da1;
  z-index: 99;
}

nav {
  display: none;
  width: 100vw;
  padding: 0rem;
  background-color: red;
  position: absolute;
  right: 0%;
  top: 100%;
  text-align: left;
}

.nav-open {
  display: block;
}

nav a {
  display: block;
  width: 100%;
  text-align: left;
  padding: 1.4rem 1.6rem;
  text-decoration: none;
  cursor: pointer;
  font-size: 1.2rem;
  color: #000;
}

nav a:hover {
  background-color: #111;
  color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>

  <div id="pageTitle">
    <h2>Page Title</h2>

    <div class="mobile-nav">

      <button class="menu-btn" id="menu-btn">
        <div></div>
        <span></span>
        <span></span>
        <span></span>
     </button>

      <nav>
        <a>Vote</a>
        <a>Search</a>
        <a>About</a>

      </nav>
    </div>
  </div>
</header>