Search code examples
jssor

Responsive jssor with fixed height thumbnails


I'm trying to make a responsive jssor slider with thumbnails, but the thumbnails always should have the same height. I've set the ThumbnailNavigatorOptions.$Scale to false and put the thumbnail navigator into a wrapper (as suggested here), but it doesn't work. The thumbnail navigator is scaling. If I remove the wrapper, it doesn't scale, but the layout is screwed up. Also the thumbnails should be always centered horizontally.

Here what I've tried (if you put that html into the demos-jquery folder of jssor, it will load):

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Image Gallery Theme - Jssor Slider, Carousel, Slideshow with Javascript Source Code</title>
</head>
<body style="padding: 0; margin: 0; font-family:Arial, Verdana;background-color:#fff;">
    <!-- it works the same with all jquery version from 1.x to 2.x -->
    <script type="text/javascript" src="../js/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="../js/jssor.js"></script>
    <script type="text/javascript" src="../js/jssor.slider.js"></script>

    <script>

        jQuery(document).ready(function ($) {

            var _SlideshowTransitions = [
                    {$Duration: 1200, x: 0.3, $During: { $Left: [0.3, 0.7] }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 }
                ];

            var options = {
                $AutoPlay: true,                                    //[Optional] Whether to auto play, to enable slideshow, this option must be set to true, default value is false
                $AutoPlayInterval: 1500,                            //[Optional] Interval (in milliseconds) to go for next slide since the previous stopped if the slider is auto playing, default value is 3000
                $PauseOnHover: 1,                                //[Optional] Whether to pause when mouse over if a slider is auto playing, 0 no pause, 1 pause for desktop, 2 pause for touch device, 3 pause for desktop and touch device, 4 freeze for desktop, 8 freeze for touch device, 12 freeze for desktop and touch device, default value is 1

                $DragOrientation: 3,                                //[Optional] Orientation to drag slide, 0 no drag, 1 horizental, 2 vertical, 3 either, default value is 1 (Note that the $DragOrientation should be the same as $PlayOrientation when $DisplayPieces is greater than 1, or parking position is not 0)
                $ArrowKeyNavigation: true,                          //[Optional] Allows keyboard (arrow key) navigation or not, default value is false
                $SlideDuration: 800,                                //Specifies default duration (swipe) for slide in milliseconds

                $SlideshowOptions: {                                //[Optional] Options to specify and enable slideshow or not
                    $Class: $JssorSlideshowRunner$,                 //[Required] Class to create instance of slideshow
                    $Transitions: _SlideshowTransitions,            //[Required] An array of slideshow transitions to play slideshow
                    $TransitionsOrder: 1,                           //[Optional] The way to choose transition to play slide, 1 Sequence, 0 Random
                    $ShowLink: true                                    //[Optional] Whether to bring slide link on top of the slider when slideshow is running, default value is false
                },

                $ArrowNavigatorOptions: {                       //[Optional] Options to specify and enable arrow navigator or not
                    $Class: $JssorArrowNavigator$,              //[Requried] Class to create arrow navigator instance
                    $ChanceToShow: 1                               //[Required] 0 Never, 1 Mouse Over, 2 Always
                },

                $ThumbnailNavigatorOptions: {                       //[Optional] Options to specify and enable thumbnail navigator or not
                    $Class: $JssorThumbnailNavigator$,              //[Required] Class to create thumbnail navigator instance
                    $ChanceToShow: 2,                               //[Required] 0 Never, 1 Mouse Over, 2 Always
                    $AutoCenter: 1,
                    $Scale: false,                                  //Scales thumbnail navigator or not while slider scale
                    $ActionMode: 1,                                 //[Optional] 0 None, 1 act by click, 2 act by mouse hover, 3 both, default value is 1
                    $SpacingX: 8,                                   //[Optional] Horizontal space between each thumbnail in pixel, default value is 0
                    $DisplayPieces: 10,                             //[Optional] Number of pieces to display, default value is 1
                    $ParkingPosition: 360                          //[Optional] The offset position to park thumbnail
                }
            };

            var jssor_slider1 = new $JssorSlider$("slider1_container", options);
            //responsive code begin
            //you can remove responsive code if you don't want the slider scales while window resizes
            function ScaleSlider() {
                var parentWidth = jssor_slider1.$Elmt.parentNode.clientWidth;
                if (parentWidth)
                    jssor_slider1.$ScaleWidth(Math.max(Math.min(parentWidth, 800), 300));
                else
                    window.setTimeout(ScaleSlider, 30);
            }

            ScaleSlider();

            $Jssor$.$AddEvent(window, "resize", $Jssor$.$WindowResizeFilter(window, ScaleSlider));
            $Jssor$.$AddEvent(window, "orientationchange", ScaleSlider);
            //responsive code end
        });
    </script>
    <!-- Jssor Slider Begin -->
    <!-- To move inline styles to css file/block, please specify a class name for each element. --> 
    <div id="slider1_container" style="position: relative; top: 0px; left: 0px; width: 800px;
        height: 456px; background: #191919; overflow: hidden;">

        <!-- Loading Screen -->
        <div u="loading" style="position: absolute; top: 0px; left: 0px;">
            <div style="filter: alpha(opacity=70); opacity:0.7; position: absolute; display: block;
                background-color: #000000; top: 0px; left: 0px;width: 100%;height:100%;">
            </div>
            <div style="position: absolute; display: block; background: url(../img/loading.gif) no-repeat center center;
                top: 0px; left: 0px;width: 100%;height:100%;">
            </div>
        </div>

        <!-- Slides Container -->
        <div u="slides" style="cursor: move; position: absolute; left: 0px; top: 0px; width: 800px; height: 356px; overflow: hidden;">
            <div>
                <img u="image" src="../img/alila/01.jpg" />
                <img u="thumb" src="../img/alila/thumb-01.jpg" />
            </div>
            <div>
                <img u="image" src="../img/alila/02.jpg" />
                <img u="thumb" src="../img/alila/thumb-02.jpg" />
            </div>
            <div>
                <img u="image" src="../img/alila/03.jpg" />
                <img u="thumb" src="../img/alila/thumb-03.jpg" />
            </div>
            <div>
                <img u="image" src="../img/alila/04.jpg" />
                <img u="thumb" src="../img/alila/thumb-04.jpg" />
            </div>
            <div>
                <img u="image" src="../img/alila/05.jpg" />
                <img u="thumb" src="../img/alila/thumb-05.jpg" />
            </div>
            <div>
                <img u="image" src="../img/alila/06.jpg" />
                <img u="thumb" src="../img/alila/thumb-06.jpg" />
            </div>
        </div>

        <!--#region Arrow Navigator Skin Begin -->
        <style>
            /* jssor slider arrow navigator skin 05 css */
            /*
            .jssora05l                  (normal)
            .jssora05r                  (normal)
            .jssora05l:hover            (normal mouseover)
            .jssora05r:hover            (normal mouseover)
            .jssora05l.jssora05ldn      (mousedown)
            .jssora05r.jssora05rdn      (mousedown)
            */
            .jssora05l, .jssora05r {
                display: block;
                position: absolute;
                /* size of arrow element */
                width: 40px;
                height: 40px;
                cursor: pointer;
                background: url(../img/a17.png) no-repeat;
                overflow: hidden;
            }
            .jssora05l { background-position: -10px -40px; }
            .jssora05r { background-position: -70px -40px; }
            .jssora05l:hover { background-position: -130px -40px; }
            .jssora05r:hover { background-position: -190px -40px; }
            .jssora05l.jssora05ldn { background-position: -250px -40px; }
            .jssora05r.jssora05rdn { background-position: -310px -40px; }
        </style>
        <!-- Arrow Left -->
        <span u="arrowleft" class="jssora05l" style="top: 158px; left: 8px;">
        </span>
        <!-- Arrow Right -->
        <span u="arrowright" class="jssora05r" style="top: 158px; right: 8px">
        </span>
        <!--#endregion Arrow Navigator Skin End -->

        <div u="thumbwrapper" style="position: absolute; width: 100%; height: 100px; bottom: 0px; overflow: hidden;">
            <div style="position: relative; left: 50%; width: 5000px; height: 100px; text-align: center; margin-left: -2500px;">
                <!--#region Thumbnail Navigator Skin Begin -->
                <!-- Help: http://www.jssor.com/development/slider-with-thumbnail-navigator-jquery.html -->
                <style>
                            /* jssor slider thumbnail navigator skin 01 css */
                            /*
                    .jssort01 .p            (normal)
                    .jssort01 .p:hover      (normal mouseover)
                    .jssort01 .p.pav        (active)
                    .jssort01 .p.pdn        (mousedown)
                    */

                            .jssort01 {
                                position: absolute;
                                /* size of thumbnail navigator container */
                                width: 800px;
                                height: 100px;
                            }

                                .jssort01 .p {
                                    position: absolute;
                                    top: 0;
                                    left: 0;
                                    width: 72px;
                                    height: 72px;
                                }

                                .jssort01 .t {
                                    position: absolute;
                                    top: 0;
                                    left: 0;
                                    width: 100%;
                                    height: 100%;
                                    border: none;
                                }

                                .jssort01 .w {
                                    position: absolute;
                                    top: 0px;
                                    left: 0px;
                                    width: 100%;
                                    height: 100%;
                                }

                                .jssort01 .c {
                                    position: absolute;
                                    top: 0px;
                                    left: 0px;
                                    width: 68px;
                                    height: 68px;
                                    border: #000 2px solid;
                                    box-sizing: content-box;
                                    background: url(../img/t01.png) -800px -800px no-repeat;
                                    _background: none;
                                }

                                .jssort01 .pav .c {
                                    top: 2px;
                                    _top: 0px;
                                    left: 2px;
                                    _left: 0px;
                                    width: 68px;
                                    height: 68px;
                                    border: #000 0px solid;
                                    _border: #fff 2px solid;
                                    background-position: 50% 50%;
                                }

                                .jssort01 .p:hover .c {
                                    top: 0px;
                                    left: 0px;
                                    width: 70px;
                                    height: 70px;
                                    border: #fff 1px solid;
                                    background-position: 50% 50%;
                                }

                                .jssort01 .p.pdn .c {
                                    background-position: 50% 50%;
                                    width: 68px;
                                    height: 68px;
                                    border: #000 2px solid;
                                }

                                * html .jssort01 .c, * html .jssort01 .pdn .c, * html .jssort01 .pav .c {
                                    /* ie quirks mode adjust */
                                    width /**/: 72px;
                                    height /**/: 72px;
                                }
                </style>

                <!-- thumbnail navigator container -->
                <div u="thumbnavigator" class="jssort01" style="position: relative; margin: 0 auto; left:0px; bottom: 0px;">
                    <!-- Thumbnail Item Skin Begin -->
                    <div u="slides" style="cursor: default;">
                        <div u="prototype" class="p">
                            <div class=w><div u="thumbnailtemplate" class="t"></div></div>
                            <div class=c></div>
                        </div>
                    </div>
                    <!-- Thumbnail Item Skin End -->
                </div>
                <!--#endregion Thumbnail Navigator Skin End -->
            </div>
        </div>
        <a style="display: none" href="http://www.jssor.com">Carousel jQuery</a>
    </div>
</body>
</html>

Solution

  • For anyone with a similar issue, I've ended up switching to LightGallery, which is a better implementation for displaying images in that way. Jssor is awesome for banners, but I found the other one for a gallery purpose better.