html - 导航栏切换器图标在激活时翻转到左侧。覆盖左对齐的 Logo

标签 html css bootstrap-4

我在 Bootstrap 4 中使用可折叠的导航栏。我将菜单项右对齐, Logo 左对齐。当屏幕尺寸减小并且导航栏切换器处于事件状态时,菜单项隐藏(在右侧)但切换器图标出现在左侧。它与 Logo 重叠。我希望切换器保持在右侧。

我试过给它绝对位置,使用 navbar-toggler-right 等。我也试过将按钮放在 div 中并使用 justify-content-between。

这是我编写的代码的 Codepen 链接。

https://codepen.io/amandathedev/pen/bOrZZq

图片都是本地托管的,因为这只是练习元素,所以不会出现在Codepen预览中。我希望仍然可以很容易地判断 Logo 发生了什么。

谢谢!

HTML:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Modern Calligraphy</title>
    <!-- Required meta tags -->
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, shrink-to-fit=no"
    />

    <link rel="shortcut icon" type="image/x-icon" href="logo.ico" />

    <!-- Font Awesome -->
    <link
      rel="stylesheet"
      href="https://use.fontawesome.com/releases/v5.6.3/css/all.css"
      integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/"
      crossorigin="anonymous"
    />

    <!-- Bootstrap CSS -->
    <link
      rel="stylesheet"
      href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
      integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
      crossorigin="anonymous"
    />

    <!-- Google Fonts -->
    <link
      href="https://fonts.googleapis.com/css?family=Raleway:300,400,700"
      rel="stylesheet"
    />

    <link rel="stylesheet" href="styles.css" />
  </head>
  <body>
    <div class="grid-container">
      <div class="grid-item" id="header">
        <!-- Navbar -->
        <nav class="navbar bg-transparent navbar-expand-sm">
          <button
            class="navbar-toggler"
            type="button"
            data-toggle="collapse"
            data-target="#collapsibleNavbar">
            <span class="navbar-toggler-icon mr-auto"><i class="fas fa-bars"></i></span>
          </button>
          <img src="logo5.png" alt="Logo" class="navbar-brand mr-auto" />
          <div class="collapse navbar-collapse" id="collapsibleNavbar">
            <ul class="navbar-nav ml-auto">
              <li class="nav-item cool-link">
                <a class="nav-link" href="#">About</a>
              </li>
              <li class="nav-item cool-link">
                <a class="nav-link" href="#">Order</a>
              </li>
              <li class="nav-item cool-link">
                <a class="nav-link" href="#">Learn</a>
              </li>
              <li class="nav-item cool-link">
                <a class="nav-link" href="#">Contact</a>
              </li>
            </ul>
          </div>
        </nav>
      </div>
      <div class="grid-item" id="menu">Menu</div>
      <div class="grid-item" id="main">
        <div class="box">
          <img
            src="personalized.jpg"
            alt="Hand lettered calligraphy quote on paper with fruit"
          />
        </div>
        <div class="box">
          <img
            src="handLettering.jpg"
            alt="Hand lettered quote in open book on map"
          />
        </div>
        <div class="box">
          <img
            src="digital.jpg"
            alt="Digital calligraphy drawn on iPad held by woman with stylus"
          />
        </div>
        <div class="box">
          <img
            src="tutorials.jpg"
            alt="Hand lettered quote on notebook with markers"
          />
        </div>
      </div>
      <div class="grid-item" id="footer">
        <ul>
          <li>
            <a href="#"> <i class="far fa-envelope"></i> Contact</a>
          </li>
          <li><a href="#">Privacy</a></li>
          <li><a href="#">Info</a></li>
        </ul>
        <span>Copyright 2018, Modern Calligraphy Inc.</span>
      </div>
    </div>

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script
      src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
      integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
      crossorigin="anonymous"
    ></script>
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
      integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
      crossorigin="anonymous"
    ></script>
    <script
      src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
      integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
      crossorigin="anonymous"
    ></script>
  </body>
</html>

CSS:

body {
  background-image: url("concrete-texture.png");
}

.grid-container {
  display: grid;
  font-family: "Raleway", sans-serif;
  grid-template-columns: 10em auto auto;
  grid-template-rows: 1fr 5.5fr 1fr;
  grid-gap: 1px;
  padding: 1px;
  grid-template-areas:
    "header header header header"
    "menu main main main"
    "footer footer footer footer";
}

/* .grid-item {
  border: 1px solid black;
} */

#header {
  grid-area: header;
}

/* Navbar */
.nav-link {
  display: inline-block;
  font-size: 1em;
  letter-spacing: 1px;
  text-decoration: none;
}

.navbar-toggler {
    width: 1em;
    float: right;
    border: none;
}

.navbar-toggler-icon {
    position: fixed;
}

.cool-link {
  display: inline-block;
  color: #000;
  text-decoration: none;
}

.cool-link::after {
  content: "";
  display: block;
  width: 0;
  height: 2px;
  background: black;
  transition: width 0.4s;
}

.cool-link:hover::after {
  width: 95%;
}

@media (max-width: 600px) {

}

#menu {
  grid-area: menu;
}

#main {
  grid-area: main;
  display: grid;
  grid-template-columns: auto auto;
  grid-gap: 5px;
}

img {
  max-width: 100%;
}

.box {
  background-color: burlywood;
  padding: 10px;
}

a {
  color: #292929;
  text-decoration: none;
}

#footer {
  grid-area: footer;
  background-color: #dadada;
  border: none;
  padding: 20px;
}

#footer ul {
  display: flex;
  justify-content: flex-end;
}

#footer li {
  padding: 0 10px;
  list-style: none;
}

#footer a:hover {
  text-decoration: none;
}

#footer span {
  display: flex;
  justify-content: flex-end;
  font-size: 0.9em;
}

最佳答案

仔细查看您的 HTML。您将按钮放在 HTML 中 Logo 的上方。您无需更改 Codepen 中的 CSS 即可将切换器向右移动,但要使其更好地对齐,您需要更多样式。

将您编写的 Logo 图像如下所示并将其放在按钮上方:

<!-- Navbar -->
        <nav class="navbar bg-transparent navbar-expand-sm">

          <button
            class="navbar-toggler"
            type="button"
            data-toggle="collapse"
            data-target="#collapsibleNavbar">
            <span class="navbar-toggler-icon mr-auto"><i class="fas fa-bars"></i></span>
          </button>

          <img src="logo5.png" alt="Logo" class="navbar-brand mr-auto" />

切换到这个:

<!-- Navbar -->
        <nav class="navbar bg-transparent navbar-expand-sm">

          <img src="logo5.png" alt="Logo" class="navbar-brand mr-auto" />

          <button
            class="navbar-toggler"
            type="button"
            data-toggle="collapse"
            data-target="#collapsibleNavbar">
            <span class="navbar-toggler-icon mr-auto"><i class="fas fa-bars"></i></span>
          </button>

关于html - 导航栏切换器图标在激活时翻转到左侧。覆盖左对齐的 Logo ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952243/

相关文章:

html - 使用 CSS 创建响应式网页(需要有关页面宽度的帮助)

jquery - 淡入背景颜色(按钮)和下拉菜单 superfish 菜单

youtube - Bootstrap 4轮播和YouTube视频

html - 基于所选单选按钮和元素类的 CSS 选择器

javascript - 如何组织我的 div 标签?

javascript - 将无序列表项中的前两个元素内联对齐,其余每行对齐一个

javascript - 从 html 中删除标签的方法的安全问题

html - 窗口最小化时保留 HTML 页面的位置

html - 我的下拉菜单显示在 Bootstrap 的轮播元素后面

jquery - Bootstrap : Control multiple tab panels with single tab nav