Дорогие друзья! Столкнулся с такой проблемой: Есть карусель а изображения на ней разного размера. Высота некоторых изображений больше, и когда они выводятся то это портит вид. Установить постоянное значение 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>
Я впоследнее время юзаю "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 Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости