热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

html容器中图片的拉伸与缩放

html中能通过background-image设置背景图片,也能通过标签来在容器中插入图片。当图片自身大小与容器大小无法匹配时,就需要缩放使其填充容器看上去正常显示。接

html中能通过"background-image"设置背景图片,也能通过标签来在容器中插入图片。

当图片自身大小与容器大小无法匹配时,就需要缩放使其填充容器看上去正常显示。接下来分开讲解。



  • 背景图片“background-image”

首先我们要设置背景图片。因为图片塞入容器中时,无论图片多大,他的宽度都是默认展开全部比例,而高度则需要手动设置,否则不会显示。

父容器设置了红色边框,以此分辨填充效果。

.mask_1 {
height
: 100%; /*这里需要设置高度为100%,因为图片默认以自身的宽度展开(无论他是否大过父级容器),若不设置高度,则图片将无法展示*/
background-image
: url("dragon.png");
}
.mask_2
{
height
: 100%;
width
: 100%;
background-image
: url(小图测试.jpg);
}

效果如下。左图原图比容器大,右图更小。

可以看到默认情况下,大图以容器左上角为原点铺开;小图则是以剩余空间进行平铺。

 

接下来使用 background-size 来进行拉伸的控制。这个属性能取三个值,默认是auto,也就是图片原始尺寸塞进去,无论他是否能显示完全。

 

 

cover:该属性会按比例拉伸当前图片,直至其中较短那条边填满容器。此举会填充整个容器,但不可避免地会出现裁剪——如果原图片长宽比与容器比例不一致的话。

.mask_1 {
height
: 100%;
background-image
: url("dragon.png");
background-size
: cover;
}
.mask_2
{
height
: 100%;
width
: 100%;
background-image
: url(小图测试.jpg);
background-size
: cover;
background-repeat
: no-repeat;/*禁止图片平铺空白,此项仅限于图片本身小于容器大小时*/
}

可以看到,大图片等比例缩放,短边为高,因此右侧被裁剪了;而小图片的短边为宽,因此下侧被裁剪了。

注:可以通过对margin设置负值,来使得内部容器背景图片向相应方向回调,看上去是在原始图片中心

.mask_1 {
height
: 100%;
background-image
: url("dragon.png");
background-size
: cover;
margin-left
: -25%;/*向左移动父容器25%宽度。切记对父容器设置overflow:hidden,否则溢出内容会超出父元素*/
}

注意,这里对相反方向的调动比例不应过大!!!

因为本身是由cover设定是按比例填充父容器的,若设置过大,他会向那个方向等比例放大。

以下图一为-25%,图二为-125%移动

 

 

contain:该选项类似上面的cover,只不过他判定的边是【最长那条边长】,因此图片会完整显示,但有可能会出现空白位置。

.mask_1 {
height
: 100%;
background-image
: url("dragon.png");
background-size
: contain;
/*这里大图片没有使用禁止重复,因此大图片下方的空白被填充了*/
}
.mask_2
{
height
: 100%;
width
: 100%;
background-image
: url(小图测试.jpg);
background-size
: contain;
background-repeat
: no-repeat;
}

 

 

具体数值:可以直接填上具体的数字或者百分比,以此来自定义缩放百分比。格式为 background-size: 宽 高; 如果不设置高的话,他会按照原始比例进行缩放。

.mask_1 {
height
: 100%;
background-image
: url("dragon.png");
background-size
: 50%;
}
.mask_2
{
height
: 100%;
width
: 100%;
background-image
: url(小图测试.jpg);
background-size
: 60% 120%;
background-repeat
: no-repeat;
}

可以看出,第一个大图片自动压缩为【父容器】的50%宽度大小(高度自动等比例缩放),并且因为没有设置禁止重复,因此尽数填充下去了;

而第二个高度设置超出了100%,因此被纵向拉伸并被裁剪了。

设置具体像素值也是同理,再次不再赘述。

 

 



  • 标签插入图片

 

 当然我们也可以在父容器内,通过标签插入图片。我们最好也做一下父容器的设置,别让溢出了。

<div>
<div style="width: 610px; height: 510px;
border: 5px solid red; clear: left;
overflow: hidden; float: left;
margin-right: 60px" class="mask_3"
>
<img src="dragon.png" alt="">/*大图片默认情况*/
div>
<div style="width: 610px; height: 510px;
border: 5px solid red; overflow: hidden;
float: left" class="mask_4"
>
<img src="小图测试.jpg" alt="">/*小图片*/
div>
div>

 

 可以看到是和背景图片差不多,默认情况下。

 

接下来用 object-fit 这个属性来进行调整。参数如下:

 

 

fill:该属性会使得图片显示所有内容至父容器内,如果大小不一致,那就按照父容器比例缩放;

.mask_3 img {
width
: 100%;
height
: 100%;
object-fit
: fill;
}
.mask_4 img
{
width
: 100%;
height
: 100%;
object-fit
: fill;
}

可以看到,左边大图向中间【缩】,变窄了;而右边小图向两边【伸】,变宽了。

 

 

contain:这个同背景图片的contain,以最长边进行判定,因此往往会显示完整,并留白。这里会自动处于父容器的中心位置。

.mask_3 img {
width
: 100%;
height
: 100%;
object-fit
: contain;
}
.mask_4 img
{
width
: 100%;
height
: 100%;
object-fit
: contain;
}

可以看到处于中心位置。需要注意的是,标签还是拥有一开始设定的100%父元素大小,只不过那些留白部分无法填充就是了。

 

 

cover:以短边进行填充,超出部分会自动裁剪,同理处于中心位置。

.mask_3 img {
width
: 100%;
height
: 100%;
object-fit
: cover;
}
.mask_4 img
{
width
: 100%;
height
: 100%;
object-fit
: cover;
}

 可以看到,这里就不需要像背景图片那样需要调整图片的负外边距,直接自带居中效果!

这里不支持上下左右移动,因为实际超出部分是被直接裁掉了的。所以设置边距的话只会留下空白。

 

 

none:原始尺寸展示,但整体处于父元素中心。

.mask_3 img {
width
: 100%;
height
: 100%;
object-fit
: none;
}
.mask_4 img
{
width
: 100%;
height
: 100%;
object-fit
: none;
}

可以看到,大图片多余部分被裁减,并处于父元素中心位置。小图片同理。

 

 

scale-down:自动处理。会自动选择【none】或者【contain】其中的一种,取决于谁能完整显示出来。

.mask_3 img {
width
: 100%;
height
: 100%;
object-fit
: scale-down;
}
.mask_4 img
{
width
: 100%;
height
: 100%;
object-fit
: scale-down;
}

可以看到,如果是大图片,那么他就会自动选择【contain】——以最长边进行填充;

若是小图片则以【none】属性展示。

力保让图片能够整体完整地展示出来!

 

 

 

与君共勉。

 



推荐阅读
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 在Android平台上,视频监控系统的优化与应用具有重要意义。尽管已有相关示例(如http:www.open-open.comlibviewopen1346400423609.html)展示了基本的监控功能实现,但若要提升系统的稳定性和性能,仍需进行深入研究和优化。本文探讨了如何通过改进算法、优化网络传输和增强用户界面来提高Android视频监控系统的整体效能,以满足更复杂的应用需求。 ... [详细]
  • Workbench 流固耦合分析:选择经典APDL还是现代Workbench?一文帮你做出明智决策
    随着ACT插件的推出,经典版APDL的大部分高级功能已成功迁移至现代Workbench平台。本文将深入探讨Workbench在流固耦合分析中的应用,帮助读者在经典APDL与现代Workbench之间做出明智的选择。通过对比两者的功能、易用性和扩展性,我们将为用户提供全面的参考信息,助力其在工程仿真领域取得更好的成果。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 安装Windows 10必须使用U盘吗?如果不使用U盘,还有哪些方法可以安装Windows 10?
    安装Windows 10必须使用U盘吗?如果不使用U盘,还有哪些方法可以安装Windows 10? ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 在需要将网页内容保存为图片时,通常可以使用系统自带的截图工具。然而,对于较长的页面,尤其是带有滚动条的情况,操作起来较为不便。为此,推荐一款功能强大的Chrome浏览器插件——FireShot。该插件不仅支持区域截图,还能实现整页长截图和视频录制,极大地提升了网页内容的捕捉效率和质量。此外,FireShot还提供了丰富的编辑和分享选项,方便用户进行后续处理和分发。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 通过使用七牛云存储服务,本文详细介绍了如何将本地图片高效上传至云端,并实现了内容的便捷管理。借助七牛云的 Python SDK,文章提供了从认证到文件上传的具体代码示例,包括导入必要的库、生成上传凭证以及处理文件路径等关键步骤。此外,还探讨了如何利用七牛云的 URL 安全编码功能,确保数据传输的安全性和可靠性。 ... [详细]
  • 如何使用CSS3创建圆角边框效果? ... [详细]
  • 如何在Windows 10中彻底禁用用户账户控制弹窗
    如何在Windows 10中彻底禁用用户账户控制弹窗 ... [详细]
  • NOIP2000的单词接龙问题与常见的成语接龙游戏有异曲同工之妙。题目要求在给定的一组单词中,从指定的起始字母开始,构建最长的“单词链”。每个单词在链中最多可出现两次。本文将详细解析该题目的解法,并分享学习过程中的心得体会。 ... [详细]
  • 如何在Photoshop中添加颗粒效果以增强图像质感
    Photoshop 是一款广泛使用的图像处理软件,能够实现多种视觉效果。本文将详细介绍如何利用 Photoshop 为图片添加颗粒效果,以增强图像的质感。具体步骤如下:1、首先,打开需要处理的原始图片;2、进入“滤镜”菜单,选择“杂色”选项;3、调整颗粒大小和强度,直至达到理想效果;4、最后,保存处理后的图片。通过这些步骤,您可以轻松为图片增添独特的纹理感。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
author-avatar
周笨笨真笨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有