减小屏幕宽度时出现导航栏问题

Posted

技术标签:

【中文标题】减小屏幕宽度时出现导航栏问题【英文标题】:Navigation Bar Problem while decreasing screen width 【发布时间】:2021-11-09 02:00:58 【问题描述】:

我正在尝试创建带有图像徽标、标题、导航链接和一些社交链接的导航栏。我为每个创建了 4 个 div。每当我使用响应式减小屏幕宽度时,导航栏中会出现白色,并随着我减小屏幕宽度而向左增加。 这里还有一些图片:

您还可以看到图片顶部的宽度

这里的问题是我减小了屏幕宽度

/* Reset */

* 
  margin: 0;
  padding: 0;
  box-sizing: border-box;


@font-face 
  font-family: PollerOne;
  src: url('../../fonts/Poller_One/PollerOne-Regular.ttf');



/* Styling Navigation Bar */

#navbar 
  display: flex;
  position: relative;
  align-items: center;
  height: 65px;
  width: 100%;


#navbar::before 
  content: "";
  position: absolute;
  background-color: #262626;
  height: 65px;
  width: 100%;
  z-index: -2;


.navbar 
  color: white;
  margin: 7px 7px;



/* Styling Logo */

#logo 
  background-color: black;
  height: 45px;
  width: 45px;
  min-width: 45px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;


#logo img 
  filter: invert();
  width: 25px;



/* Styling Title */

#title 
  font-family: PollerOne;
  min-width: 160.5px;
  font-size: 1.4rem;
  margin-left: 0px;



/* Styling Nav links */

#nav-links 
  margin: 0 auto;


#nav-links ul 
  list-style-type: none;
  display: flex;


.nav-links 
  font-size: 20px;
  margin: 0 20px;
  /* padding: 5px 10px; */
  position: relative;
  cursor: pointer;



/* Animation Under Nav Links */

.nav-links::after 
  content: "";
  position: absolute;
  width: 100%;
  height: 2px;
  bottom: -4px;
  background: linear-gradient(white 0 0) center/0% 100% no-repeat;
  display: block;


:hover.nav-links::after 
  animation: pulse 300ms linear;
  animation-fill-mode: forwards;


@keyframes pulse 
  to 
    background-size: 100% 100%;
  



/* Styling Social Links */

#social-links 
  margin-left: auto;
  display: flex;


.social-links 
  width: 30px;
  height: 30px;
  border-radius: 11px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 5px;


.social-links img 
  width: 27px;
  transition: all 200ms ease;


.social-links img:hover 
  transform: scale(1.5)



/* Utility Class */
<div id="navbar">
  <div id="logo" class="navbar">
    <img src="./img/bag.png" >
  </div>
  <div id="title" class="navbar">Meals Point</div>
  <div id="nav-links" class="navbar">
    <ul>
      <li class="nav-links"><a id="link-1">Home</a></li>
      <li class="nav-links"><a id="link-2">About</a></li>
      <li class="nav-links"><a id="link-3">Services</a></li>
      <li class="nav-links"><a id="link-4">Recipes</a></li>
      <li class="nav-links"><a id="link-5">Contact</a></li>
    </ul>
  </div>
  <div id="social-links" class="navbar">
    <a class="social-links" href="https://www.twitter.com"><img src="./img/twitter.png" id="link-1"></a>
    <a class="social-links" href="https://www.facebook.com"><img src="./img/facebook.png" id="link-2"></a>
    <a class="social-links" href="https://www.instagram.com"><img src="./img/instagram.png" id="link-3"></a>
  </div>
</div>

【问题讨论】:

【参考方案1】:

尝试添加到#navbarfloat: left;

/* Reset */

* 
  margin: 0;
  padding: 0;
  box-sizing: border-box;


@font-face 
  font-family: PollerOne;
  src: url('../../fonts/Poller_One/PollerOne-Regular.ttf');



/* Styling Navigation Bar */

#navbar 
  display: flex;
  position: relative;
  align-items: center;
  height: 65px;
  min-width: 100%;
  float: left;


#navbar::before 
  content: "";
  position: absolute;
  background-color: #262626;
  height: 65px;
  min-width: 100%;
  z-index: -2;


.navbar 
  color: white;
  margin: 7px 7px;



/* Styling Logo */

#logo 
  background-color: black;
  height: 45px;
  width: 45px;
  min-width: 45px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;


#logo img 
  filter: invert();
  width: 25px;



/* Styling Title */

#title 
  font-family: PollerOne;
  min-width: 160.5px;
  font-size: 1.4rem;
  margin-left: 0px;



/* Styling Nav links */

#nav-links 
  margin: 0 auto;


#nav-links ul 
  list-style-type: none;
  display: flex;


.nav-links 
  font-size: 20px;
  margin: 0 20px;
  /* padding: 5px 10px; */
  position: relative;
  cursor: pointer;



/* Animation Under Nav Links */

.nav-links::after 
  content: "";
  position: absolute;
  width: 100%;
  height: 2px;
  bottom: -4px;
  background: linear-gradient(white 0 0) center/0% 100% no-repeat;
  display: block;


:hover.nav-links::after 
  animation: pulse 300ms linear;
  animation-fill-mode: forwards;


@keyframes pulse 
  to 
    background-size: 100% 100%;
  



/* Styling Social Links */

#social-links 
  margin-left: auto;
  display: flex;


.social-links 
  width: 30px;
  height: 30px;
  border-radius: 11px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 5px;


.social-links img 
  width: 27px;
  transition: all 200ms ease;


.social-links img:hover 
  transform: scale(1.5)



/* Utility Class */
<div id="navbar">
  <div id="logo" class="navbar">
    <img src="./img/bag.png" >
  </div>
  <div id="title" class="navbar">Meals Point</div>
  <div id="nav-links" class="navbar">
    <ul>
      <li class="nav-links"><a id="link-1">Home</a></li>
      <li class="nav-links"><a id="link-2">About</a></li>
      <li class="nav-links"><a id="link-3">Services</a></li>
      <li class="nav-links"><a id="link-4">Recipes</a></li>
      <li class="nav-links"><a id="link-5">Contact</a></li>
    </ul>
  </div>
  <div id="social-links" class="navbar">
    <a class="social-links" href="https://www.twitter.com"><img src="./img/twitter.png" id="link-1"></a>
    <a class="social-links" href="https://www.facebook.com"><img src="./img/facebook.png" id="link-2"></a>
    <a class="social-links" href="https://www.instagram.com"><img src="./img/instagram.png" id="link-3"></a>
  </div>
</div>

【讨论】:

嘿,我的代码整洁干净,我的意思是如果有任何改进告诉我会做的话,其他人很容易理解 嘿伙计 :) 如果你问我你的代码没问题 嘿伙计,当我向下滚动时出现一些问题,灰色背景固定到顶部并且不需要固定导航栏 啊,对不起,伙计,现在检查一下,我更新了答案

以上是关于减小屏幕宽度时出现导航栏问题的主要内容,如果未能解决你的问题,请参考以下文章

将标签栏控制器与导航控制器一起使用时出现问题

使用 SwiftUI 将设备旋转到横向时出现导航栏

从自定义大标题导航栏过渡到常规导航栏时出现黑框

滑动 ViewController 时出现导航栏错误

更改导航栏以居中标题折叠的屏幕宽度

从大标题页过渡到小标题页时出现导航间隙