我有一个(不寻常的)来自客户端的请求,即在“幻灯片”动画期间每张幻灯片之间至少有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
});
答案 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实现你想要的几乎所有:
<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>
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 强>