Flexslider - 可能在幻灯片之间有边距?

时间:2012-10-16 03:05:38

标签: jquery slider slideshow flexslider

我有一个(不寻常的)来自客户端的请求,即在“幻灯片”动画期间每张幻灯片之间至少有40个像素的填充/边距。 Flexslider的默认值是针对彼此刷新的项目。

2.0中有一个新的JQuery选项用于“itemMargin”,但它似乎只用于“carousel”设置。如果我通过CSS应用保证金,每张幻灯片都会碰到下一张幻灯片。

无论如何在幻灯片之间应用保证金,还是这是不可能的选择?

这是我当前的选项设置

$(window).load(function() {
    $('.home_slider').flexslider({

        animation: "slide",              //String: Select your animation type, "fade" or "slide"
        smoothHeight: false,            //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode
        slideshow: false,                //Boolean: Animate slider automatically
        controlNav: false, 
        directionNav: true,             //Boolean: Create navigation for previous/next navigation? (true/false)
        prevText: "%",           //String: Set the text for the "previous" directionNav item
        nextText: "&",
        // Carousel Options
        itemMargin: 40
    });

2 个答案:

答案 0 :(得分:8)

不是试图将边距直接应用于LI元素,而是在每张幻灯片中包含另一个包裹图像的元素,然后将边距应用于它。

<div class="flexslider">
  <ul class="slides">
    <li><div class="slide-contents"><img src="http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg" /></div></li>
    <li><div class="slide-contents"><img src="http://flexslider.woothemes.com/images/kitchen_adventurer_lemon.jpg" /></div></li>
    <li><div class="slide-contents"><img src="http://flexslider.woothemes.com/images/kitchen_adventurer_donut.jpg" /></div></li>
    </ul>
</div>

然后在你的CSS中做这样的事情(假设你想要幻灯片之间的40px,在幻灯片的每一面添加20px:

.flexslider .slide-contents {
  margin: 0 20px;
}

如果您想让滑块的左/右侧与页面内容的其余部分齐平,请在flexslider本身上添加负边距。

.flexslider {
  margin: 0 -20px;
}

您可以在Flexslider中的每张幻灯片中包含尽可能多的标记,这样您就可以根据需要添加标题或其他布局修改。

答案 1 :(得分:0)

我可以通过一点点jiggery-pokery实现你想要的几乎所有:

HTML

<div class="flexslider">
  <ul class="slides">
    <li><img src="http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg" /></li>
      <li><img src="http://flexslider.woothemes.com/images/kitchen_adventurer_lemon.jpg" /></li>
    <li><img src="http://flexslider.woothemes.com/images/kitchen_adventurer_donut.jpg" /></li>
    <li><img src="http://flexslider.woothemes.com/images/kitchen_adventurer_caramel.jpg" /></li>
    </ul>
</div>

使用Javascript / jQuery的

var sliderImgWidth = 200,
    sliderMargin = 40;

$f = $('.flexslider').css('width', sliderImgWidth + sliderMargin);
$f.find('img').css({
    'width': '200px',
    'margin-right': sliderMargin / 2 + 'px',
    'margin-left': sliderMargin / 2 + 'px'
});
$f.flexslider({
    animation: "slide"
});

将边距隐藏在静态状态会很好,但任何减小容器宽度的尝试都会导致图像定位不佳和/或重叠。我尝试了各种各样的但却未能使flexslider成为我想做的事。

<强> DEMO

通过仔细设计img元素,可以在CSS中实现相同的功能。这里的秘密似乎是用你自己的类构建img标签,这样CSS特异性规则阻止flexslider(或它是jsFiddle?)覆盖指令。在演示中,我使用了class="x"

<强> DEMO