已复制 css 样式在两个元素上的行为不同?

Copied css styling behaves differently on two elements?

我还是 HTML 和 CSS 的新手,无法理解这一点。我有两个包含 <li> 元素的 <ul> 列表。我用第一个 ul 列表中的一个 li 元素创建了一个按钮,然后复制了 html 和 css 但是在悬停时,它们的行为不同。我已将它们分成两个 类 以尝试找出问题所在,但我不知道如何解决它。

按钮 1(在导航中)- 整个按钮充当元素并在悬停时改变颜色

<nav>
        <ul>
            <li><img src="Women in Tech-logos_transparent.png" width="150px"><a href="Homepage.html" class="Logo"></a></li>
            <li><a href="Homepage.html">Home</a></li>
            <li><a href="">About Us</a></li>
            <li class="SignUp"><a href="">Sign Up</a></li>
        </ul>
      </nav>

按钮 2 - 只有按钮内的文本充当元素,并且只有文本背景颜色在悬停时发生变化。

<div class="IntroCTA">
        <ul>
            <li class="SecondaryButton"><a href="">Learn More</a></li>
            <li class="SignUp2"><a href="">Sign Up</a></li>
        </ul>
      </div>

还有 CSS 在拆分为两个之前我在两者上使用的样式

    .SignUp {
  background-color: #F3ED01;
  text-decoration: none;
  text-align: center;
  font-size: 16px;
  border-radius: 50px;
  height: 40px;
  line-height: 40px;
  width: 150px;
  margin-right: 40px;
  margin-left: 20px;
  padding: 0 0 0 0;
}

.SignUp :hover {
  text-decoration: none;
  background-color: white;
  border-radius: 50px;
}

.SignUp a {
  
  text-decoration: none;
}

我已经创建了一个 jsfiddle 代码。这可能真的很简单,我只是想念它!

非常感谢任何意见或建议!

.SignUp2 :hover

你不需要把 space 放在那里。

.SignUp2:hover

你应该像这样使用它。

您在列表中设置的样式是“list”而不是“a”标签。 要解决此问题,请将 a 添加到您的选择器:

来自

li.SignUp2 a

li.SignUp2 a

并添加显示:块;或显示:inline-block;

li.SignUp2 a {
    display: block;


    background-color: #F3ED01;
    text-decoration: none;
    text-align: center;
    font-size: 16px;
    border-radius: 50px;
    height: 40px;
    line-height: 40px;
    width: 150px;
    margin: 10px 10px 10px 10px;
}

(已编辑)

区别(在你的 JS fiddle 中)在于 a 标签的 li 父元素和第二个 a 标签本身:在第一种情况下(导航菜单)lidisplay: inline-block,在第二种情况下,您对其应用了 float: left,这使得应用的 display: block 无效并将其更改为 block .这会改变其中 a 标签的大小,因此会改变 background-color 悬停时区域的大小。

如果您将两个 li 都设置为 inline-block,删除浮动并将 display: block; 添加到其中的 a 标记,它们的行为应该相同。

请使用相同的 class 应用相同的 css