Как сделать карусель адаптивной и под ПК и под смартфон?

205
02 марта 2019, 07:40

Дорогие друзья! Столкнулся с такой проблемой: Есть карусель а изображения на ней разного размера. Высота некоторых изображений больше, и когда они выводятся то это портит вид. Установить постоянное значение height не могу, так как в данном случае в мобильниках будет плохо выводится. С вёрсткой не особо дружу. Посоветуйте как быть. Вот код карусели:

<div id="carouselExampleSlidesOnly" class="carousel slide" data-ride="carousel">
          <div class="carousel-inner">
          @foreach($lastPosts as $key => $last)
            <div class="item @if($key == 0) active @endif">
              <!-- post -->
                                <div class="post post-thumb">
                                    <a class="post-img" href="/{{ $last->category->path }}/post/{{ $last->id }}"><img src="./img/posts/{{ $last->image->name }}" class="img-responsive d-block w-100" alt=""></a>
                                    <div class="post-body">
                                        <div class="post-category">
                                            <a href="/{{ $last->category->path }}">{{ $last->category->name }}</a>
                                        </div>
                                        <h3 class="post-title title-lg"><a href="/{{ $last->category->path }}/post/{{ $last->id }}">{{ $last->title }}</a></h3>
                                        <ul class="post-meta">
                                            <li>{{ \Carbon\Carbon::parse($last->date)->format('d '.$months[date('n')].' Y') }}</li>
                                        </ul>
                                    </div>
                                </div>
                                <!-- /post -->
            </div>
            @endforeach
          </div>
Answer 1

Я впоследнее время юзаю "siema" - крутая карусель, никаких зависимостей и вообще ничего лишнего. Увы в ней не хватает кнопок переключения и кружков-индикаторов, но они легко дописываются в пару строчек. А вот бутстраповскую карусель я терпеть не могу, адекватного способа ее адаптировать нет, собственно из-за чего и перешел на siema

window.onload = function() { 
  var _carousel = document.querySelector('#carousel'); 
var _inner = _carousel.getElementsByClassName('-inner')[0]; 
(function() { 
  var _carousel = document.querySelector('#carousel'); 
  var siema = new Siema({ 
    selector: _inner, 
    duration: 750, 
    easing: 'ease-out', 
    perPage: { //Адаптивность 
      360: 1, 
      576: 2, 
      768: 3, 
      992: 4, 
      1200: 5 
    }, 
    startIndex: 0, 
    draggable: true, 
    multipleDrag: true, 
    threshold: 20, 
    loop: true, 
    rtl: false, 
    onInit: function() { 
      this.interval = setInterval(function() { //Автоперелистывание 
        siema.next(); 
      }, 7000); 
    }, 
    onChange: function() { 
      clearInterval(siema.interval); 
      this.interval = setInterval(function() { 
        siema.next(); 
      }, 7000); 
    }, 
    interval: null 
  }); 
  //Кнопки влево, вправо 
  _carousel.querySelectorAll('.-arrow._left')[0].addEventListener('click', function() { 
    siema.prev(); 
  }); 
 
  _carousel.querySelectorAll('.-arrow._right')[0].addEventListener('click', function() { 
    siema.next(); 
  }); 
  //Точки для быстрого перехода 
  Siema.prototype.addPagination = function() { 
    var f = function(i) { 
      var _this = this; 
      var btn = document.createElement('button'); 
      btn.classList.add('-dot'); 
      btn.addEventListener('click', function() { 
        _this.goTo(i); 
        [].forEach.call(this.parentNode.childNodes, function(el) { 
          el.classList.remove('_active'); 
        }); 
        this.classList.add('_active'); 
      }); 
      this.selector.parentNode.getElementsByClassName('-dots')[0].appendChild(btn); 
    }; 
    for (var i = 0; i < this.innerElements.length; i++) { 
      f.call(this, i); 
    } 
  }; 
  siema.addPagination(); 
})(); 
}; 
 
        //LIBRARY CODE 
        ! function(e, t) { 
           "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define("Siema", [], t) : "object" == typeof exports ? exports.Siema = t() : e.Siema = t() 
         }("undefined" != typeof self ? self : this, function() { 
           return function(e) { 
             function t(r) { 
               if (i[r]) return i[r].exports; 
               var n = i[r] = { 
                 i: r, 
                 l: !1, 
                 exports: {} 
               }; 
               return e[r].call(n.exports, n, n.exports, t), n.l = !0, n.exports 
             } 
             var i = {}; 
             return t.m = e, t.c = i, t.d = function(e, i, r) { 
               t.o(e, i) || Object.defineProperty(e, i, { 
                 configurable: !1, 
                 enumerable: !0, 
                 get: r 
               }) 
             }, t.n = function(e) { 
               var i = e && e.__esModule ? function() { 
                 return e.default 
               } : function() { 
                 return e 
               }; 
               return t.d(i, "a", i), i 
             }, t.o = function(e, t) { 
               return Object.prototype.hasOwnProperty.call(e, t) 
             }, t.p = "", t(t.s = 0) 
           }([function(e, t, i) { 
             "use strict"; 
 
             function r(e, t) { 
               if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") 
             } 
             Object.defineProperty(t, "__esModule", { 
               value: !0 
             }); 
             var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { 
                 return typeof e 
               } : function(e) { 
                 return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e 
               }, 
               s = function() { 
                 function e(e, t) { 
                   for (var i = 0; i < t.length; i++) { 
                     var r = t[i]; 
                     r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) 
                   } 
                 } 
                 return function(t, i, r) { 
                   return i && e(t.prototype, i), r && e(t, r), t 
                 } 
               }(), 
               l = function() { 
                 function e(t) { 
                   var i = this; 
                   if (r(this, e), this.config = e.mergeSettings(t), this.selector = "string" == typeof this.config.selector ? document.querySelector(this.config.selector) : this.config.selector, null === this.selector) throw new Error("Something wrong with your selector       
READ ALSO
Непонятное поведение SVG

Непонятное поведение SVG

у меня следующая проблема в проекте использую SVG файл через object, вот шапка svg'шника и элемента object со страницы:

202
Div не растягивается по высоте

Div не растягивается по высоте

Почему левое меню не растягивается по высоте контента? Код ниже просто для того, чтобы вопрос разрешили опубликовать

173
Область видимости переменной var

Область видимости переменной var

Почему я могу получить доступ к переменной i вне цикла, в котором она использовалась?

151
Почему JQuery работает только для одного элемента?

Почему JQuery работает только для одного элемента?

Всем привет у меня есть таблица, куда элементы наполняются через forEach, и есть JQuery скрипт, ajax который отправляет запросы на сервакНо почему...

204