flexslider使用垂直动画无法正确定位幻灯片

时间:2013-07-18 16:38:16

标签: jquery slider css-transitions flexslider

我遇到了flexslider的问题,当我使用“垂直”幻灯片过渡时幻灯片的间距不均匀。

例如,第一张幻灯片开始时看起来就像它上面有~20px的填充,从底部撞出大约一半的标题。每个新幻灯片都会解决问题,直到滑块重置为止。这只发生在我使用“垂直”过渡时。

flexslider documentation中,它显示为:

  

垂直幻灯片动画不具有与水平动画相同的有机尺寸,并且幻灯片必须具有相同的高度。如果您在使用垂直方向时有不同高度的幻灯片,幻灯片的空间将不正确。

但是,我的每张幻灯片的高度/宽度完全相同。

以下是基本的HTML代码:

<div class="flexslider">
    <ul class="slides">
        <li>
            <img src="myimage" />
            <h1>Title 1</h1>
        </li>
        <li>
            <img src="myimage2" />
            <h1>Title 2</h1>
        </li>
        <li>
            <img src="myimage3" />          
            <h1>Title 3</h1>
        </li>
    </ul>
</div>

以下是相关的CSS:

/* Browser Resets */
.flex-container a:active,
.flexslider a:active,
.flex-container a:focus,
.flexslider a:focus  {outline: none;}
.slides,
.flex-control-nav,
.flex-direction-nav {margin: 0; padding: 0; list-style: none;} 

/* FlexSlider Necessary Styles
*********************************/ 
.flexslider {margin: 0; padding: 0;}
.flexslider .slides > li {display: none; -webkit-backface-visibility: hidden;} /* Hide the slides before the JS is loaded. Avoids image jumping */
.flexslider .slides img {width: 100%; display: block;}
.flex-pauseplay span {text-transform: capitalize;}

/* Clearfix for the .slides element */
.slides:after {content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0;} 
html[xmlns] .slides {display: block;} 
* html .slides {height: 1%;}

/* No JavaScript Fallback */
/* If you are not using another script, such as Modernizr, make sure you
 * include js that eliminates this class on page load */
.no-js .slides > li:first-child {display: block;}

/* FlexSlider Default Theme
*********************************/
.flexslider {margin: 0 0 60px; background: #fff; border: 4px solid #fff; position: relative; -webkit-border-radius: 4px; -moz-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; box-shadow: 0 1px 4px rgba(0,0,0,.2); -webkit-box-shadow: 0 1px 4px rgba(0,0,0,.2); -moz-box-shadow: 0 1px 4px rgba(0,0,0,.2); -o-box-shadow: 0 1px 4px rgba(0,0,0,.2); zoom: 1;}
.flex-viewport {max-height: 2000px; -webkit-transition: all 1s ease; -moz-transition: all 1s ease; transition: all 1s ease;}
.loading .flex-viewport {max-height: 300px;}
.flexslider .slides {zoom: 1;}

.carousel li {margin-right: 5px}

我做了一个jsFiddle,你可以在那里看到幻灯片的位置。我已经尝试调整并调整边距。我正处于需要帮助的地步,因为我认为它与Flexslider脚本正在注入的内联CSS有关。

提前感谢任何可以提供帮助的人!

更新:找到修复程序。 H1标记上有浏览器默认边距。简单解决下面的答案。

1 个答案:

答案 0 :(得分:2)

经过多次试验和错误,我发现问题是<H1>标记。浏览器正在应用默认边距,这使得幻灯片比检测到的flexslider脚本更大。

修复很简单。只需添加:

.slides li h1 {margin:0; padding: 0;}

在修复已应用的情况下查看新的fiddle

希望这有助于其他人。