css 列表 hover时闪动

css 列表 hover时闪动



 

选中事件:

//企业列表增加单击事件
    $('.company-name').on('click','li.enabled',function () {
        var $self=$(this);
        $('.company-name li.li-active').removeClass('li-active').removeClass('enabled_hover').addClass('enabled');
        $self.removeClass('enabled').addClass('li-active').addClass('enabled_hover');

    });

 为什么要使用这种方式?

另外一种方式(方式二):

$('.company-name li.enabled').click(function () {
        var $self=$(this);
        $('.company-name li.li-active').removeClass('li-active').removeClass('enabled_hover').addClass('enabled');
        $self.removeClass('enabled').addClass('li-active').addClass('enabled_hover');

    });

 为什么不使用方式二呢?

因为刚开始初始选中的item的class 是"li-active enabled_hover",没有"enabled"

使用方式二时,没有给初始选中的item增加事件

hover时闪动的原因是原来item的border 粗细为1px,hover时border 粗细变为2px,那么item的宽高就有变化,所以导致闪动

解决方法:

hover时 宽和高分别减少2px,css如下:

没有hover时的样式:

.company-name li{ width:258px; height:30px; line-height:30px; color:#333; border:1px solid #dfdfdf; border-radius:2px; margin-bottom:10px;
                  text-align: center;
    padding:0px 1px;
}

 高度为30px,并且左右的padding分别为1px

hover时的样式:

/* hover时,高度减少两个像素 */
.company-name li.enabled:hover,.company-name li.enabled_hover{
    border:2px solid #ff4646;
    height: 28px;
    line-height: 28px;
    padding:0px 0px;
}

 如上,高度共减少了2px,左右的padding分别减少1px,达到目的

猜你喜欢

转载自hw1287789687.iteye.com/blog/2291374