开发避坑指南(14):CSS背景图横竖屏自适应方案

需求背景

同一分辨率的背景图,需要在相同分辨率的两个屏幕上显示,两个屏幕不同的是一个是横向显示(1920x1080),一个是纵向显示(1080x1920)。现在的问题是屏幕纵向显示后,下方出现了一大截空白区域。那么如何让背景图自适应显示?

原代码

vue模版

<template>
  <div class="order-show">
      ......
  </div>
</template>      

css样式

<style lang="scss" scope>
@media screen {
  .order-show {
    color: #f8f9fa;
    overflow-x: hidden;
    background: url(../image/order-show.png) no-repeat;
  }
}
</style>

解决办法

方案1:

在原来样式的基础上添加

background-repeat:no-repeat;  
background-size:100% 100%;

background-repeat 用于控制背景图像的平铺方式,决定图像在元素背景区域内的重复规则。no-repeat表示图像不重复,仅显示一。background-size: 100% 100% 表示背景图像‌拉伸至完全覆盖容器‌,‌不保持原始比例‌。这个方式虽然能填充空白处,但是背景图被拉伸变形了。那有没有更好的方案?

方案2:

在原来样式的基础上添加

background-repeat:no-repeat;
background-size: cover;

background-size的值改用 cover 或 contain 保持比例,能完全覆盖无留白,适合全屏背景。这种方式最合适。

扩展:

在 CSS 中,@media screen 是一种媒体查询规则,专门针对屏幕设备(如电脑、手机、平板等)应用样式规则。基本语法

@media screen and (条件) {
  /* 针对屏幕设备的样式规则 */
}

screen:限定规则仅适用于屏幕设备(不包括打印设备)。

and (条件):可附加视口宽度、分辨率等条件(如 min-width: 768px)。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帧栈

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值