Slider content area shrinks
If you initialize slider when it is not added to DOM (or hidden via display:none
) it can not calculate size correctly, as it's impossible to retrieve the size of an element via JavaScript when it's not in a display list.
How to check if this is the issue?
*If slider size is dynamic: try to resize browser window, if after resizing layout looks correctly - this is the issue.
*If slider size is static: change size of root slider element via developer tools and resize browser window. Or run in console jQuery('.royalSlider').royalSlider('updateSliderSize', true);
.
How to fix this?
Initialize slider only after it and it's parent are visible, or call `updateSliderSize(true)` method after slider is visible on page:$('.royalSlider').royalSlider('updateSliderSize', true);
As an alternative, you can trigger jQuery window resize event (which will trigger the same update size method):
$(window).trigger('resize');
If you're using jQuery UI tabs and have a slider in each tab:
// Instead of .your-tabs-selector, put selector of root element of your tabs (e.g. .ui-tabs)
jQuery(".your-tabs-selector").on("tabsactivate", function(event, ui) {
ui.newPanel.find('.royalSlider').data('royalSlider').updateSliderSize(true);
});
If you're using Bootstrap tabs:
jQuery(document).ready(function($) {
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var sliderEl = $( $(e.target).attr('href') ).find('.royalSlider');
if(sliderEl.length) {
sliderEl.royalSlider('updateSliderSize', true);
}
})
});
Example for WordPress version of slider (jQuery UI tabs)
// Add this to your theme functions.php
function royalslider_fix_tabs() {
?>
jQuery(".ui-tabs").on("tabsactivate", function(event, ui) {
var slider = ui.newPanel.find('.royalSlider');
if(slider.length) {
slider.royalSlider('updateSliderSize', true);
}
});
<?php
}
add_action('new_rs_after_js_init_code', 'royalslider_fix_tabs');