CSS调整图像大小,保持队形

Posted

技术标签:

【中文标题】CSS调整图像大小,保持队形【英文标题】:CSS Resizing Images, keeping formation 【发布时间】:2016-12-16 22:00:33 【问题描述】:

我有一个图像的形成,如下所示:

以下是 html。 “second-panel”是主要的包装,它具有建筑物的背景图像。每个“菱形”形状的图像都使用 CSS 以像素值进行绝对定位。

 <!-- Second panel -->
    <div id="second-panel" class="parallax-wrapper">
        <div id="second-panel-diamonds">
            <img class="second-panel-diamond" src="images/furniture-min.png"  />
            <img class="second-panel-diamond" src="images/automobile-min.png"  />
            <img class="second-panel-diamond" src="images/jewelry-min.png"  />
            <img class="second-panel-diamond" src="images/antique-min.png"  />
        </div>
        <div class="parallax-panel">
            ...(not relevant)...
        </div>
    </div>

CSS:

#second-panel-diamonds
    position: absolute;
    left: 1%;
    top: -5px;

#second-panel .second-panel-diamond
    position: absolute;
    /* width: 22%; */
    width: auto;
    height: auto;
    max-width: 350px;

.second-panel-diamond:first-child
    top: 250px;
    left: 90px;

.second-panel-diamond:nth-child(2)
    top: 80px;
    left: 260px;

.second-panel-diamond:last-child
    left: 337px;
    top: 337px;

问题在于较小的屏幕尺寸,因为图像显然会开始溢出,因为它们具有固定的宽度和高度。我尝试将它们设置为自动百分比宽度和高度,但是随着它们变小,它们当然会破坏形成。我也尝试使用百分比值设置它们的位置,但根据图像的大小调整和窗口的大小调整,它不能正确缩放。

有什么方法可以在缩小图像的同时保持这种结构,还是我必须为更小的屏幕重新设计它?

【问题讨论】:

您是否考虑过为此使用 SVG? 在使用相对尺寸时定位被打破 @Jonasw 我认为图像在技术上的定位是相同的,但是随着图像尺寸本身变大,它们之间的空间变得更小,并且随着它们变小,空间变得更大. @NiettheDarkAbsol 不,我没有。不过,我不确定这在这里会有什么优势? @Jordan Carter:将左、右、上、填充、边距设置为 % 值 【参考方案1】:

是的,使用 CSS @media 查询。对于特定的屏幕尺寸,您只需要减小图像显示的尺寸(您不必使用auto,如果需要,calc(auto - px))(不要忘记稍后更改每个图像位置):

@media screen and (max-width: 600px) 
    #second-panel .second-panel-diamond 
        position: absolute;
        width: 50px;
        height: auto;
    


@media screen and (min-width: 601px) 
    #second-panel .second-panel-diamond 
        position: absolute;
        width: 100px;
        height: auto;
    

【讨论】:

我尝试了第二种解决方案,给每个钻石一个宽度:22%,给 #second-panel-diamonds 包装容器一个 122% 的宽度。但是,每个菱形之间的空间不会根据图像的新宽度进行缩放。我想我将不得不使用媒体查询解决方案并继续调整像素位置。【参考方案2】:

解决此问题的最简单方法是将所有图像合并为一个 PNG 图形,然后将其宽度和高度设置为百分比值。您需要将图像分开吗?

【讨论】:

它们需要分开,因为它们可能需要对每个应用单独的动画。

以上是关于CSS调整图像大小,保持队形的主要内容,如果未能解决你的问题,请参考以下文章

CSS/HTML 使文本相对于图像大小保持不变?

如何在没有 javascript 的情况下使用最大高度和宽度来灵活调整 css 图像大小,同时保持图像纵横比?

如何按比例调整图像大小/保持纵横比?

用CSS按比例调整图像大小,有可能吗?

使用 CSS 调整图像大小以适合容器

调整 CSS 大小后图像移动