css img自适应盒子尺寸

2023-11-03

首先保证图片可以填满 然后纵向居中

.img-cantainer {
        position: relative;
        width: 260px;
        height: 150px;
        overflow: hidden;
        img {
            position: absolute;
            top: 50%;
            min-height: 100%;
            min-width: 100%;
            transition: all .3s;
            transform: translateY(-50%);
            z-index: -1;
        }
    }

或者
不管容器有多大,只要将img的宽高设置成100%(这里的100%是相对于父级宽高而言)就能自适应容器大小。

img{
		width: 100%;
        height: 100%;
        }

那是不是就这这么简单完事儿了呢?如果你不介意图片被放大后可能出现失真的话也的确是这样就ok了。
假如你介意 图片放大后会失真,我们可以改进上面的代码,只需要将img的样式简单修改

img {
    max-width: 100%;
    max-height: 100%;
}

max-width:100%和width:100%的区别在于,max-width是相对于img自身的尺寸而言的。意思是图片最大宽度为自身尺寸的宽,在这里就是100px。而width的100%我们上面已经说过了是相对于父级宽度的,所以为了不让图片被放大后失真我们可以设置img的最大宽度为自身尺寸大小,更通俗的讲就是只允许缩小不允许放大img。

具体情况中是选择width:100%还是max-width:100%还是依据个人的需求而定,另外在响应式设计中这个问题稍微会复杂一点

响应式

响应式设计中:如果是img标签引入的图片,可以使用延迟加载的方式来加载,在实际加载图片之前先用js检查窗口宽度,然后加载不同分辨率的图片,比如宽度<=480,就加载80px宽度的图片,480 < 宽度 <= 768,加载120px的图片, 宽度> 768则加载160px的图片,如果宽度是600px怎么办呢,通过百分比来缩放120px的图片达到合适的结果。

这样做的好处是对于移动设备来说,下载的图片会小一些,减少网页加载的时间。但是问题是竖屏向横屏切换或者扩大浏览器窗口宽度时图片会由于放大而产生一定的模糊感。

我觉得响应式设计中对于图片的考虑应该从布局设计就开始,尽量使图片在各个窗口宽度下的尺寸不要相差过大,通过排布更多的内容而不是扩大图片的尺寸来填充由于浏览器窗口扩大带来的空间。这样可以有效的减少图片放大模糊的问题。

最后,假如你的img是作为background使用的就需要通过background-size: cover/contain又或者是具体的百分比去设置图片在容器中所占比例的大小

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

css img自适应盒子尺寸 的相关文章

  • webpack - require('node_modules/leaflet/leaflet.css')

    所以我正在尝试使用构建一个地图应用程序webpack and leaflet 我可以要求leaflet js从我的map js文件 但我无法在不出现错误的情况下调用 leaflet css 我现在的webpack config js好像 u
  • 制作波浪动画

    我正在尝试制作音频波动画 这段代码有什么问题 我尝试将翻译更改为比例 但没有成功 有人可以给我一些动画练习的链接吗 webkit box sizing border box box sizing border box webkit pers
  • CSS col 可见性:折叠在 Chrome 上不起作用

    我试图在 html 代码中隐藏一些 col 使用 MDN 添加了 colgroup 和 col 并且我正在尝试 cols 的样式 The td 内容文本 可见 在所有浏览器中可见 好 内容文本 隐藏 在 Chrome 中可见 不好 在 Fi
  • 为什么使用 DIV 或 span 标签比使用表格布局“更好”? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么不在 HTML 中使用表格进行布局 https stackoverflow com questions 83073 why not use tables for layout in html 为
  • 180 度旋转 div 只能从一侧点击

    我遇到了一个相当奇怪的问题 我有一个可以通过 CSS3 旋转的 div 该 div 有一个前 div 子级和后 div 子级 后 div 具有 webkit transform rotateY 180deg set 问题是 一旦旋转父元素以
  • 悬停时显示表格行大纲

    我试图在悬停时突出显示表格行的边框 不幸的是 这仅适用于第一行单元格 较低的行有一个不改变颜色的边框 我尝试过使用outline但它不太适合 hover在网络套件中 http jsfiddle net S9pkM 2 http jsfidd
  • 图像缩放会导致 Firefox/Internet Explorer 质量较差,但 Chrome 不会

    See http jsfiddle net aJ333 1 http jsfiddle net aJ333 1 在 Chrome 中 然后在 Firefox 或 Internet Explorer 中 图像最初是 120 像素 我缩小到 2
  • 在透明背景的按钮上剪出一块边框

    您好 我想弄清楚如何创建以下按钮 制作按钮很容易 但棘手的部分是在右侧创建小切口 该按钮具有透明背景 因此我无法将带有背景颜色的伪元素粘贴在那里以与其重叠 有任何想法吗 HTML div a view profile a div CSS d
  • html或css中的倾斜对角线?

    I want to make a Table like this 是否可以添加一个倾斜的对角边框在表中 基于CSS3 线性渐变 http dev w3 org csswg css images 3 linear gradients解决方案
  • 如何正确设置 100% DIV 高度以匹配文档/窗口高度?

    我有一个包装器 位于中心位置 并带有 y 重复的背景图像 div some content div wrapper width 900px margin 0 auto 0 auto background image url image jp
  • 通过边框拖放调整 div 大小,无需添加额外的标记

    我有一个绝对定位的侧面板 我需要通过拖动此边框来更改其宽度 我还需要更改边框悬停上的光标 是否可以在不添加另一个 div 进行拖动的情况下做到这一点 这是标记 right panel position absolute border lef
  • Bootstrap 100% 宽度/全宽度

    我想用 Bootstrap 创建一个新网站 我需要它的宽度为 100 但我不希望它是流畅的 至少现在不是 我遇到的问题是 使用 bootstrap 标准将您限制为 960px 并且使用流体布局它是全宽的 但其行为就像流体布局应该通过在窗口尺
  • CSS 选择器:id 或类中的第一个 div

    用于选择类中或具有特定 id 的第一个 div 的正确 CSS 选择器是什么 对于父 子元素来说 这似乎要容易得多 但我还没有找到简单元素的任何内容 更新 解决方案 我发现的最干净 最兼容的解决方案是 class class 它选择前一个类
  • Bootstrap 如何从一个类切换到下一个类?

    我试图理解Bootstrap 3的反应能力 我明白在css如果一个元素有 2 个类 那么第二个类将覆盖第一个类 但是 当您使用以下命令创建响应式设计时Bootstrap 您的元素将如下所示 div class col sm 1 col md
  • 如何在跨度上使用 CSS3 变换? [复制]

    这个问题在这里已经有答案了 我有一个行内元素 a span 嵌套在 h1 标签 我申请了一个转换财产给h1 skew所以它看起来像一个平行四边形 我需要转换 the span 标记以 矫正 它及其文本 但这似乎只适用于 IE Here is
  • 折叠和展开选项卡 jquery / 简单的手风琴

    我对手风琴选项卡有疑问 我用过手风琴菜单插件 下面的代码我用于页面中的选项卡 accordions accordion title about Content 1 accordion accordion title Home Content
  • CSS3 过渡缩放但不平移

    我在任何地方都找不到这个问题的答案 可能是因为它不存在 但无论如何 是否可以独立定义平移和缩放的转换 而不是定义 transition property transform 现在我得到了以下定义 logo position absolute
  • font-face 声明中还需要 eot、ttf 和 svg 吗?

    到目前为止 我一直使用 Paul Irish 的防弹字体语法 http www paulirish com 2009 bulletproof font face implementation syntax 但我只是在寻找对 woff 和 w
  • Bootstrap 4 网格系统中的“col”上没有填充是否正常?

    我是第一次使用 Bootstrap v 4 我有一个footer就是使用新的flex col并且它在桌面上运行得很好 但是当我切换到移动设备时 它们彼此堆叠得如此紧密 没有垂直边距 填充 这是正常行为吗 另外 我希望内容居中或至少有一些偏移
  • 使用 CSS 过渡动画 max-height

    我想创建一个仅由类名驱动的展开 折叠动画 javascript 用于切换类名 我正在上一堂课max height 4em overflow hidden 和另一个max height 255em 我也尝试过这个值none 根本没有动画 这个

随机推荐

  • leetcode 1024. 视频拼接

    你将会获得一系列视频片段 这些片段来自于一项持续时长为 T 秒的体育赛事 这些片段可能有所重叠 也可能长度不一 视频片段 clips i 都用区间进行表示 开始于 clips i 0 并于 clips i 1 结束 我们甚至可以对这些片段自
  • Prometheus+grafana

    Prometheus grafana 文章目录 Prometheus grafana 安装部署 常用指标监控 进程监控 docker容器的监控 安装部署 使用docker的方式部署 1 创建项目目录 root 129 mkdir home
  • timedate如何查看当前时间并去除毫秒

    import datetime dt datetime datetime strptime str datetime datetime now replace microsecond 0 Y m d H M S datetime datet
  • 一个批量数据导入的实现方案

    数据导入作为系统常用的功能 几乎所有的系统都应该支持 主要用于系统初期 大批量初始化数据 或者需要输入的数据行比较多的情况 导入在建项目的交付清单 通常成百上千项 数据导入的一般过程是 用户按照模板格式Excel文件 然后程序读取这个文件
  • Ubuntu部署基于Fabric的虚拟区块链服务

    关于Hyperledger Fabric的部署适合在Ubuntu或其它Linux上进行 本例在Ubuntu16 04LTS上操作 如果是Windows MacOS系统 建议安装Virtual Box 在虚拟机上部署区块链环境 准备 1 源需
  • js宏任务和微任务有哪些?执行顺序是怎样的?

    宿主 浏览器 发起的任务我们可以称之为宏观任务 macrotask 引擎 js 自己也可以发起任务 这个任务就叫做微观任务 microtask 一 js宏任务和微任务分别有哪些 1 js宏任务有
  • java.sql.SQLException: There is no DataSource named ‘null‘

    报错信息 当配置dataSource后 即使配置文件中已经指定了JobStoreTX 实际还是使用LocalDataSourceJobStore 2023 07 10 11 15 51 636 WARN main org quartz im
  • Smali文件详解

    往期推荐 Java层逆向 Dalvik指令集 Java层逆向分析 Dalvik字节码 修改资源去广告 修改包名实现分身 篡改Apk名称 图标 Smali是Dalvik VM内部执行的核心代码 是Dalvik自己的语法规范 在反编译出的代码中
  • PyCharm 中选中一个变量/函数后,所有用到这个变量/函数的地方高亮显示,改配色方案

    由于 PyCharm 原来的配色方案里面 选中一个变量 函数后 所有用到这个变量 函数的地方高亮显示得实在太不明显了 有的时候阅读别人的代码 找得眼睛都要瞎了 所以要改成高亮 找了好久才找到 所以在博客里记录一下 希望对大家有帮助 当然也是
  • windows 获取已插入U盘

    static int GetUdisk vector
  • HDOJ 1052 Tian Ji -- The Horse Racing

    Tian Ji The Horse Racing Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 2
  • Java自定义注解参数ElementType.PARAMETER

    1 创建自定义参数注解 import org springframework core annotation AliasFor import java lang annotation Target ElementType PARAMETER
  • python对字符串使用min和max

    今天日常刷题 看到了一个最长公共前缀比较高级的解法 题目如下 在评论区看到一个比较聪明的解法 class solution def st strs if not strs return str1 min strs str2 max strs
  • nacos频繁挂

    背景 公司使用的nacos 频繁挂 查看日志发现 Java HotSpot TM 64 Bit Server VM 25 144 b01 for linux amd64 JRE 1 8 0 144 b01 built on Jul 21 2
  • word2vec词向量训练及中文文本相似度计算

    本文是讲述如何使用word2vec的基础教程 文章比较基础 希望对你有所帮助 官网C语言下载地址 http word2vec googlecode com svn trunk 官网Python下载地址 http radimrehurek c
  • matlab armax 预测,MATLAB中ARMA模型预测差分问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我MATLAB预测风速的程序 程序不是我自己写的 我也是拿来参考自己的毕业作业的 每条程序旁的中文是我自己的理解 我也不知道对不对 程序1 X load C Users asus Deskt
  • 华为OD机试 - 计算礼品发放的最小分组数目(Java)

    题目描述 又到了一年的末尾 项目组让小明负责新年晚会的小礼品发放工作 为使得参加晚会的同事所获得的小礼品价值相对平衡 需要把小礼品根据价格进行分组 但每组最多只能包括两件小礼品 并且每个分组的价格总和不能超过一个价格上限 为了保证发放小礼品
  • vue 和 js 获取 dom节点下的某个元素,然后设置样式

    vue获取dom节点下的类名 然后修改样式 div div class a 提到岁月 你们总说它是长河 流得头也不回 div div class a 少不更事的年纪 我也用过老成口气 念过孔夫子的 逝者如斯乎 不舍昼夜 div div cl
  • 手写数字识别——算法

    识别方法一 基于结构模式 脱机识别 例子 基于基元和七段式数字的手写数字识别 日常生活中经常可以看到用七段式数字表示数字 如电子手表的数字显示等 它用火柴棍拼图的方式能够简单有效的表示出0 9 10个阿拉伯数字 例子 基于三次样条和整体特征
  • css img自适应盒子尺寸

    首先保证图片可以填满 然后纵向居中 img cantainer position relative width 260px height 150px overflow hidden img position absolute top 50