【问题标题】:Position Span Elements 50% from Top of Image将跨度元素从图像顶部定位 50%
【发布时间】:2015-06-17 19:28:26
【问题描述】:

我正在用 JavaScript 创建幻灯片,并希望将控件(下一个和上一个按钮)相对于图像定位,使其距离图像顶部 50%。

这是我的 HTML:

<div id="slideshow">
            <figure>
                <img src="https://c4.staticflickr.com/8/7495/16322256485_08ee0ee36f_z.jpg" />
                <figcaption>This is an example of a really long caption. Here I go. Do I wrap to a second line? Wrap wrap wrap wrap. Wrap Wrap Wrap Wrap Wrap Wrap Wrap Wrap Wrap Wrap Wrap</figcaption>
            </figure>
            <figure>
                <img src="https://c1.staticflickr.com/9/8584/16136057529_e7b64928d0_z.jpg" />
                <figcaption>Insert caption</figcaption>
            </figure>
            <figure>
                <img src="https://c2.staticflickr.com/8/7474/16120961661_8dc12962dd_z.jpg" />
                <figcaption>Insert caption</figcaption>
            </figure>

        </div><!-- end slideshow -->

我正在定位的跨度通过 JavaScript 插入到幻灯片的结束 div 上方。

最初的计划是相对于幻灯片 div 定位按钮。但是,如果标题跨越多行,则幻灯片的高度会增加并且按钮会移动。

我希望按钮的位置相对于图像的高度保持不变。因此,我希望它相对于图像定位自身,而不考虑标题的高度。

我不能用像素定位,因为幻灯片必须是响应式的。

这是我的 JS 小提琴:

https://jsfiddle.net/amykirst/vtsru170/

我的一个想法是通过将图像和跨度包装在 div 中来更改 HTML,如下所示:

<figure>
                <div class="img-contain">
                <img src="https://c1.staticflickr.com/9/8584/16136057529_e7b64928d0_z.jpg" />
                </div>
                <figcaption>This is an example of a really long caption. Here I go. Do I wrap to a second line? Wrap wrap wrap wrap. Wrap Wrap Wrap Wrap Wrap Wrap Wrap Wrap Wrap Wrap Wrap</figcaption>
            </figure>

然后让 JavaScript 在“img-contain” div 中插入 span,并将其相对于该 div 定位。 JavaScript 需要定位当前正在显示的图像,并在每次按下“下一个”或“上一个”按钮时添加跨度。

现在,它会在页面加载时添加一次按钮。

我认为我的新解决方案可能过于复杂,所以我想看看是否有更好的答案。

【问题讨论】:

    标签: javascript css slideshow


    【解决方案1】:

    给你:

    https://jsfiddle.net/vtsru170/4/

    诀窍是将padding-bottom 添加到下一个/上一个跨度以匹配图像的高度(根据纵横比)。我使用标签内的 p 标签作为按钮样式。

    【讨论】:

    • 如果我不知道 cmets 的高度怎么办?在我的示例中,第一个跨越多行,但我不知道在实践中它是否会更多或更少。
    • 也许我应该使用 JavaScript 检查最高幻灯片的高度,然后让其他幻灯片匹配?
    • 在这种情况下,行数无关紧要。您是否注意到(在小提琴中)我为第一张幻灯片添加了很多行文字?
    • 谢谢。昨晚我在手机上查看堆栈溢出,但看不到小提琴。两个问题。 (1) span 的 padding-bottom 是基于什么?它是如何计算的?我认为它将基于其父元素(幻灯片)的高度,但事实并非如此。 (2) 如果我希望控件位于图像的中心,但我不知道图像的高度是多少?在您的小提琴中,您使用的百分比有效,但如果图片的高度发生变化,那么 75% 的百分比将不再位于中间。
    • 查询。 1,刚刚看到padding-bottom是根据父元素的宽度来的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多