css图片铺满浏览器窗口且不变形

news2025/1/11 22:38:10

今天项目中提到一个需求,需要把背景图片铺满浏览器全屏,且图片不变形。
也就是说显示的宽高是不确定的,我第一反应就是background-size: 100% 100%;但是这样做有一个弊端。

下面结合代码图具体讨论一下:
首先,设计一个背景颜色为绿色,背景图片为大象的盒子(这里之所以设置背景颜色,是为了突出背景图片)。然后分别叠加background-size属性值。

<style>
    .box{
        height: 250px;
        width: 400px;
        border: 1px solid red;
        background: palegreen url("imgs/elephant.jpeg") 0 0 no-repeat;
    }
    .on-auto{
        background-size: auto;
    }
    .on-percent{
        background-size: 100% 100%;
        /* background-size: 100% auto; */
        /* background-size: auto 100%; */
    }
    .on-cover{
        background-size: cover;
    }
    .on-contain{
        background-size: contain;
    }
</style>

1. 先看一下效果

我用box盒子模拟浏览器窗口,用大象的图片当做背景图片。

由图中可以看到:
background-size: auto;表示图片原始的大小
background-size: 100% 100%; 宽和高都铺满,即将图片分别往宽和高都拉伸了,图片变形
background-size: auto 100%; 按照高度铺满窗口,宽度等比例放大(即:图片在高度上扩大几倍,在宽度上就扩大几倍)
background-size: 100% auto; 按照宽度铺满窗口,高度等比例放大
background-size:cover; 实现的效果和background-size: 100% auto;一样,难道这两行代码含义相同?不急,往下看
background-size: contain; 实现的效果和background-size: auto 100%;一样,难道这两行代码含义相同?不急,往下看

2. 模拟变换浏览器窗口的宽高
浏览器的窗口大小肯定不是固定的,会随着用户拖动发生变化。
我将box盒子原来的宽高属性值height: 250px;width: 400px;变为height: 400px;width: 300px;,看效果
在这里插入图片描述

由图中可以看到:
此时,
background-size:cover;和background-size: auto 100%;的实现效果一样;
background-size: contain;和background-size: 100% auto;的实现效果一样。
跟第一次的样式效果正好颠倒过来了,所以可以得出:
background-size:cover;按照 窗口宽/图片宽、窗口高/图片高 中的大的倍数等比例放大图片
background-size: contain;按照 窗口宽/图片宽、窗口高/图片高 中的小的倍数等比例放大图片

想要实现背景图片铺满窗口,且图片不变形:
首先排除:background-size: auto;background-size: 100% 100%;和background-size: contain;
然后排除:background-size: auto 100%; 和background-size: 100% auto;
因为单纯按照某个边放大,可能会出现铺不满的情况
推荐:background-size:cover;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

请求上下文头信息:User-Agent ,Referer,Form,Server,Allow,Accept-Range

User-Agent User-Agent 的组成 由1个product和后面零个或多个product信息组成 product包含两个部分&#xff0c;token和token指向的软件的版本号 举例中 Mozilla 5.0 表示浏览器兼容Mozilla 5.0版本的&#xff0c;后面的window 信息&#xff0c;就属于conment部分 RWS由一个…

36. 实战:基于上一节的全面升级——实现某音批量下载功能

目录 前言 目的 思路 代码实现 1. 先将下载单个视频的功能封装成函数 2. 获取下载列表 3. 创建线程池调用下载函数 完整源码 运行效果 总结 前言 上一节我们实现了某短视频平台的去水印下载功能&#xff0c;本节我们实现批量抓取&#xff1a;给定某一个用户主页&…

Cache的PLRU替换策略

LRU(Least Recently Used)替换策略是cache的经典替换策略之一,然而,LRU替换策略的硬件开销较大。因此,一些现代处理器,例如Intel 486和PowerPC,它们使用的cache替换策略是PLRU(pseudo-LRU)。 PLRU是LRU的一种近似方法,本文介绍PLRU中的tree-PLRU(tree-based pseudo-…

VSCode 配置 C/C++ 开发环境( MSVC )

0.绿色版本下载地址&#xff1a;https://www.aliyundrive.com/s/DMK13owZSrC绿色版本采用 VSCode User 1.7.4.2 X64 版本。绿色便携版本采用的生成工具来自 Visual C 2010 版本提供的 32 位工具链。Win 7 Win10 Win 11 可以正常运行。使用方法&#xff0c;下载文件后&#xff0…

微信小程序021理发店美容预约系统java nodejs php

美容预约小程序微信端要求在系统的手机上可以运行&#xff0c;主要实现了管理端&#xff1b;首页、个人中心、用户管理、服务项目管理、美容师管理、预约管理、类型管理、系统管理&#xff0c;微信端&#xff1b;首页、预约、我的等主要功能模块的操作和管理。 小程序前端框架&…

ML LightGBM详细原理讲解+面试必考知识点

&#x1f604; 三大竞赛杀器&#xff1a;XGBoost、LightGBM、CatBoost。之前我已更新完XGBoost的讲解&#xff0c;这次来讲讲LightGBM。我也是看网上看了多篇文章做总结的(我是遇到不会问题的就去搜&#xff0c;实在记不起来看过哪些&#xff0c;如果有侵权问题&#xff0c;可私…

Spark 读取、写入时序数据库TDengine以及TDengine概述

一、TDengine是什么TDengine 是一款高性能、分布式、支持 SQL 的时序数据库&#xff0c;其核心代码&#xff0c;包括集群功能全部开源&#xff08;开源协议&#xff0c;AGPL v3.0&#xff09;。TDengine 能被广泛运用于物联网、工业互联网、车联网、IT 运维、金融等领域。除核心…

Postman form-data、x-www-form-urlencoded的区别

我们在平时的postman请求调试&#xff0c;以及web的http请求开发时&#xff0c;常常能看到以下几种传参的形式 form-data、x-www-form-urlencoded、raw、binary&#xff0c;那么这些请求方式的区别是什么呢&#xff1f; 1、form-data: 就是http请求中的multipart/form-data,它…

一文读懂!2023量子计算行业发展方向

&#xff08;图片来源&#xff1a;网络&#xff09;量子计算是一个引人入胜的主题&#xff0c;放眼全球&#xff0c;很多文章报道了商业量子计算的项目和应用&#xff0c;关于量子计算行业在2023年的可能发展方向&#xff0c;本文从大量文章中筛选罗列了一些主要发展方向。McKi…

postman生成测试报告

一、newman插件生成测试报告安装nodejs官网下载适合自己设备的包&#xff0c;下载后直接傻瓜式安装&#xff1b;安装完成验证&#xff1a;打开终端&#xff0c;输入 node -v&#xff0c;即可查看安装版本&#xff1b;安装newman安装好nodejs后&#xff0c;通过npm来安装newman&…

VueJS 基础之组件

文章目录参考描述组件化开发组成templatescriptstylemain.js使用嵌套关系组件的使用LeftRight举个栗子全局组件及私有组件私有组件全局组件举个栗子main.jsApp.vue参考 项目描述VueJS官方文档搜索引擎Bing哔哩哔哩黑马程序员 描述 项目描述Edge109.0.1518.70 (正式版本) (64 …

计算机网路6-详述网路层:数据交换、路由算法和协议、网络协议

一、网络层基本概念 1、主要任务 把分组从源端传到目的端&#xff0c;为分组交换网上的不同主机提供通信服务 2、网络层传输单位--数据报 数据报与分组之间关系&#xff1a; 分组是数据报通过切割划分出来的一个片段&#xff0c;多个分组组成数据报 3、网络层的几大功能 路…

LeetCode-122. 买卖股票的最佳时机 II

目录暴力递归动态规划贪心题目来源 122. 买卖股票的最佳时机 II 暴力递归 根据题意&#xff1a;由于不限制交易次数&#xff0c;在每一天&#xff0c;就可以根据当前是否持有股票选择相应的操作。「暴力搜索」在树形问题里也叫「回溯搜索」、「回溯法」。 首先画出树形图&…

如何实现报表集成?(二)——用户同步和单点登录

在上一篇&#xff0c;我们对报表集成进行了一个整体的介绍&#xff0c;从报表集成的背景、痛点、需求、集成架构等几个方面进行了阐述。 这一篇&#xff0c;我们来聊一下用户同步和单点登录。行文过程中得到了来自报表软件厂商 Smartbi 的报表产品&#xff1a;电子表格软件的协…

c++11 标准模板(STL)(std::multiset)(三)

定义于头文件 <set> template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class multiset;(1)namespace pmr { template <class Key, class Compare std::less<Key>> usi…

怎么给视频配音好听?这些好方法快学起来

应该不少小伙伴每天都会刷各种短视频&#xff0c;有些视频很搞笑&#xff0c;有些却很无趣&#xff0c;让人想直接的划走。很多制作短视频的小伙伴应该都知道&#xff0c;很多视频都需要配音来衬托&#xff0c;吸引别人的眼球。当你想给自己的视频配上好听的声音&#xff0c;但…

QT/C++——网络编程

目录 一、基础知识复习 二、UDP 客户端&#xff1a; 服务器&#xff1a; 三、TCP 服务器&#xff1a; 客户端&#xff1a; 四、小项目 客户端&#xff1a; 服务器&#xff1a; 一、基础知识复习 这部分内容前面讲的比较详细&#xff0c;现在就是简单复习一下。 两台主…

OAuth2授权机制介绍指南

目录 一、什么是OAuth2&#xff1f; 二、OAuth2中有哪些角色&#xff1f; 三、OAuth2的授权流程&#xff1f; 四、OAuth2令牌的特点&#xff1f; 五、OAuth2有哪些授权方式&#xff1f; 5.1 授权码 5.2 隐藏方式 5.3 密码方式 5.4 凭证方式 一、什么是OAuth2&#xff1f; …

PowerCLi 批量多esxi主机创建登陆用户

官网PowerCLI参数配置参考 New-VMHostAccount 创建用户参考New-VIRole 创建权限组参考Get-VIPrivilege 查询所有角色层配置信息参考创建esxi登陆用户一键脚本,目前只能单

2023年软考报哪门比较好?

2023年软考报名还有一个月左右就会启动了&#xff0c;大家有想好报考哪门吗&#xff1f;不妨看看下文&#xff0c;让你的思路更加清晰。 软考科目汇总&#xff1a; (1)高级资格&#xff1a;网络规划设计师、系统规划与管理师、系统架构设计师、信息系统项目管理师、系统分析师…