【问题标题】:CSS button hover effects not working with id'sCSS 按钮悬停效果不适用于 id
【发布时间】:2022-02-11 05:31:22
【问题描述】:

我没有任何内联样式。由于我是自学者,给您带来的不便,我深表歉意,这是我的第一个问题。

非常感谢您的支持。

#submit {
  background-color: yellow;
  font-weight: bold;
  font-size: 15px;
  border-width: medium;
}

#submit a:hover {
  background-color: red;
}
<form id="form">
  <label for="email" id="email-label"></label><br>
  <input id="email" type="email" required name="Form-elements" placeholder="Enter your Email Address" /><br><br>
  <a href="https://www.freecodecamp.org/email-submit">
    <input type="submit" id="submit" value="Get Started"></a>

【问题讨论】:

  • 欢迎来到 Stack Overflow。你能添加你正在使用的 HTML 吗?它将更容易诊断您的问题。谢谢!
  • 欢迎来到 SO!我建议所有新用户访问How to Ask,以获取有关如何撰写最能让社区为您提供帮助的帖子的提示。请注意,包含minimal reproducible example 将为您的问题提供必要的背景信息以供您理解。此外,包括重现问题的步骤、预期的输出/结果和实际输出/结果以及它们之间的差异是有帮助的。祝你好运,编码愉快!

标签: html css


【解决方案1】:

这里有几个问题:

  1. 您已在锚点 (&lt;a&gt;) 内放置了 &lt;input&gt;。请注意interactive elements are not permitted children of the anchor element。你可以想象如果是这样的问题——浏览器将如何确定你打算与哪个元素交互——锚点,还是它包含的按钮?如果你想要一个看起来像按钮的锚点,你可以简单地使用 CSS 来适当地设置它的样式。格式错误的 HTML 可能会导致奇怪且难以调试的问题,因此我建议您解决此问题。
  2. 即使使用格式不正确的 HTML,您的样式也不会像您在此处设置的那样完全正确地匹配。您有一个包含&lt;input&gt;&lt;a&gt;,但选择器#submit a:hover 读取为“定位一个悬停的&lt;a&gt;,它位于inside 的id 为#submit 的元素中”。因此,该规则与实际情况相反。您可以通过多种方式重写它以使其匹配;这是一个:

#submit {
  background-color: yellow;
  font-weight: bold;
  font-size: 15px;
  border-width: medium;
}

a:hover #submit {
  background-color: red;
}
<form id="form">
  <label for="email" id="email-label"></label><br>
  <input id="email" type="email" required name="Form-elements" placeholder="Enter your Email Address" /><br><br>
  <a href="https://www.freecodecamp.org/email-submit">
    <input type="submit" id="submit" value="Get Started"></a>

...但是,我建议您不要单独使用此解决方案,而是清理您的 HTML 并从坚实的基础开始。

【讨论】:

  • Tysm 为您提供非常详细的答案。 “用户故事 #12:当我单击 #submit 元素时,电子邮件被提交到静态页面(使用此模拟 URL:freecodecamp.com/email-submit)。”我如何确保我的提交按钮将我带到另一个页面而不在锚标记内使用它?
  • @React_ing - 非常欢迎你 :) 在某种程度上这取决于所使用的技术。但是对于无框架站点的简单解决方案there is a SO post that addresses how you could accomplish this
【解决方案2】:

我觉得应该是这样的..

#submit {
  background-color: yellow;
  font-weight: bold;
  font-size: 15px;
  border-width: medium;
}

#submit:hover {
  background-color: red;
}
<form id="form" action="https://www.freecodecamp.org/email-submit">
  <label for="email" id="email-label"></label><br>
  <input id="email" type="email" required name="Form-elements" placeholder="Enter your Email Address" /><br><br>
  <input type="submit" id="submit" value="Get Started">
</form>

【讨论】:

  • tysm 为您提供解决方案 :) 非常感谢您的支持!
  • 也许你正在使用 firefox.. background-clip: text 在 firefox 上不能正常工作.. -webkit-background-clip: text 在 chromium 浏览器上可以工作
猜你喜欢
  • 2014-07-05
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2011-09-10
  • 2012-11-05
相关资源
最近更新 更多