关于hover的一些问题

父类hover改变子类

html


    <div id="sibling">Sibling</div>

    <div id="brother">
      <span>Brother</span>
      <div id="child">Child</div>
    </div>

css

#sibling:hover + #brother #child {
    background-color:red;
}

#brother:hover > #child {
    background-color:red;
}

#brother:hover  #child {
    background-color:red;
}  //注意:此种方法在同类hover改变时没有作用

效果

DEMO


同类hover改变兄弟

html
<div id="sibling">Sibling</div>

<div id="brother">
    <span>Brother</span>
    <div id="child">Child</div>
</div>

css
#sibling:hover + #brother {
    background-color:red;
}
#sibling:hover #brother {
    background-color:red;
}  //此种方法不起作用

解释

“+”用于同类hover兄弟之间的改变(具有同一个父亲)
“>”或 “空格”用于父亲hover改变后代
(或者可以说,“+”表示同级关系;“>”和“空格”表示后代关系)


注意

  • 兄弟元素之间的hover是否生效,与html中元素的排列有关

css
<style>
    #a {color : #99ff66;}
    #a:hover + #b{color : pink;}
    #a:hover + #c{color: orange;}
</style>
html
<div id='a'>元素1</div>
<div id='c'>元素3</div>
<div id='b'>元素2</div>  //仅有元素3变色
<div id='a'>元素1</div>
<div id='b'>元素2</div>  //仅有元素2变色
<div id='c'>元素3</div>
<div id='b'>元素2</div>  //元素2,3都不变色
<div id='c'>元素3</div>
<div id='a'>元素1</div>
<div id='b'>元素2</div>  //元素3变色
<div id='a'>元素1</div>
<div id='c'>元素3</div>

所以,只有被hover的div下面紧邻的第一个兄弟div能被改变


  • “x:hover”中, ‘x’, ‘:’, ‘hover’之间不能有空格!!!!否则hover失效

hover改变多个元素

当被hover的元素是要改变的多个元素的共同父亲时,hover才能生效;假如被hover元素与要改变的元素是兄弟,则多个hover不生效
例:
html

    <div id="out">
        <div id="wrapper">
            <div id="imgs">
                <img src="images/img1.jpg" alt="none" class="img"><img src="images/img2.jpg" alt="none" class="img"><img src="images/img3.jpg" alt="none" class="img">
            </div>
        </div>
        <div id="arrL"></div>
        <div id="arrR"></div>
        <div id="point">
            <div id="po1" class="po"></div>
            <div id="po2" class="po"></div>
            <div id="po3" class="po"></div>
        </div>
    </div>

css1(生效)

        #out:hover #arrL {
            opacity: 1;
        }

        #out:hover #arrR {
            opacity: 1;
        }

css2(不生效)

#wrapper:hover + #arrL{
    opacity: 1;
}
#wrapper:hover + #arrR{
    opacity: 1;
}

引用改编自stackoverflow
引用自兄弟级别的hover控制
2017年9月26日08:07:55

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值