css 插入图像时导航栏悬停效果不再起作用

kxkpmulp  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(142)

我有一个导航栏内的标题标签。标题标签是灵活的。导航栏太。在导航栏中,我有三个标签与显示值内联块;和填充的高度和宽度。到目前为止一切顺利。当我悬停链接的悬停效果显示在整个高度。

    • 问题:**如果我在第一个链接上添加一个图片,我不能使图片高于10像素,因为填充会影响整个导航栏的高度。
    • 问题:**如何将图像添加到链接而不影响导航栏的高度?
    • 我的密码**
body {
  margin: 0;
  padding: 0;
} 

header {
  display:flex;
  justify-content: space-between;
  align-items: center;
  background: green;
  position: fixed;
  top: 0;
  overflow: hidden;
  width:100%;
}

.logo {
  background: yellow;
  display: flex;
  align-items: center;
}

.navbar {
  background-color: #333;
  display: flex;
  align-items: center;
}

.navbar a:not(:first-child) {
 display: inline-block;
}

.navbar a {
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 12px;
  
}

.navbar a:hover {
  background: #ddd;
  color: black;
}

.flex {
  gap:10px;
  display: flex;
  align-items: center;
  font-size: 12px;
}

.main {
  margin-top: 180px;
  color: color;
  height:50vh;
  background: black;
  
}
<div>
  <header>
    <div class="logo">
      <img src="https://via.placeholder.com/40">Logo
    </div>
    <nav class="navbar">  
      <a href="#home">
        
        <div class="flex">
          <div>
            <img src="https://via.placeholder.com/30">
          </div>
          <div>10000</div>
        </div>
      </a>
      <a href="#news">News</a>
      <a href="#contact">Contact</a>    
    </nav>    
  </header>

  <main class="main">
    text
  </main>
</div>
    • 预期**

一个二个一个一个

62lalag4

62lalag41#

使用flex行为来对齐和拉伸,而不是使用其他标记

在下面的代码片段中,我删除了包含img的第一个a元素中的额外标记。相反,我将所有a标签都设置为display: inline-flex,并删除了第一个标签中的垂直填充。然后,使用父nav元素的align-items属性,我确保每个a标签都具有相同的全高,以实现一致的悬停效果。

body {
  margin: 0;
  padding: 0;
} 

header {
  display:flex;
  justify-content: space-between;
  align-items: center;
  background: green;
  position: fixed;
  top: 0;
  overflow: hidden;
  width:100%;
}

.logo {
  background: yellow;
  display: flex;
  align-items: center;
}

.navbar {
  background-color: #333;
  display: flex;
  align-items: stretch;
}

.navbar a {
 display: inline-flex;
}

.navbar a {
  color: #f2f2f2;
  justify-content: center;
  align-items: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 12px;
}

.navbar a:first-of-type {
  padding-top:0;
  padding-bottom:0;
}

.navbar a:hover {
  background: #ddd;
  color: black;
}

.flex {
  gap:10px;
  display: flex;
  align-items: center;
  font-size: 12px;
}

.main {
  margin-top: 180px;
  color: color;
  height:50vh;
  background: black;
  
}
<div>
  <header>
    <div class="logo">
      <img src="https://via.placeholder.com/40">Logo
    </div>
    <nav class="navbar">  
      <a href="#home">
        <img src="https://via.placeholder.com/30">
        10000
      </a>
      <a href="#news">News</a>
      <a href="#contact">Contact</a>    
    </nav>    
  </header>

  <main class="main">
    text
  </main>
</div>

相关问题