将 Flickity 与 Bootstrap 4 轮播集成
Posted
技术标签:
【中文标题】将 Flickity 与 Bootstrap 4 轮播集成【英文标题】:Integrate Flickity With Bootstrap 4 Carousel 【发布时间】:2017-09-24 19:44:54 【问题描述】:我昨天开始使用Bootstrap 4,上周我探索了Flickity。现在我只是尝试使用快速Bootrap 4 examples 将 Flickity 与我的 Bootstrap 4 集成,我正在使用 carousel。但是,当我使用内置轮播添加 Flickity 时,以下内容已被打乱、未对齐或任何调用它。 但我想使用 Bootstrap 4 示例轮播的现有设计,甚至不使用 Flickity 轮播控制器,我只需要添加 Flickity 即可添加触摸、响应和轻弹轮播。 我在下面使用的以下代码.
/* GLOBAL STYLES
-------------------------------------------------- */
/* Padding below the footer and lighter body text */
body
padding-top: 3rem;
padding-bottom: 3rem;
color: #5a5a5a;
/* CUSTOMIZE THE CAROUSEL
-------------------------------------------------- */
/* Carousel base class */
.carousel
margin-bottom: 4rem;
/* Since positioning the image, we need to help out the caption */
.carousel-caption
z-index: 10;
bottom: 3rem;
/* Declare heights because of positioning of img element */
.carousel-item
height: 32rem;
background-color: #777;
.carousel-item>img
position: absolute;
top: 0;
left: 0;
min-width: 100%;
height: 32rem;
/* MARKETING CONTENT
-------------------------------------------------- */
/* Center align the text within the three columns below the carousel */
.marketing .col-lg-4
margin-bottom: 1.5rem;
text-align: center;
.marketing h2
font-weight: normal;
.marketing .col-lg-4 p
margin-right: .75rem;
margin-left: .75rem;
/* Featurettes
------------------------- */
.featurette-divider
margin: 5rem 0;
/* Space out the Bootstrap <hr> more */
/* Thin out the marketing headings */
.featurette-heading
font-weight: 300;
line-height: 1;
letter-spacing: -.05rem;
/* RESPONSIVE CSS
-------------------------------------------------- */
@media (min-width: 40em)
/* Bump up size of carousel content */
.carousel-caption p
margin-bottom: 1.25rem;
font-size: 1.25rem;
line-height: 1.4;
.featurette-heading
font-size: 50px;
@media (min-width: 62em)
.featurette-heading
margin-top: 7rem;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<script src="https://unpkg.com/flickity@2/dist/flickity.pkgd.min.js"></script>
<link href="https://unpkg.com/flickity@2/dist/flickity.min.css" rel="stylesheet" />
<nav class="navbar navbar-toggleable-md navbar-inverse fixed-top bg-inverse">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="#">Carousel</a>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
</ul>
<form class="form-inline mt-2 mt-md-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
<div id="myCarousel" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
<li data-target="#myCarousel" data-slide-to="1"></li>
<li data-target="#myCarousel" data-slide-to="2"></li>
</ol>
<div class="carousel-inner" role="listbox" data-flickity=' "autoPlay": true '>
<div class="carousel-item active">
<img class="first-slide" src="https://images.pexels.com/photos/382686/pexels-photo-382686.jpeg?w=940&h=650&auto=compress&cs=tinysrgb" style="height: 100%">
<div class="container">
<div class="carousel-caption d-none d-md-block text-left">
<h1>Example headline.</h1>
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Sign up today</a></p>
</div>
</div>
</div>
<div class="carousel-item">
<img class="second-slide" src="https://static.pexels.com/photos/249023/pexels-photo-249023.jpeg" >
<div class="container">
<div class="carousel-caption d-none d-md-block">
<h1>Another example headline.</h1>
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Learn more</a></p>
</div>
</div>
</div>
<div class="carousel-item">
<img class="third-slide" src="https://images.pexels.com/photos/362690/pexels-photo-362690.jpeg?w=940&h=650&auto=compress&cs=tinysrgb" >
<div class="container">
<div class="carousel-caption d-none d-md-block text-right">
<h1>One more for good measure.</h1>
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Browse gallery</a></p>
</div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#myCarousel" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<!-- /.container -->
【问题讨论】:
您需要选择 Flickity 或 Bootstrap 的轮播插件来使用。您不能将它们放在一起并期望它们起作用。 github.com/metafizzy/flickity/issues/202 【参考方案1】:我在 Metafizzy Flickity Github 存储库上创建了一个issue,向所有者 Desandro 先生询问将 Flickity 与 Bootstrap 4 轮播集成的问题。
然后他回答:
“我们不能同时使用 Bootstrap 轮播和 Flickity。它们是针对同一功能的两个独立解决方案。我建议您选择其中一个。您可以使用一些内部轮播 Bootstrap CSS,例如 carousel- Flickity 轮播中的标题。”
然后他给出了以下位于at Codepen的演示。代码副本如下。
.carousel-cell
width: 100%;
height: 400px;
background: #777;
position: relative;
.carousel-cell .container
height: 100%;
<link href="https://unpkg.com/flickity@2/dist/flickity.min.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<script src="https://unpkg.com/flickity@2/dist/flickity.pkgd.min.js"></script>
<div class="flickity-carousel" data-flickity=' "autoPlay": true '>
<div class="carousel-cell">
<div class="container">
<div class="carousel-caption d-md-block text-left">
<h1>Example headline.</h1>
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Sign up today</a></p>
</div>
</div>
</div>
<div class="carousel-cell">
<div class="container">
<div class="carousel-caption d-md-block">
<h1>Another example headline.</h1>
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Learn more</a></p>
</div>
</div>
</div>
<div class="carousel-cell">
<div class="container">
<div class="carousel-caption d-md-block text-right">
<h1>One more for good measure.</h1>
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Browse gallery</a></p>
</div>
</div>
</div>
</div>
【讨论】:
以上是关于将 Flickity 与 Bootstrap 4 轮播集成的主要内容,如果未能解决你的问题,请参考以下文章
Flickity carousel:将 prev 和 next 按钮包装在自定义 div 中
当 Flickity 使用轮播渲染子组件时,Nuxt 应用程序抛出“无法读取未定义的属性”