光滑的旋转木马中间项目放大但在另一个项目悬停时缩小
Slick carousel middle item enlarged but shrinks when another item is hovered over
我有一个轮播,默认显示 3 个项目。在我的 Photoshop 模型中,中间的项目稍微放大了。我可以使用始终应用于中间项的 slick-center
class 来实现此效果,但现在我想知道是否可能,所以当其他项目之一与之交互(悬停)时放大,中间的项目会 return 到正常(较小)大小?
您认为这在插件中是可能的还是需要自定义位 Javascript?
我确实认为我可以在整个旋转木马悬停时缩小所有尺寸,然后放大鼠标悬停的实际项目,但这有点跳动而且不太优雅。
代码笔:https://codepen.io/moy/pen/GGNEza
$(document).ready(function() {
$('.slick-carousel').slick({
centerMode: true,
centerPadding: '0',
slidesToShow: 3,
arrows: false,
dots: true,
responsive: [{
breakpoint: 960,
settings: {
centerMode: true,
centerPadding: '120px',
slidesToShow: 1
}
},
{
breakpoint: 600,
settings: {
centerMode: true,
centerPadding: '60px',
slidesToShow: 1
}
},
{
breakpoint: 480,
settings: {
centerMode: true,
centerPadding: '30px',
slidesToShow: 1
}
}
]
});
});
/* Band */
.band {
background: red;
padding: 60px 0 30px;
width: 100%;
}
.wrap {
margin: 0 auto;
padding: 0 30px;
max-width: 1350px;
}
/* Resorts */
.resort {
background: white;
box-shadow: 0 0 15px rgba(0, 0, 0, .30);
margin: 30px 0;
position: relative;
text-align: center;
transition: all .15s;
transform: scale(.95);
}
.resort img {
display: block;
width: 100%;
max-width: 100%;
}
.slick-center {
transform: scale(1.06);
z-index: 10;
}
.test {
padding: 30px 15px 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.css" rel="stylesheet"/>
<div class="band">
<div class="wrap">
<div class="slick-carousel">
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
</div>
</div>
</div>
您可以通过一个简单的 jQuery 脚本来实现这一点,当鼠标悬停在任何其他 slick-slide
上时,将 .slick-current
class 设为目标并为其指定自定义 class。
完成后,一组简单的 CSS 规则可以根据 class 调整大小来解决这个问题。
额外的 jQuery 将如下所示:
$('.slick-slide').mouseenter(function(){
$('.slick-current').addClass('small');
});
$('.slick-slide').mouseleave(function(){
$('.slick-current').removeClass('small');
});
添加的 CSS 将如下所示:
.slick-current.small {
transform: scale(0.95);
}
.slick-slide:hover {
transform: scale(1.06);
}
这是一个工作示例:
(你的 codepen 有点不同,所以我也用一个工作示例 fork - here)
$(document).ready(function() {
$('.slick-carousel').slick({
centerMode: true,
centerPadding: '0',
slidesToShow: 3,
arrows: false,
dots: true,
responsive: [{
breakpoint: 960,
settings: {
centerMode: true,
centerPadding: '120px',
slidesToShow: 1
}
},
{
breakpoint: 600,
settings: {
centerMode: true,
centerPadding: '60px',
slidesToShow: 1
}
},
{
breakpoint: 480,
settings: {
centerMode: true,
centerPadding: '30px',
slidesToShow: 1
}
}
]
});
$('.slick-slide').mouseenter(function(){
$('.slick-current').addClass('small');
});
$('.slick-slide').mouseleave(function(){
$('.slick-current').removeClass('small');
});
});
/* Band */
.band {
background: red;
padding: 60px 0 30px;
width: 100%;
}
.wrap {
margin: 0 auto;
padding: 0 30px;
max-width: 1350px;
}
/* Resorts */
.resort {
background: white;
box-shadow: 0 0 15px rgba(0, 0, 0, .30);
margin: 30px 0;
position: relative;
text-align: center;
transition: all .15s;
transform: scale(.95);
}
.resort img {
display: block;
width: 100%;
max-width: 100%;
}
.slick-center {
transform: scale(1.06);
z-index: 10;
}
.test {
padding: 30px 15px 0;
}
.slick-current.small {
transform: scale(1);
}
.slick-slide:hover {
transform: scale(1.06);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.css" rel="stylesheet"/>
<div class="band">
<div class="wrap">
<div class="slick-carousel">
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
</div>
</div>
</div>
我有一个轮播,默认显示 3 个项目。在我的 Photoshop 模型中,中间的项目稍微放大了。我可以使用始终应用于中间项的 slick-center
class 来实现此效果,但现在我想知道是否可能,所以当其他项目之一与之交互(悬停)时放大,中间的项目会 return 到正常(较小)大小?
您认为这在插件中是可能的还是需要自定义位 Javascript?
我确实认为我可以在整个旋转木马悬停时缩小所有尺寸,然后放大鼠标悬停的实际项目,但这有点跳动而且不太优雅。
代码笔:https://codepen.io/moy/pen/GGNEza
$(document).ready(function() {
$('.slick-carousel').slick({
centerMode: true,
centerPadding: '0',
slidesToShow: 3,
arrows: false,
dots: true,
responsive: [{
breakpoint: 960,
settings: {
centerMode: true,
centerPadding: '120px',
slidesToShow: 1
}
},
{
breakpoint: 600,
settings: {
centerMode: true,
centerPadding: '60px',
slidesToShow: 1
}
},
{
breakpoint: 480,
settings: {
centerMode: true,
centerPadding: '30px',
slidesToShow: 1
}
}
]
});
});
/* Band */
.band {
background: red;
padding: 60px 0 30px;
width: 100%;
}
.wrap {
margin: 0 auto;
padding: 0 30px;
max-width: 1350px;
}
/* Resorts */
.resort {
background: white;
box-shadow: 0 0 15px rgba(0, 0, 0, .30);
margin: 30px 0;
position: relative;
text-align: center;
transition: all .15s;
transform: scale(.95);
}
.resort img {
display: block;
width: 100%;
max-width: 100%;
}
.slick-center {
transform: scale(1.06);
z-index: 10;
}
.test {
padding: 30px 15px 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.css" rel="stylesheet"/>
<div class="band">
<div class="wrap">
<div class="slick-carousel">
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
</div>
</div>
</div>
您可以通过一个简单的 jQuery 脚本来实现这一点,当鼠标悬停在任何其他 slick-slide
上时,将 .slick-current
class 设为目标并为其指定自定义 class。
完成后,一组简单的 CSS 规则可以根据 class 调整大小来解决这个问题。
额外的 jQuery 将如下所示:
$('.slick-slide').mouseenter(function(){
$('.slick-current').addClass('small');
});
$('.slick-slide').mouseleave(function(){
$('.slick-current').removeClass('small');
});
添加的 CSS 将如下所示:
.slick-current.small {
transform: scale(0.95);
}
.slick-slide:hover {
transform: scale(1.06);
}
这是一个工作示例:
(你的 codepen 有点不同,所以我也用一个工作示例 fork - here)
$(document).ready(function() {
$('.slick-carousel').slick({
centerMode: true,
centerPadding: '0',
slidesToShow: 3,
arrows: false,
dots: true,
responsive: [{
breakpoint: 960,
settings: {
centerMode: true,
centerPadding: '120px',
slidesToShow: 1
}
},
{
breakpoint: 600,
settings: {
centerMode: true,
centerPadding: '60px',
slidesToShow: 1
}
},
{
breakpoint: 480,
settings: {
centerMode: true,
centerPadding: '30px',
slidesToShow: 1
}
}
]
});
$('.slick-slide').mouseenter(function(){
$('.slick-current').addClass('small');
});
$('.slick-slide').mouseleave(function(){
$('.slick-current').removeClass('small');
});
});
/* Band */
.band {
background: red;
padding: 60px 0 30px;
width: 100%;
}
.wrap {
margin: 0 auto;
padding: 0 30px;
max-width: 1350px;
}
/* Resorts */
.resort {
background: white;
box-shadow: 0 0 15px rgba(0, 0, 0, .30);
margin: 30px 0;
position: relative;
text-align: center;
transition: all .15s;
transform: scale(.95);
}
.resort img {
display: block;
width: 100%;
max-width: 100%;
}
.slick-center {
transform: scale(1.06);
z-index: 10;
}
.test {
padding: 30px 15px 0;
}
.slick-current.small {
transform: scale(1);
}
.slick-slide:hover {
transform: scale(1.06);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.css" rel="stylesheet"/>
<div class="band">
<div class="wrap">
<div class="slick-carousel">
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
<div>
<div class="resort">
<img src="https://www.fillmurray.com/460/300" alt="ALT TEXT" />
<div class="test">
<h4>Spain</h4>
<h2>Ibiza</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p>
<a href="#" class="btn">Find Out More</a>
</div>
</div>
</div>
</div>
</div>
</div>