【问题标题】:Toggle hover from div onlick (remove hover, add it back)单击时从 div 切换悬停(删除悬停,将其添加回来)
【发布时间】:2016-03-20 00:54:12
【问题描述】:

单击一个 div 后,我想更改它的颜色并禁用悬停。再次单击时,我希望它切换到以前的颜色并再次启用悬停。

所以我有这个 div:

<div class="leftTeam"></div>

有这个悬停:

.leftTeam {
    border: 1px solid #d9d9d9;
    margin-auto;
    float: left;
    border-radius: 4px;
    background-color: #fff;
    width: 200px;
    height: 30px;
}

.leftTeam:hover {
    border: 1px solid #adadad;
    background-color: #e6e6e6;
    transition: 1s;
}

此图像显示了所需的行为。不管它是纯 CSS 代码还是包含 javascript。谢谢!

[]

【问题讨论】:

标签: javascript html onclick hover toggle


【解决方案1】:

试试这个:

function switchClass(ele){
    if(ele.className == "leftTeam"){
      ele.className+=" clicked";
      }
    else{
      ele.className = "leftTeam";
      }
    }
    .leftTeam {
        border: 1px solid #d9d9d9;
        margin-auto;
        float: left;
        border-radius: 4px;
        background-color: #fff;
        width: 200px;
        height: 30px;
    }
    
    .clicked:hover {
        border: 1px solid #adadad;
        background-color: #e6e6e6;
        transition: 1s;
    }
&lt;div class="leftTeam" onclick="switchClass(this)"&gt;Click to change the class!&lt;/div&gt;

【讨论】:

    【解决方案2】:

    在元素点击事件后切换样式(悬停、颜色):

    function toggleStyle(el){
        if(el.className == "initial"){
          el.className="clicked";
          }
        else{
          el.className = "initial";
          }
        }
     div { border: 1px solid black; border-collapse: collapse}
    .initial{ background-color: #efefef; }        
    .initial:hover { background-color: #B4FDAB; }
    .clicked { background-color: red; }
    
    p.css3{background-color: #efefef;}
    p.css3:hover{ background-color: #B4FDAB; }
    p.css3:focus{background-color: #B6C2EF; }
    p.css3:active{background-color: #B6C2EF; }
    <div class="initial" onclick="toggleStyle(this)">Click to change the class!</div>
    <div class="initial" onclick="toggleStyle(this)">Click to change the class!</div>
    
    <h3>Testing css 3 focus or active </h3>
    <p class="css3">css 3 focus or active seem to be insufficient</p>

    测试一个只有 css 3 的解决方案

    似乎使用 active 或 focus 是不够的,因为悬停状态没有被替换

    p.css3{background-color: #efefef;}
    p.css3:hover{ background-color: #B4FDAB; }
    p.css3:focus{background-color: #B6C2EF; }
    p.css3:active{background-color: #B6C2EF; }
    <p class="css3">css 3 focus or active</p>
    

    【讨论】:

    • 谢谢!这很好用,除了当我点击其他东西时我还需要切换到它的正常设计。这样,即使我点击其他按钮,它也会保持点击状态。
    • 这是我想要做的快速 gif 视频。再次感谢你! i.gyazo.com/7a7ba829d46dc7960bfa1dfaa2d3a4b3.gif
    • 你在哪里解决你的问题?你试过什么?
    • 我尝试的最后一件事是您的代码,但它只适用于一个 div,并且当单击同一行内的另一个 div 时不会切换回正常状态。这是我的代码:drive.google.com/open?id=0B5-ZV3bxMIlMY21xQ01aSWE3ZDg 我希望能够单击团队列中的两个 div。例如,当单击左侧 div 时,它应该将其颜色更改为例如紫色,如果再次单击它或单击右侧 div,则切换回正常状态。如果我单击另一个列中的这些 div 之一,则上一列中单击的一个应该保持活动状态。检查我提供的 gif 图片。
    • 另外(我之前的评论太长了),当点击行本身时,行正在扩展,但我希望它只有在我点击“LIVE NOW”链接时才会扩展。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多