jQuery UI Slider изменяет ширину ползунка
Всем привет. Сразу вставлю код слайдера:
<div class="scroll-bar-wrap ui-widget-content ui-corner-bottom"> <div class="scroll-bar"></div> </div> Это не просто слайдер, а имитация скроллбара, функция скопирована почти дословно с оф. сайта: $(function() { $(".scroll-content").width(320*$(".news_text").length); //scrollpane parts var scrollPane = $( ".scroll-pane" ), scrollContent = $( ".scroll-content" ); //build slider var scrollbar = $( ".scroll-bar" ).slider({ slide: function( event, ui ) { if ( scrollContent.width() > scrollPane.width() ) { scrollContent.css( "margin-left", Math.round( ui.value / 100 * ( scrollPane.width() - scrollContent.width() ) ) + "px" ); } else { scrollContent.css( "margin-left", 0 ); } $(".ui-slider-handle").css({width: "20px", marginLeft: "0"}); } }); // //change overflow to hidden now that slider handles the scrolling scrollPane.css( "overflow", "hidden" ); //size scrollbar and handle proportionally to scroll distance function sizeScrollbar() { var remainder = scrollContent.width() - scrollPane.width(); var proportion = remainder / scrollContent.width(); var handleSize = scrollPane.width() - ( proportion * scrollPane.width() ); scrollbar.find( ".ui-slider-handle" ).css({ width: handleSize, "margin-left": -handleSize / 2 }); //handleHelper.width( "" ).width( scrollbar.width() - handleSize ); } //reset slider value based on scroll content position function resetValue() { var remainder = scrollPane.width() - scrollContent.width(); var leftVal = scrollContent.css( "margin-left" ) === "auto" ? 0 : parseInt( scrollContent.css( "margin-left" ) ); var percentage = Math.round( leftVal / remainder * 100 ); scrollbar.slider( "value", percentage ); } //if the slider is 100% and window gets larger, reveal content function reflowContent() { var showing = scrollContent.width() + parseInt( scrollContent.css( "margin-left" ), 10 ); var gap = scrollPane.width() - showing; if ( gap > 0 ) { scrollContent.css( "margin-left", parseInt( scrollContent.css( "margin-left" ), 10 ) + gap ); } } //change handle position on window resize $( window ).resize(function() { resetValue(); sizeScrollbar(); reflowContent(); }); //init scrollbar size setTimeout( sizeScrollbar, 10 );//safari wants a timeout }); Я в ней так и не смог особо разобраться, понял суть работы и забил. Но результат заключается еще вот в чем: ползунок слайдера приобретает ширину 411.42857142857144px и левый margin -205.71428571428572px (скопировано). Если эти свойства убрать (через, например, хром снять с них галки), то все нормально функционирует. Но ни через CSS, ни вставляя код в скрипт, я не смог отменить этого действия (присвоения свойств). Подскажите, пожалуйста, что тут может быть или какой костыль можно вставить, чтобы все возвращалось в нормальное русло... Забыл упомянуть, что это реально мешает: не позволяет по щелчку в произвольном месте на слайдере перемещать ползунок. Щелчки практически по любой плоскости дают фокус на ползунке |
Попробуй поставить в слайдеровский css-файл width:auto!important нужному элементу.
|
Часовой пояс GMT +3, время: 21:23. |