【问题标题】:flexslider not positioning slides correctly using vertical animationflexslider 没有使用垂直动画正确定位幻灯片
【发布时间】:2013-07-18 16:38:15
【问题描述】:

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

例如,第一张幻灯片一开始看起来像是在其上方有约 20 像素的填充,将大约一半的标题从底部撞出。每张新幻灯片都会使问题复杂化,直到滑块重置。这只发生在我使用“垂直”过渡时。

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 标签上有浏览器默认边距。在下面的答案中进行简单修复。

【问题讨论】:

  • 那个小提琴有水平滚动。
  • 另外,里面还有一个孤立的 HTML 标签:
  • 我在 Chrome 中看不到问题。你使用的是什么浏览器?这是一个更新的小提琴:jsfiddle.net/isherwood/nwtwW/2
  • 好的,很抱歉 - 我一定没有更新它,或者使用了错误的链接。你现在看到问题了吗? jsfiddle.net/timshutes/nwtwW/1我抓到了孤儿标签并早先修复了它,但是小提琴链接错误。很抱歉!
  • 我确实看到了问题。我无意中将更新的小提琴设置为水平。一次做太多事情。

标签: jquery slider css-transitions flexslider


【解决方案1】:

经过反复试验,我发现问题出在&lt;H1&gt; 标签上。浏览器正在应用默认边距,这使得幻灯片比检测到的 flexslider 脚本大。

修复很简单。只需添加:

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

查看新的fiddle 并应用了修复。

希望这对其他人有所帮助。

【讨论】:

  • 同样的问题 :-) &lt;p&gt; 的保证金对我来说是个问题
猜你喜欢
相关资源
最近更新 更多
热门标签