css - 如何在 HTML 输入对象下使用 JavaScript 覆盖包含 '!important' 的 css?

标签 css overriding onmouseover onmouseout

<分区>

我实际上是在为 wordpress 开发一个插件,但我在动态设置按钮形式 (input[type="submit"]) 时遇到问题,因为一些 wordpress 主题使用“!重要的”属性。

我想覆盖在 HTML 输入对象下使用 JavaScript,因为我想使用 php 调用一些 css 值。

在下面的演示中,我自愿将“!important”属性放在 css 样式中以尝试覆盖它。

DEMO

input[type="submit"] {
    font-family: FontAwesome, 'Diplomata SC', "Helvetica Neue", helvetica, arial, sans-serif;
    font-weight: bold;
    text-transform: uppercase;
    display:block;
    background-color: #333333!important;
    color: #FFFFFF!important;
    padding: 5px 11px;
    letter-spacing: 2px;
    border: none;
    cursor: pointer;
    font-size: 15x;		
    border-radius: 3px;
    box-shadow: 0 -3px rgba(0, 0, 0, 0.14) inset;
}

input[type="submit"]:hover {
  background-color: #27ccc0!important;
  color: #FFFFFF!important;
}
<input 
onmouseover="this.style.backgroundColor='#6ce033'; this.style.color='#FFF'; return true;"
onmouseout="this.style.backgroundColor='#40c200'; this.style.color='#FFF'; return true;"
type="submit">

<?php
function add_button($id) {
	
	$stored_meta = get_post_meta($id);
	$btn_bg_color = esc_attr( $stored_meta['btn_bg_color'][0]);
	$btn_txt_color = esc_attr( $stored_meta['btn_txt_color'][0]);
	$hover_btn_bg_color = esc_attr( $stored_meta['hover_btn_bg_color'][0]);
	$hover_btn_txt_color = esc_attr( $stored_meta['hover_btn_txt_color'][0]);
	



echo '<input onmouseover="this.style.backgroundColor='."'".$btn_bg_color."'".'; this.style.color='."'".$btn_txt_color."'".'; return true;"
	onmouseout="this.style.backgroundColor='."'".$hover_btn_bg_color."'".'; this.style.color='."'".$hover_btn_txt_color."'".'; return true;" type="submit">'

?>
}

上面是我想做的具体例子。根据帖子 ID 更改样式。

最佳答案

由于您似乎没有找到上一个答案中的哪一个可以解决您的问题,这里有一个示例实现。

input[type="submit"] {
    font-family: FontAwesome, 'Diplomata SC', "Helvetica Neue", helvetica, arial, sans-serif;
    font-weight: bold;
    text-transform: uppercase;
    display:block;
    background-color: pink!important;
    color: #FFFFFF!important;
    padding: 5px 11px;
    letter-spacing: 2px;
    border: none;
    cursor: pointer;
    font-size: 15x;		
    border-radius: 3px;
    box-shadow: 0 -3px rgba(0, 0, 0, 0.14) inset;
}

input[type="submit"]:hover {
  background-color: red!important;
  color: #FFFFFF!important;
}
<input onmouseover="this.setAttribute('style','background: #6ce033 !important; color: #fff !important;');" onmouseout="this.setAttribute('style','background: #40c200 !important; color: #fff !important;');" type="submit">

有一个错误,按钮最初是粉红色的,直到您将鼠标悬停在它上面时才会改变。您可以通过向输入添加唯一 ID,然后在输入后立即创建脚本来立即更改输入字段的样式属性来解决此问题。

input[type="submit"] {
    font-family: FontAwesome, 'Diplomata SC', "Helvetica Neue", helvetica, arial, sans-serif;
    font-weight: bold;
    text-transform: uppercase;
    display:block;
    background-color: pink!important;
    color: #FFFFFF!important;
    padding: 5px 11px;
    letter-spacing: 2px;
    border: none;
    cursor: pointer;
    font-size: 15x;		
    border-radius: 3px;
    box-shadow: 0 -3px rgba(0, 0, 0, 0.14) inset;
}

input[type="submit"]:hover {
  background-color: red!important;
  color: #FFFFFF!important;
}
<input
  onmouseover="
    this.setAttribute('style',
      'background: #6ce033 !important; color: #fff !important;'
    );"
  onmouseout="
    this.setAttribute('style',
      'background: #40c200 !important; color: #fff !important;'
    );"
  type="submit"
  id="button_ID" />

<script>
  var button = document.getElementById("button_ID");
  button.setAttribute('style',
    'background: #40c200 !important; color: #fff !important;'
  );
</script>

但是请注意,这两种解决方案都非常棘手。有更好的方法来做这样的事情,但显然这超出了这个问题的范围。


你就不能 add a class to the input ?

<罢工>
input[type="submit"].some-override-class {
    background: #40c200 !important;
    color: #fff !important;
}

input[type="submit"].some-override-class:hover {
    background: #6ce033 !important;
    color: #fff !important;
}

覆盖现有 CSS 的最佳方法是使用其他类、ID 或上下文进一步指定其重要性。

关于css - 如何在 HTML 输入对象下使用 JavaScript 覆盖包含 '!important' 的 css?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42891814/

上一篇:javascript - 悬停时缩放 svg map 区域

下一篇:html - Material 图标连字不适用于 Pug

相关文章:

Java 方法重载和包装类

java - Java中的继承和多态

css - font-awesome 图标 - onmouseover 事件改变颜色

css - 一次更改两个 div 的背景颜色

css - 获取绝对定位的链接以与 flexbox 一致显示

使用其他脚本后,Javascript 脚本不运行

javascript - 为什么我不能 "overwrite"javascript 中的方法?

CSS Transform-Origin Center Overflow 滚动不是全宽

html - 中间div占用剩余宽度

javascript - 使 "ball"在 Canvas 上跟随鼠标