【问题标题】:Set relative position to an image inside a block in CSS在 CSS 中设置块内图像的相对位置
【发布时间】:2023-03-19 14:50:01
【问题描述】:

我在一个块内有一个元素。块高度为 500px,宽度为屏幕的 100%。在这个配置中,我知道我可以看到原始高度的 500 像素(因为我在我的 css 文件中设置了溢出:隐藏属性)。

图片有以下css:

position: absolute;
top: 0;
left: 0;

如何在我的 top 属性中设置 100% 以在没有 JavaScript 的情况下查看图像的底部? 我很抱歉我的英语。这是一张帮助你理解的图片:

我需要知道是否有办法在 CSS/HTML 中做到这一点。在此之前,我使用了 background-position 属性,但我切换到此属性是为了优化我的网站的性能(在我的情况下,背景会产生重绘事件)。另外,我害怕使用 JavaScript 来获得以像素为单位的相对位置,因为我的设计是流畅的设计(100% 的窗口)并且样式重新计算会降低页面的性能。

请注意,图像不是静态的。 (图片在我网站的所有页面中都不同,分辨率也不同)。

UPDATE 实际上,bottom:100% 将图像设置为父级高度的 100%。但是如何将图片设置为-100% 来获取图片的边缘呢?

再次,对不起我的英语,感谢您的提示!

【问题讨论】:

    标签: html css image position


    【解决方案1】:

    您可以使用bottom CSS 属性代替top。例如,您的 CSS 可能看起来像这样:

    #imageContainer {
        position: relative;
        overflow: hidden;
        height: 100px;
    }
    #imageContainer > img {
        position: absolute;
        bottom: 0;
        left: 0;
    }
    

    将绝对定位与bottom 属性结合使用将允许您将图像的底部固定到最近的相对定位元素——在本例中为包含div。

    【讨论】:

    • 您好,谢谢您的回答!这很有效,但很奇怪,我需要设置bottom: 12.3% 来查看图像的底部,并设置bottom: -87.8% 来获取顶部。父元素只有一个 height 属性设置为 500px
    • 编辑:这实际上不起作用,我有一些分辨率不同的图片,我需要设置bottom:-121% 才能获得图像的顶部。跨度>
    • 您必须将容器的位置设置为相对位置,并将图像定位设置为绝对位置才能获得所需的效果:jsfiddle.net/u2SjC/1
    • 解决了溢出问题,现在bottom:0% 工作了,谢谢!但是如果我设置bottom:-100% 这不起作用。这不是图像的绝对顶部。 jsfiddle.net/7qWAW
    • UPDATE 实际上,bottom:100% 将图像设置为父级高度的 100%。但是如何将图像设置在-100% 以获得图像的边缘呢?
    【解决方案2】:

    从您的问题和 cmets 来看,您想要实现的目标确实令人困惑。但是,您似乎试图在某个特定时间显示图像的顶部或底部(您不清楚确切的时间或方式,但这可能并不相关)。

    我制作了this fiddle,它的图像在未悬停时位于顶部,而在悬停时位于底部。这更多地表明您需要避免任何百分比,因为这些将无法正常工作因为您的图像会根据窗口宽度不断改变大小(因此要移动它的百分比总是在变化)。

    答案的本质,不过和cm2贴的差不多,只是你没有掌握。 如果你想要顶部显示,设置top: 0,如果你想要底部显示,设置bottom: 0如果你以某种方式在它们之间切换(就像我的小提琴那样),那么你需要将相反的设置为 auto 以使其工作。

    如果我完全没有理解你想要达到的目标,请纠正我。

    【讨论】:

    • 嗨@ScottS,再次感谢您的干预。这确实是我暂时没有解决的问题(请查看:stackoverflow.com/questions/17516544/…)。我的图像需要调整大小和定位以避免“过度定位”。例如,当屏幕低于1200px 时,图像需要在top 的25% 处。如果屏幕在1200px 上方,则图像需要在bottom 的25% 处。问题是,当我将top 转换为bottom 时,我无法制作流畅的动画。这是我的问题。
    • 如果您要使用 javascript(我认为您出于性能原因试图避免使用),那么您应该能够“计算”特定时刻所需的偏移量,而不必“在 topbottom 之间翻转”(这是您最近使用 javascript 发布的问题)。我仍然认为百分比不是您需要使用的,而是来自您的 javascript 的实际像素计算。在我看来,您为了避免使用背景图像而经历了很多事情,最终它可能并不能真正为您节省任何东西(只是我的看法)。
    • 是的,我已经使用像素而不是百分比。我尝试在调整窗口大小时使用 jQuery 获得解决方案,但这实际上并不顺利,或者我的位置有一些问题。
    猜你喜欢
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多