即使容器宽度正确,li元素也不会在一行上

时间:2015-09-08 23:52:41

标签: html css width margins

我正在尝试构建一个滑块,但我正在尝试将所有li元素放在一行上。到目前为止,我有这个小提琴来展示我正在做的事情:

http://jsfiddle.net/wgbs1zpr/

我的HTML:

<div class="carousel">
    <ul style="width: 654px;" class="slides">
        <li class="slide">
            <div class="img-wrapper">
                <img src="assets/img/agouti-teeth.png" alt="Agouti Teeth">
            </div>
            <div class="caption">Agouti Teeth</div>
        </li>
        <li class="slide">
            <div class="img-wrapper">
                <img src="assets/img/chipmunk-tail.png" alt="Chipmunk Tail">
            </div>
            <div class="caption">Chipmunk Tail</div>
        </li>
        <li class="slide">
            <div class="img-wrapper">
                <img src="assets/img/birds-nest.png" alt="Bird's Nest">
            </div>
            <div class="caption">Bird's Nest</div>
        </li>
        <li class="slide">
            <div class="img-wrapper">
                <img src="assets/img/agouti-teeth.png" alt="Agouti Teeth">
            </div>
            <div class="caption">Agouti Teeth</div>
        </li>
        <li class="slide">
            <div class="img-wrapper">
                <img src="assets/img/chipmunk-tail.png" alt="Chipmunk Tail">
            </div>
            <div class="caption">Chipmunk Tail</div>
        </li>
        <li class="slide">
            <div class="img-wrapper">
                <img src="assets/img/birds-nest.png" alt="Bird's Nest">
            </div>
            <div class="caption">Bird's Nest</div>
        </li>
    </ul>
</div>

我的CSS:

.carousel {
    position: relative;
    overflow: hidden;
}
.carousel .slides {
    list-style: none;
    overflow: hidden;
    padding: 0;
    margin: 0;
}
.carousel .slides .slide {
    display: inline-block;
    background-color: #F0F0F0;
    margin: 0 2px;
    width: 105px;
}
.carousel .slides .slide .caption {
    background-color: #D0D0D0;
    text-align: center;
}

每张幻灯片宽度为105像素,左侧和右侧有2像素边距。所以我做的数学是105 x 6(6张幻灯片)。这给了我630像素。使用滑动边距时,右侧和左侧总共有4个像素。所以我做了4 x 6,等于24.然后将它们加在一起。 630 + 24 = 654像素。我以为我的编程已关闭,但无论哪种方式都是如此。但是由于一些奇怪的原因,如果宽度为671像素(大于17),它将仅在一条线上。我为每张幻灯片尝试了110像素的宽度,但随后容器(遵循相同的数学运算)必须有20个额外的像素。所以它会随着时间的推移而变化,所以我不能随便为我的等式添加17个像素。

我不确定发生了什么。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

显示:内联块通常会在元素之间添加大约4px(基于父级的字体大小)的额外空间

要修复你可以:

使用float:left来覆盖display:inline-block或者你需要删除显示的额外间距:inline-block通过这里的技术添加(How to remove the space between inline-block elements?

    .carousel .slides .slide {
        float:left;
         ..
     }

或用于显示:内联块,您需要确保元素之间没有空白区域或通过CSS调整额外的4px间距(基于父字体)

    <ul><li class="slide">
     ...
    </li><li class="slide">
     ...

答案 1 :(得分:0)

添加

float: left;

.carousel .slides .slide

{
}

会做的伎俩

((我们刚刚发表评论,但由于代表不能))