改变悬停组件的背景颜色
change background color of component on hover
是否有一种方法可以改变整个面板的背景颜色,当我悬停在它的任何部分?
我正在使用一个基本的引导面板,使用bootstrap-react:
<LinkWrapper url={url}>
<Panel header="text" bsStyle="primary">
<p>text.</p>
</Panel>
</LinkWrapper>
生成以下标记:
<div class="panel panel-primary" >
<div class="panel-heading" >text</div>
<div class="panel-body">
<p>text</p>
</div>
</div>
我的linkWrapper组件:
var LinkWrapper = React.createClass({
getDefaultProps: function() {
return {
}
},
render: function() {
return (
<a href={this.props.url}>{this.props.children}</a>
)
}
});
module.exports = LinkWrapper;
我的CSS是:
a.highlight:hover{
text-decoration:none;
color:white;
}
.highlight .panel-body:hover, .highlight .panel-heading:hover {
text-decoration:none;
background-color:$primary-color;
color:white;
border-color:$primary-color;
}
.highlight .panel-body p:hover {
text-decoration:none;
color:white;
}
最简单的解决方案是使用CSS
#my-panel:hover * {
background: gold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<div id="my-panel" class="panel panel-primary" >
<div id="panel-header" class="panel-heading" >text</div>
<div id="panel-body" class="panel-body" >
<p >text</p>
</div>
</div>
上面的代码找到我们正在寻找的面板,并将伪元素:hover
附加到它。然后使用通用选择器*
查找它的所有后代。
你也可以用jQuery来做。监听mouseover
和mouseout
事件,因为它们分别表示鼠标悬停在元素上方和远离元素的时间。
在mouseover
事件期间,添加更改背景颜色的类。但是因为Bootstrap类已经有样式了,你需要使用!important
声明。在mouseout
事件期间,只需删除该类。
$(document).ready(function() {
$(".panel").on("mouseover", function() {
$(this).children().addClass("gold");
}).on("mouseout", function() {
$(this).children().removeClass("gold");
});
});
.gold { background: gold !important };
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="my-panel" class="panel panel-primary" >
<div id="panel-header" class="panel-heading" >text</div>
<div id="panel-body" class="panel-body" >
<p >text</p>
</div>
</div>
JavaScript解决方案与jQuery类似。创建用于查找面板主体和页眉的变量。您可以通过内联事件(即onclick)或使用addEventListener
侦听事件。
要添加或删除类,分别使用classList.add
和classList.remove
方法。
var panel = document.getElementById("my-panel");
var panelHeader = document.getElementById("panel-header");
var panelBody = document.getElementById("panel-body");
panel.addEventListener("mouseover", function() {
panelHeader.classList.add("gold");
panelBody.classList.add("gold");
});
panel.addEventListener("mouseout", function() {
panelHeader.classList.remove("gold");
panelBody.classList.remove("gold");
});
.gold { background: gold !important };
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<div id="my-panel" class="panel panel-primary" >
<div id="panel-header" class="panel-heading" >text</div>
<div id="panel-body" class="panel-body" >
<p >text</p>
</div>
</div>
小提琴
CSS: http://jsfiddle.net/5v0osxce/
jQuery: http://jsfiddle.net/fehhemvo/
JavaScript: http://jsfiddle.net/t3mafrnr/1
相关文章:
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用jquery更改html中的背景颜色
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- JS幻灯片与CSS背景颜色变化
- DT数据表背景颜色为黑色,但仍有悬停和选择颜色
- Javascript通过列表项的函数和css来更改背景颜色
- Javascript没有从数组中选择背景颜色
- 使用圆中的数组更改背景颜色项目
- 如何用jquery动画改变背景颜色,就像一个过渡
- 使用jquery交换并保存背景颜色
- j查询如何设置/取消设置下拉菜单的背景颜色
- 使用angularjs根据时间更改背景颜色
- 设置Dojo量表的背景颜色
- javascript样式的背景颜色在设置时闪烁.ASP.NET
- 使用javascript更改任意文本的背景颜色
- 在用Javascript更改背景颜色后:hover don'不要改变颜色
- 图像内部的透明背景颜色不受影响
- jQuery mobile-动态更改ui页面背景颜色
- 切换按钮的背景颜色
- JavaScript更改类的背景颜色