【问题标题】:recaptcha being overridden by CSS stylerecaptcha 被 CSS 样式覆盖
【发布时间】:2014-08-05 20:13:24
【问题描述】:

我正在尝试将 recaptcha 插入我网站上的表单中。

我的 CSS 覆盖了 repaptcha 小部件的样式并使它看起来很糟糕..

我已将其范围缩小到下面的 body div 样式,这些样式会改变重新验证码的显示方式:

#body #content div {
    width :960px;
    background :transparent url("../images/bg-content-bottom.png");
    background-position :center bottom;
    background-repeat :no-repeat;
    padding-bottom :22px;
}
#body #content div div {
    width :860px;
    padding :10px 50px 20px 50px;
    background :transparent url("../images/bg-content.png");
    background-position :center center;
    background-repeat :repeat-y;
}

我怎样才能让这些停止改变recaptcha的出现方式?

非常感谢您的宝贵时间, 詹姆斯

【问题讨论】:

  • 你能做一个小提琴吗?
  • 你能把它弄好吗@jsfiddle.net

标签: css recaptcha


【解决方案1】:

由于这个原因,使用这样的全局选择器不是一个好习惯,您的div 选择器不够具体,因此验证码会继承样式。

有关编写更好的 CSS 的一些提示,请参阅此处:https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS

您应该更具体地使用您的样式选择器并将类放在您的子元素上,如下所示:

#body #content .container {
    width: 960px;
    background: transparent url("../images/bg-content-bottom.png");
    background-position: center bottom;
    background-repeat: no-repeat;
    padding-bottom: 22px;
}

#body #content .container .pageContent {
    width: 860px;
    padding: 10px 50px 20px 50px;
    background: transparent url("../images/bg-content.png");
    background-position: center center;
    background-repeat: repeat-y;
}

或者,作为一种快速修复,您可以覆盖验证码的样式,尽管这确实不是一个理想的解决方案,因为 !important 声明将导致这些覆盖这些元素的任何其他样式。

#recaptcha_widget_div,
#recaptcha_widget_div div {
    width: auto !important;
    padding: 0 !important;
    background: none !important;
}

#recaptcha_widget_div a {
    font-size: 1.0em !important;
}

【讨论】:

  • 您好,感谢您的帮助。你可能会说我不知道​​我在用 CSS 做什么。你有什么好的网络资源可以很好地介绍吗?我会慢慢尝试并更具体地使用我的样式选择器。与此同时,通过快速修复,我将它复制并粘贴到我的 CSS 中,但它并没有完全奏效,我还需要做些什么吗?再次感谢!
  • @user3894741 绝对是Mozilla Developer Network。你似乎有一个基本的了解,所以试试这篇关于 CSS 最佳实践的文章:developer.mozilla.org/en-US/docs/Web/Guide/CSS/…。避免使用 W3Schools.com,因为他们的教程确实不是最好的。
  • @user3894741 至于我的代码不起作用,我注意到在您的 CSS 文件中,您的 CSS 文件中还有其他答案的代码,我建议删除它,因为它会覆盖我代码中的样式因为它在代码中的 CSS 之后,否则可能是样式在其他地方被覆盖,在这种情况下,您可以在 CSS 值之后添加 !important 以确保不会发生这种情况。我已经更新了我的答案以反映这一点,尽管我强烈建议首先尝试其他解决方案,使您的父选择器更具体。
  • 您好,该网站看起来非常好,谢谢。如此清晰的解释。因此,添加了 !important 后,我​​的页面正在成形,只需要通过在您的代码中添加一些额外的位来覆盖我尝试过的字体,但它没有奏效。不幸的是,还有一些填充问题和底部边框。很抱歉很痛苦。
  • @user3894741 同样,要完全摆脱这个问题,您需要编辑样式而不使用div div 全局选择器,否则您将不断添加可能破坏其他代码的修复程序。您所描述的问题是因为验证码中的a 是从您的CSS 中的其他位置继承36px 的字体大小,您还需要覆盖它,我再次编辑了我的代码给您一个示例.
【解决方案2】:

使用浏览器的“检查元素”功能为 recaptcha 元素找到唯一的选择器。为该元素创建一个特定的 css 规则,并覆盖使您的显示变得丑陋的部分。

试试这个 CSS:

#recaptcha_privacy{font-family:helvetica, sans-serif!important;font-size:8pt!important;
#recaptcha_widget_div{padding:0!important;}

!important 可能需要也可能不需要。您可以通过在 recaptcha_widget_div 的 css 中添加 margin-left 来将 recaptcha 向右移动,以显示在您需要的位置。但是,您可能必须根据用户视口的宽度以不同方式处理该部分。

【讨论】:

  • 谢谢你,如果我给你一个网站地址会不会有帮助...jamesrobinharper.co.uk/donate.phpjamesrobinharper.co.uk/css/style.css(对不起所有凌乱的业余​​代码)
  • 我已经编辑了我的答案,请尝试我添加的css。
  • 非常感谢您的帮助。所以我只是将它直接复制并粘贴到我的 CSS 中。我还有什么需要做的吗?目前还没有完全奏效。
猜你喜欢
  • 2022-01-21
  • 2020-07-31
  • 2013-07-08
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2021-09-08
相关资源
最近更新 更多