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

时间:2018-02-12 20:06:38

标签: html css css3 text-alignment text-align

我想在下拉菜单中保留对齐文字,但我遇到了一些问题。我有这个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;

我可以再次看到该文本,但它没有在我想要的地方对齐。如何左对齐文本并使其保持可见?

&#13;
&#13;
$('.menu-btn').click(function() {
  $('nav').toggleClass('nav-open');
});
&#13;
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;
}
&#13;
<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>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

正如其他人已经指出的那样,文本实际上是左对齐的,但是由于菜单的宽度较大,您的屏幕尺寸可能会阻止它显示。 尝试将width元素的nav更改为相对于页面宽度的内容,例如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/

答案 1 :(得分:1)

问题来自于将width提供给导航时使用的遥控器。您应该使用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>