粘性:关闭手风琴面板时悬停造型

时间:2017-12-19 13:52:03

标签: javascript jquery html css touch

我有一个简单的手风琴,当你打开一个面板时,一个.open类被添加到标题+内容组中,所以我可以设置它的样式。这很好但我在手机上注意到,当我点击关闭面板时,我的悬停样式(与活动/打开样式相同)仍然存在。当我使用加号/减号图标时,这会导致所有内容不同步。单击页面上的其他位置会删除样式。没有:focus样式,因此必须将:hover解释为触摸事件?谁能建议我如何防止这种情况?

这是我的剧本:

$(document).ready(function($) {
    // Add class of `.open` to first `.accordion__title` as it is set to `display: block` in CSS.
    $('.accordion__item:first-child .accordion__title').addClass('open');
    // Accordion fuctions.
    $('.accordion').find('.accordion__title').click(function(){
        // Add class to title.
        $(this).toggleClass('open');
        //Expand or collapse this panel.
        $(this).next().slideToggle('fast');
    });

});

标记:

<div class="accordion">

    <div class="accordion__item">
        <h2 class="accordion__title">Question One <span class="accordion__title-icon"></span></h2>
        <div class="accordion__copy">
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        </div>
    </div>

    <div class="accordion__item">
        <h2 class="accordion__title">Question Two <span class="accordion__title-icon"></span></h2>
        <div class="accordion__copy">
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        </div>
    </div>

    <div class="accordion__item">
        <h2 class="accordion__title">Question Three <span class="accordion__title-icon"></span></h2>
        <div class="accordion__copy">
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
        </div>
    </div>

</div>

与CodePen一起:https://codepen.io/moy/pen/aENWXz

幸运的是,您可以使用任何移动设备在Chrome中使用浏览器工具查看相同的效果/问题。

1 个答案:

答案 0 :(得分:0)

您实际上可以使用媒体查询覆盖触摸屏设备中悬停状态的样式。

@media (hover: none) {
    .accordion__title {
        &:hover{
            color: #000;
        }
        &.open {
            color: #c8102e;
        }
    }
}