如何在单击时从元素中删除悬停效果?

时间:2013-12-07 12:02:57

标签: css css3

我有这个代码 http://jsfiddle.net/F6Jqm/1/

我希望当用户点击png时保留悬停<span>。当他再次点击它以返回原始形式时。

4 个答案:

答案 0 :(得分:0)

我已更新fiddle

试试这个:

var count = 0;
document.getElementsByClassName('home')[0].onclick = function() {
    count = 1 - count;
     if (count) {
        document.getElementById('navigationMenu').className = 'stayHover';
    }
    else {
        document.getElementById('navigationMenu').className = 'menuHover';
    }
}

如果您不介意为此导入jQuery,可以使用toggleClass

答案 1 :(得分:0)

您可以通过点击

添加“逗留”课程来完成此操作 像这个小提琴一样:http://jsfiddle.net/F6Jqm/3/

区别在于css:

#navigationMenu a:hover span, #navigationMenu a.stay span{ 
    width:auto; padding:0   20px;overflow:visible; 
}

并添加了一些jquery:

$(document).ready(function(){
    $("a").click(function(){
        $(this).toggleClass("stay");
    });
});

答案 2 :(得分:0)

这是一个只有CSS(没有Javascript)的解决方案。我只在firefox和chrome上测试过,但它应该在所有最近的浏览器上使用。

http://jsfiddle.net/F6Jqm/6/

我们的想法是使用伪选择器:选中已检查的输入类型和相对标签,并在图标上设置不透明度:0。

CSS:

#navigationMenu li{
    list-style:none;
    height:20px;
    width:20px;
}
#navigationMenu input[type=checkbox] {

    position:absolute;
    z-index: 1;
    opacity:0;
}
#navigationMenu span{
    width:0;
    left:22px;
    padding:0;
    position:absolute;
    overflow:hidden;


    font-family:'Myriad Pro',Arial, Helvetica, sans-serif;
    font-size:18px;
    font-weight:bold;
    letter-spacing:0.6px;
    white-space:nowrap;
    line-height:20px;


    -webkit-transition: 0.25s;
    -moz-transition: 0.25s;
    transition: 0.25s;
}

#navigationMenu label {
    background:url('http://www.tigercamera.com/front/img/home.png') transparent no-repeat;
padding:0px;
    height:20px;
    width:20px;
    display:block;
    position:relative;
    border: 0px;
}

/* General hover styles */

#navigationMenu input:hover + label span{ width:auto; padding:0 20px;overflow:visible; }
#navigationMenu input:checked + label span{ width:auto; padding:0 20px;overflow:visible; }

/* Green Button */

#navigationMenu .home { background-position:0 0;}

#navigationMenu .home span{
    background-color:#7da315;
    color:#3d4f0c;
    text-shadow:1px 1px 0 #99bf31;
}

HTML:

<div id="main">

<ol id="navigationMenu">
    <li>
        <input name="check" type="checkbox"/>
        <label for="check" class="home">
            <span>Home</span>
        </label>
    </li>


</ol>

</div>

答案 3 :(得分:0)

你去(用纯粹的js):http://jsfiddle.net/F6Jqm/7/

var nav = document.getElementById('navigationMenu'),
items = nav.getElementsByTagName('a'),
i;

 for( i=0; i<items.length; i++){
   items[i].onclick = function(){
     if( this.classList.contains('active') ){ this.classList.remove('active') }else{
        this.className = this.className + ' active';
     }
   };
 }