用CSS解决hover一个div,改变另外2个div的样式

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用CSS解决hover一个div,改变另外2个div的样式相关的知识,希望对你有一定的参考价值。

用CSS解决hover一个div,改变另外2个div的样式

在项目中遇到这样一个问题:
div1和div3有默认的css样式 背景颜色是绿色
div2有一个默认的css样式 背景颜色是红色
需求:当鼠标悬浮在div1,div2,div3上时 让当前div的背景颜色变为红色,其余背景颜色变为绿色,无鼠标悬浮时 让其展示默认效果

<style>
        .div1 {
            width: 100px;
            height: 100px;
            float: left;
            background-color: green;
        }
        .div2 {
            width: 100px;
            height: 100px;
            float: left;
            background-color: red;
        }
        .div3 {
            width: 100px;
            height: 100px;
            float: left;
            background-color: green;
        }
      
    </style>
	<div class="div1">内容一</div>
    <div class="div2">内容二</div>
    <div class="div3">内容三</div>

首先让悬浮时背景颜色都改变为红色

 		 .div1:hover{
            background-color: red;
        }
        .div2:hover{
            background-color: red;
        }
        .div3:hover{
            background-color: red;
        }
      

其次需要解决的问题就是 : 当鼠标悬浮在div1和div3时需要将div2的背景颜色变为绿色

        .div1:hover+.div2{
            background-color: green;
        }

通过查资料 可以用hover加上相邻兄弟选择器 + 来实现,解决了鼠标悬浮在div1上时div2背景颜色改变,但依然无法解决鼠标悬浮在div3时改变div2的样式

最后通过 ~ 选择器来解决,但需要将div3的位置放在div1前 保证不影响div1的兄弟选择器起作用,给样式加上绝对定位即可原有的效果

	 <div class="div3">内容三</div>
	 <div class="div1">内容一</div>
     <div class="div2">内容二</div>

		.div1:hover+.div2{
            background-color: green;
        }
		.div3:hover~.div2{
            background-color: green;
        }

注意: ~ 的用法
1.需要保证元素具有相同的父元素,
2. div~p 表示div后所有的p都会被选择

	<div></div>
    <p></p>
    <p></p>

以上是关于用CSS解决hover一个div,改变另外2个div的样式的主要内容,如果未能解决你的问题,请参考以下文章

css之hover改变另外一个元素的状态

关于css的问题

jQuery 通过鼠标摇拽改变div的大小

测试 CSS :hover with Jasmine

CSS动画,由其他DIV动作触发

有十个div,怎样实现选中其中一个,改变其背景色,另外九个不变,当选中另一个时又改变另一个的背景色