Flexslider, responsive image slider/gallery ullCms
https://github.com/woothemes/FlexSlider
https://github.com/woothemes/FlexSlider/wiki/FlexSlider-Properties
Supports fade instead of slide!
Flexible height, but all slides max height
ul.slides { display: flex; flex-wrap: wrap; } li.slide { width: 100vw; flex-basis: 100vw; }
Setup with "keep aspect ratio" for simple image gallery and "circles" nav
Template:
<?php //optional, disables lazy loading for responive images with rimg.js ?> <?php slot('html_head') ?> <script type="text/javascript"> RimgOptions.disableLazyLoading = true; </script> <?php end_slot() ?> <div id="gallery"> <div class="flexslider"> <ul class="slides"> <?php $images = ullWidgetGalleryWrite::getImagesAsArray($doc['gallery']) ?> <?php foreach ($images as $image): ?> <li> <div class="slide_container" <?php echo ull_rimg_bg_attributes($image) ?>> </div> </li> <?php endforeach ?> </ul> </div> </div> <?php use_javascript('/ullCorePlugin/js/jq/jquery.flexslider-min.js') ?> <script type="text/javascript"> $(window).load(function() { $('.flexslider').flexslider({ animation: "slide", slideshow: true, animationSpeed: 1500, slideshowSpeed: 3500, controlNav: true, //Boolean: Create navigation for paging control of each clide? Note: Leave true for manualControls usage directionNav: false, //Boolean: Create navigation for previous/next navigation? (true/false) prevText: "<", //String: Set the text for the "previous" directionNav item nextText: ">", /* controlsContainer: ".flexslider", */ }); }); </script>
css:
.flexslider { position: relative; } .flexslider ul.slides { list-style-type: none; margin: 0; padding: 0; } .flexslider ul.slides li { margin: 0; padding: 0; } .flexslider .slide_container { position: relative; width: 100%; /* desired width */ background-repeat: no-repeat; background-size: cover; background-position: top left; } .flexslider .slide_container:before { content: ""; display: block; padding-top: 50%; /* 1:2 this is the aspect ratio of the images */ } /* "circles" nav */ .flexslider ol.flex-control-nav { list-style-type: none; text-align: center; margin: 0; padding: 0; position: absolute; bottom: -16px; width: 100%; } .flexslider ol.flex-control-nav li { display: inline-block; margin: 0 .3em 0 .3em; padding: 0; } .flexslider ol.flex-control-nav li a { display: inline-block; background-image: url("/images/scrollable.png"); background-repeat: no-repeat; background-position: center; cursor: pointer; width: 14px; height: 14px; color: transparent; } .flexslider ol.flex-control-nav li a.flex-active { background-image: url("/images/scrollable_hot.png"); }
Setup with "keep aspect ratio" and html content
Template:
<div class="fullwidthslider flexslider"> <ul class="slides"> <?php foreach ($slider_elements as $element): ?> <?php $element->refreshRelated('Translation') // TODO: Why is this necessary? ?> <li> <div class="slide_container" <?php echo ull_rimg_bg_attributes($element->image) ?>> <div class="slide_content_container"> <div class="slide_content"> <h2> <?php include_component('ullCms', 'editLink', array('doc' => $element)) ?> <?php include_component('ullCms', 'deleteLink', array('doc' => $element)) ?> <?php echo $element->title ?> </h2> <p> <?php echo nl2br($element->body, true); ?> </p> <?php if ($element->link): ?> <div class="ghostbutton"> <?php echo link_to($element->preview_image, $element->link) ?> </div> <?php endif ?> </div> </div> </div> </li> <?php endforeach ?> <?php if ($allow_edit): ?> <li> <div class="slide_container"> <?php echo link_to('<span class="ultra_big">+</span> ', 'ullCmsContentBlock/create?content_type=slider-element&parent_slug=homepage', 'class=inline_create' ) ?> </div> </li> <?php endif ?> <!-- end of fullwidth slider --> </ul> </div> <?php use_javascript('/ullCorePlugin/js/jq/jquery.flexslider-min.js') ?> <script type="text/javascript"> $(window).load(function() { $('.fullwidthslider').flexslider({ animation: "slide", slideshow: false, controlNav: false, //Boolean: Create navigation for paging control of each clide? Note: Leave true for manualControls usage directionNav: true, //Boolean: Create navigation for previous/next navigation? (true/false) prevText: "<", //String: Set the text for the "previous" directionNav item nextText: ">", /* controlsContainer: ".flexslider", */ }); }); </script>
CSS:
/* Flexslider */ .flexslider { position: relative; overflow: hidden; } .flexslider ul { list-style: none; margin: 0; padding: 0; } .flexslider ul li { margin: 0; padding: 0; } .fullwidthslider ul.slides li { background-color: rgb(235,232,229); color: white; } .fullwidthslider .slide_container { position: relative; width: 100%; /* desired width */ background-repeat: no-repeat; background-size: cover; background-position: center; } .fullwidthslider .slide_container:before { content: ""; display: block; padding-top: 43%; /* ratio of 2.33 */ } .fullwidthslider .slide_content_container { position: absolute; top: 0; left: 0; bottom: 0; right: 0; } .fullwidthslider .slide_content { margin: 0 auto; max-width: 680px; /* padding: 0 96px; */ text-align: center; } .fullwidthslider h2 { font-family: 'ParryPro-NormalItalic'; font-weight: normal; color: white; margin: 110px 0 0 0; font-size: 3.6rem; line-height: 1.1em; } .fullwidthslider p { font-size: 1.2rem; line-height: 1.9rem; } /* prev / next */ .fullwidthslider ul li, .fullwidthslider ol li { list-style-type: none; } .fullwidthslider .flex-direction-nav a { cursor: pointer; display: block; height: 50px; margin: -25px 0 0 0; /* height / 2 for vertical centering */ overflow: hidden; position: absolute; top: 50%; width: 50px; z-index: 10; color:rgba(255,255,255,0); background-position: center; background-repeat: no-repeat; background-size: contain; } .fullwidthslider .flex-direction-nav .flex-prev { left: 30px; background-image: url("/images/arrow-white-left.png"); } .fullwidthslider .flex-direction-nav .flex-next { right: 30px; background-image: url("/images/arrow-white-right.png"); } @media (max-width: 960px) { .fullwidthslider .slide_content { padding: 5% 40px; max-width: 380px; } .fullwidthslider h2 { font-size: 2rem; line-height: 1em; margin: .7em 0 .2em 0; } .fullwidthslider p { font-size: 1rem; line-height: 1.3rem; margin: 0 0 1em 0; } .fullwidthslider .flex-direction-nav a { height: 26px; margin: -13px 0 0; top: 50%; width: 26px; } .fullwidthslider .flex-direction-nav .flex-prev { left: 15px; } .fullwidthslider .flex-direction-nav .flex-next { right: 15px; } }