宽度为100%的位图面对屏幕放大的解决办法(可拼接时)

本文探讨如何处理位图在宽度为100%时屏幕放大后的显示问题,通过使用足够长的图片、srcset判断加载、动态拼接图片和CSS布局实现美观且不失清晰度的展示效果。

CSS: 宽度为100%的位图面对屏幕放大的解决办法


需求

一张长图,宽度占满。

这个要求看似很简单,但仔细想来,位图的尺寸设为100%其实是一件很麻烦的事情。位图不像矢量图,可以伸缩。屏幕宽度缩小还好,两边自动隐藏即可;若是放大,由于图片本身宽度有限,就会出现问题。要么是留白,要么是拉伸。留白显然不满足需求;拉伸就会使得图片变模糊,而且高度也会等比例拉伸;如果限制高度,整个图片都会变形。

方法

一开始就给足够长的图,srcset 判断加载。

这方法比较实在,也是通用方法,但我见识短浅,实在不知道什么叫足够长,而且在不需要时,便成了浪费。

另一种方法,用于特殊情况

有理由相信,这种需求,要放的图片一般不会是照片,而是制作出来的图。就算是照片,也是整个100%作为背景(而不会要做成长条),此时对画质的要求不会很高。要么就会允许留白。
将图片的两边做成可拼接的形式,将主图居中,监听屏幕宽度变化,动态地在两端拼接图片。

假设本身是这样的

<div>
    <img id="mainImg" alt="主图片" />
</div>

我们需要这样

<div>
    <img class="left" alt="左部分" />
    <img id="mainImg" alt="主图片" />
    <img class="right" alt="右部分" />
</div>

为了令这一串图片居中,我们需要

<div>
    <div id="container"
        <img class="left" alt="左部分" />
        <img id="mainImg" alt="主图片" />
        <img class="right" alt="右部分" />
    </div>
</div>
#container{
    white-space: nowrap;

    position: absolute;
    left: 50%;
    transform: translate(-50%, 0);
}

只需要每次在两边加的图片尺寸相同,图片的添加就会非常自然了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值