首页 > 其他分享 >固定的外框尺寸,里面的图片尺寸不固定,如何让图像自适应外框呢?

固定的外框尺寸,里面的图片尺寸不固定,如何让图像自适应外框呢?

时间:2024-12-07 09:13:42浏览次数:4  
标签:object container 固定 img 外框 background fit 图片尺寸 size

在前端开发中,要让不同尺寸的图片自适应固定大小的外框,你可以使用以下几种方法:

1. object-fit CSS 属性:

这是最推荐的方法,object-fit 属性可以控制图像在容器内的缩放和对齐方式。常用的值有:

  • contain: 图片完整显示在容器内,保持宽高比,可能会留白。
  • cover: 图片完全覆盖容器,保持宽高比,可能会被裁剪。
  • fill: 图片拉伸填满容器,宽高比可能会改变。
  • scale-down: 类似 containnone 中较小的一个,也就是图片在保持宽高比的前提下,尽可能的缩小以适应容器,不会放大。
  • none: 图片不缩放,保持原始大小。
.container {
  width: 300px; /* 固定宽度 */
  height: 200px; /* 固定高度 */
  overflow: hidden; /* 隐藏超出部分 */
}

.container img {
  width: 100%;
  height: 100%;
  object-fit: cover; /* 或 contain, fill 等 */
}

2. 使用 background-size (背景图片):

如果图片是作为背景图片使用的,可以使用 background-size 属性:

.container {
  width: 300px;
  height: 200px;
  background-image: url("your-image.jpg");
  background-size: cover; /* 或 contain, 100% 100% 等 */
  background-position: center; /* 可选,控制图片位置 */
  background-repeat: no-repeat; /* 可选,防止重复 */
}

3. JavaScript 动态调整 (较复杂,非首选):

可以通过 JavaScript 获取图片和容器的尺寸,然后动态计算并设置图片的宽度和高度,以适应容器。这种方法比较复杂,通常不推荐,除非 object-fitbackground-size 无法满足需求。

const container = document.querySelector('.container');
const img = container.querySelector('img');

function resizeImage() {
  const containerWidth = container.offsetWidth;
  const containerHeight = container.offsetHeight;
  const imgWidth = img.offsetWidth;
  const imgHeight = img.offsetHeight;

  if (imgWidth / imgHeight > containerWidth / containerHeight) {
    img.style.width = '100%';
    img.style.height = 'auto';
  } else {
    img.style.width = 'auto';
    img.style.height = '100%';
  }
}

window.addEventListener('load', resizeImage);
window.addEventListener('resize', resizeImage); // 窗口大小改变时重新调整

选择哪种方法?

  • 大多数情况下,object-fit 是最佳选择,简单易用,浏览器兼容性好。
  • 如果图片是背景图片,使用 background-size
  • 只有在 object-fitbackground-size 无法满足需求时,才考虑使用 JavaScript 动态调整。

记住根据实际需求选择合适的 object-fitbackground-size 的值,例如 cover 用于需要完全覆盖容器的场景,contain 用于需要完整显示图片的场景。

希望这些信息能帮到你!

标签:object,container,固定,img,外框,background,fit,图片尺寸,size
From: https://www.cnblogs.com/ai888/p/18591715

相关文章

  • 如何让背景图片固定不随滚动条滚动?
    要让背景图片固定不随滚动条滚动,可以使用CSS的background-attachment:fixed;属性。以下是如何在你的CSS代码中实现它的方法:body{background-image:url("your-image.jpg");/*你的图片路径*/background-repeat:no-repeat;/*可选:控制图片是否重复*/backgr......
  • 74.《真的有用!!!----free图片尺寸和大小的代码实现》
    想必你碰到这些情况:哈哈大部分我们都会去干嘛呢?作为计算机学者啊肯定会想到一些这些坑爹收费的垃圾东西我们自己搞搞其实这不就是我们经常写过的文件上传下载业务吗参考:https://www.cnblogs.com/gaodiyuanjin/p/18410900结合博客园博主与统义灵码结合图片插件依赖......
  • 写出在不固定宽高的元素在固定高度的情况下水平垂直居中的方法
    在固定高度的容器中,让不固定宽高的元素水平垂直居中,有很多方法,以下是几种常见且有效的方法:1.Flexbox布局(推荐)这是现代CSS中最简洁和灵活的解决方案。.container{display:flex;justify-content:center;/*水平居中*/align-items:center;/*垂直居中*/......
  • linux开发板更换SD卡,如何确保挂载点固定
    在Linux开发板上更换SD卡时,确保挂载点(mountpoint)固定,你可以通过编辑/etc/fstab文件来实现。/etc/fstab是一个系统启动时挂载文件系统的配置文件。步骤如下: 确定SD卡的分区和类型。使用lsblk或fdisk-l命令查看。 确定你想要挂载的路径,例如/mnt/sdcard。 编辑......
  • vxe-table 列宽拖拽模式设置,自适应列宽,固定列宽
    在使用vxe-table是,常用的列宽拖拽调整功能,通过列宽调整可以让用户灵活的自定义列宽。两种拖拽调整列宽模式分别用于不同场景。动态列宽分配模式调整列宽之后,对于未设置列宽的列会重新动态分配剩余宽度<template><div><vxe-gridv-bind="gridOptions"></vxe-grid>......
  • jQuery简单实用的响应式固定侧边栏插件
    Bamboo.js是一款简单实用JQUERY响应式固定侧边栏插件。该插件使用简单固定侧边栏结构,带有固定位置的标题,侧边栏不会随页面而滚动。你可以为创建设置一个breakpoint,当屏幕尺寸小于这个breakpoint的时候侧边栏会隐藏,同时显示一个汉堡图标作为菜单的导航图标。演示  下载 使......
  • 如果 Z-BlogPHP 版本低于 1.6.0,如何开启固定域名功能?
    如果你的Z-BlogPHP版本低于1.6.0,直接使用 ZC_PERMANENT_DOMAIN_FORCED_URL 配置项可能不起作用,因为这个配置项是在1.6.0及之后的版本中引入的。为了在低版本中实现固定域名功能,你需要采取以下步骤:步骤备份现有文件:在进行任何修改之前,建议备份现有的 zb_system 文件......
  • 说说你对相对定位、绝对定位、固定定位的理解
    在前端开发中,position属性用于控制元素的定位方式。relative(相对定位)、absolute(绝对定位)和fixed(固定定位)是最常用的三种定位方式,它们之间有着重要的区别:1.position:relative;(相对定位)特性:元素相对于其在文档流中的原始位置进行偏移。原始位置保留,其他元素不会填补它......
  • 写个布局,当页面高度不够时,底部固定在下面,反之不固定
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>StickyFooter</title>......
  • 固定 RK3399 的 CPU 频率
    1简介类似Rockpi4SE(RK3399-T)这一类的类树莓派核心板,一般出厂自带的频率控制方式为自动调频,这就对CPU的性能进行了部分限制。这里以Rockpi4SE为例子介绍如何固定CPU频率。2查看CPU支持的频率RK3399-T的CPU参数如下:2xCortex-72,frequency1.5GHz4xCo......