Chrome中的jQuery滑块出现1像素故障

时间:2018-10-26 00:48:05

标签: jquery css google-chrome visual-glitch

我正在使用jQuery UI中的滑块,其中每个刻度线的宽度均为1px。

这是在Firefox和Safari中的外观:

enter image description here

这是正确的。

但这是在Chrome中的外观:

enter image description here enter image description here

这是Chrome特有的怪异故障。在查看了类似的问题后,我尝试了box-sizingbox-shadow,但在使这些刻度线正确显示方面并没有取得成功。

如果我将其设置为2px:

enter image description here

所有刻度线都显示出来,但仍然存在故障。

如果需要代码:

HTML:

<div id="slider"></div>

JS:

function createSlider() {
    $("#slider").slider({
        min: 1,
        max: numOfPages * 3, 
        step: 1, 
        range: false,
        orientation: 'horizontal',
        create: function(event, ui) { 
            setSliderTicks(event.target);
        }
    });
}

function setSliderTicks(){
    var $slider =  $('#slider');
    var max =  $slider.slider("option", "max");    
    var spacing =  100 / (max - 1);
    console.log('Spacing: ' + spacing);

    $slider.find('.tickmark').remove();
    for (var i = 0; i < max ; i++) {
        $('<span class="tickmark"></span>').css('left', (spacing * i) +  '%').appendTo($slider); 
     }
}

CSS:

#slider {
    width: ;
    margin: 0 auto;
}

.ui-slider-horizontal {
    height: 3px;
    width: 75%;

}

.ui-slider {
    border: 0;
    background-color: #ededed;
    border-radius: 6px;
    top: 50%;
}

.ui-slider-handle {
    width: 19px;
    height: 18px;
    background-color: #ededed;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    top: 50%;
    margin-top: -4px;
}

.ui-slider-handle:hover {
    opacity: 0.8;
}

.tickmark {
    display:inline-block;
    width: 1px;
    background-color: #ededed;
    height: 12px;
    position:absolute;
    top: -150%;
}

滑块来自https://code.jquery.com/ui/1.12.1/jquery-ui.min.jshttps://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css

0 个答案:

没有答案