CSS 导航栏媒体查询-

问题描述 投票:0回答:0

我是一名设计师,现在担任网络开发人员(通过 YT 自学,哈哈) 为我的第一个客户开发导航栏,并努力使其在较小的设备上做出响应,并且对如何控制容器的宽度同时使其内容更小感到困惑。

代码如下,我附上了手机宽度的图片。已经针对笔记本电脑宽度进行了设计和编码。

我是否最好重新设计 MQ 中的按钮,或者只是使用 MQ 将其整体缩小?

笔记本电脑尺寸:
Laptop Size

手机尺寸:
Phone Size

Inspector-1200px,导航栏被切断(?):
Inspector-1200px,Navbar gets cut off (?)

Inspector->1200px,导航栏开始丢失徽标下方的按钮:
Inspector- >1200px,导航栏开始丢失徽标下方的按钮”/></p>
<p>HTML</p>
<pre><code><nav class="NavBar">
  <div class="logo">
    <span>
      <a href="Index.html">
        <img
          src="Assets\Wordmark\Dark.svg"
          alt="Alastair Smith Ceramics Brand logo and wordmark. Colour is Dark Chocolate."
        /> </a
    ></span>
  </div>

  <ul class="NavBarNav">
    <li class="NavItem">
      <button class="NavBtn">
        <a class="Nav-Link" state="active" href="Index.html">Home</a>
      </button>
    </li>
    <li>
      <button class="NavBtn">
        <a class="Nav-Link" href="About.html">About</a>
      </button>
    </li>

    <li>
      <button class="NavBtn">
        <a class="Nav-Link" href="Process.html">Creative Process</a>
      </button>
    </li>
    <li>
      <button class="NavBtn">
        <a class="Nav-Link" href="Gallery.html">Gallery</a>
      </button>
    </li>
    <li>
      <button class="NavBtn">
        <a class="Nav-Link" href="Contact.html">Contact</a>
      </button>
    </li>
    <li>
      <button class="NavBtn">
        <a class="Nav-Link" href="#shop">Shop</a>
      </button>
    </li>
  </ul>
</nav>

 CSS
       `your text`
</code></pre>
<pre><code>/* --Start of NavBar styling */
.Nav-Link {
  text-decoration: none;
}
.NavBar {
  /*NavBar nav div*/
  position: sticky;
  top: 0;
  height: 80px;
  width: 100vw;
  background-color: #ffecc0;
  font-size: 32px;
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: space-between;
  align-items: center;
  row-gap: 8px;
  margin: 0;
  opacity: 100;
  z-index: 10;
  overflow-x: hidden;
}

@media screen and (max-width: 1200px) {
  .NavBar {
    width: 100vw;
    font-size: 16px;
    padding-top: 0.5rem;
    row-gap: 4px;
    height: fit-content;
  }
}
/* Logo ofc */
.logo {
  padding-left: 3rem;
  padding-top: 0.5rem;
  background-color: #ffecc0;
}
#logo > {
  height: 80px;
}
.NavBarNav {
  /*NavButtons container*/
  background-color: #ffecc0;
  overflow: hidden;
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: right;
  align-items: right;
  margin: 0%;
  margin-top: 0%;
  margin-right: 20px;

  padding-inline-end: 0.5rem;
  top: 0%;
  position: sticky;
  list-style: none;
  width: 100vw;
  gap: 8px;
  z-index: 0;
}
@media screen and (max-width: 1200px) {
  .NavBarNav {
    padding: right 2rem;

    gap: 0.5rem;
    width: 100vw;
  }
}
.NavBtn {
  background-color: var(--cream-500);

  text-align: center;
  height: 59px;
  width: max-content;
  font-size: 12px;
  padding: 10px;
  border-radius: 8px;
  color: #21100b;
  border: #ffecc0;
  -webkit-transition-duration: 0.4s; /* Safari */
  transition-duration: 0.4s;
  text-decoration: none;
  overflow: hidden;
  cursor: pointer;
}

@media screen and (max-width: 1150) {
  .NavBtn {
    font-size: 8px;
    padding: 1rem;
    height: fit-content;
    width: min-content;
  }
}
/* NavBar Button animations */

.NavBtn:hover {
  background-color: #b79860;
  color: #21100b;
}

.NavBtn:focus,
.NavBtn:focus-within {
  /*
  Focus=within stops C700 being applied to whole navbar. 
  ---TO DO
  =fix pressed state*/
  background-color: #93713d; /* Cream 700 */
  color: #21100b;

  border: #21100b;
  border-width: 2px;
}

.Nav-Link {
  padding: 10px;

  font-size: 20px;
  color: #21100b;
}

@media screen and (max-width: 1150px) {
  .Nav-Link {
    padding: 3px;
    font-size: 10px;
  }
}
/* --END of NavBar styling */

</code></pre>
    </question>
	<answer tick=

我没有看到你使用设计中的字体系列。默认字体要宽得多。并且您的按钮应该具有 type 属性。

通常,人们会在移动导航上制作汉堡菜单,因为所有链接都不适合页面,而且设计师的工作也需要提前规划,所以你开始自己制作布局是件好事。

您可以在链接被切断的屏幕上添加一个用于打开菜单的按钮 - 这通常是最佳实践。但您也可以使用“Pixel Perfect”工具。它是浏览器的插件。您添加了很多无用的样式,它们什么也没做 - 找到并删除它们以清理混乱,然后使用上面的解决方案或至少使用 display: flex;弹性包裹:包裹; (但是第二个解决方案看起来很奇怪)。

也有将设计转换为 html/css 的工具,至少我听说过它们。

您应该在样式的开头添加此代码:

body {
    overflow: hidden;
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

我建议你去查看免费的 FreeCodeCamp 响应式网页设计课程,因为现在,我认为你应该使用一些工具来为你制作这个布局,否则你会很困难,而且可能没有目的。

css responsive-design media-queries
© www.soinside.com 2019 - 2024. All rights reserved.