是否有与背景大小等效的内容:图像元素的 cover 和 contains ?

2024-03-04

我有一个包含许多页面和不同背景图片的网站,我通过 CSS 显示它们,例如:

body.page-8 {
    background: url("../img/pic.jpg") no-repeat scroll center top #000;
    background-size: cover;
}

但是,我想使用在一页上显示不同的(全屏)图片<img>元素,我希望它们具有与上面相同的属性background-image: cover;属性(图像不能从 CSS 显示,必须从 HTML 文档显示)。

通常我使用:

div.mydiv img {
    width: 100%;
}

Or:

div.mydiv img {
    width: auto;
}

使画面饱满且反应灵敏。不过图片缩小太多了(width: 100%)当屏幕变得太窄时,并在底部屏幕中显示正文的背景颜色。另一种方法,width: auto;,仅使图像全尺寸,不响应屏幕尺寸。

有没有办法以同样的方式显示图像background-size: cover does?


解决方案#1 -对象适合性 http://www.w3.org/TR/css3-images/#object-fit (缺乏 IE 支持 http://caniuse.com/#feat=object-fit)

刚刚设置object-fit: cover;在 img 上。

body {
  margin: 0;
}
img {
  display: block;
  width: 100vw;
  height: 100vh;
  object-fit: cover; /* or object-fit: contain; */
}
<img src="https://loremflickr.com/1500/1000" alt="A random image from Flickr" />

See MDN https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit#Values- 关于object-fit: cover:

替换内容的大小可保持其纵横比,同时 填充元素的整个内容框。如果物体的纵横比 与它的盒子的长宽比不匹配,那么该对象将是 剪裁以适合。

And for object-fit: contain:

替换的内容会进行缩放以保持其纵横比,同时适合元素的内容框。整个对象填充该框,同时保留其纵横比,因此如果其纵横比与框的纵横比不匹配,则该对象将被“黑框化”。

另请参阅这个 Codepen 演示 https://codepen.io/danield770/pen/XYjZvN比较object-fit: cover应用于图像background-size: cover应用于背景图像


解决方案#2 - 使用 css 将 img 替换为背景图像

body {
  margin: 0;
}

img {
  position: fixed;
  width: 0;
  height: 0;
  padding: 50vh 50vw;
  background: url("https://loremflickr.com/1500/1000") no-repeat;
  background-size: cover;
}
<img src="https://via.placeholder.com/1500x1000" alt="A random image from Flickr" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有与背景大小等效的内容:图像元素的 cover 和 contains ? 的相关文章

  • 单击时获取元素的 id(php、jquery、ajax、javascript)

    抱歉 这是我的第一个项目 我学到了很多东西 因此 如果有人可以帮助我 我将不胜感激 我的项目中有这个侧边栏 其中包含 rss 链接 我必须使用 ajax 因此每次用户单击任何 rss 链接时 提要都会出现在屏幕上 这是我的侧边栏代码 div
  • 在使用 jQuery 拖动时向元素添加 CSS 类

    是否可以在元素被拖动到特定区域时向其添加 CSS 类 并在元素被删除后替换该类 我并不是到处寻找这个功能 而是只在特定区域寻找这个功能 是的 这当然有可能 jQuery UI 提供了一些方便的选项和事件来执行此操作 对于初学者来说 可拖动元
  • 如何创建一个对角分割的页面,两半是可点击的链接

    我需要创建一个对角分割的登陆页面 像这样的东西 我需要页面的两个区域都是可单击的 并且在最好的情况下 所有内容都应该动态地适应用户的显示器 以便显示器始终分成两半 我该怎么做 我应该使用画布吗 欢迎任何建议 以及如果我使用画布可能的后备方案
  • 仅使用 HTML 正确填充电子邮件

    对于作业 我需要放置一个form在我的网页中 并让表单填充一封电子邮件供用户发送 我在四处搜寻后写下了这个
  • 如何在iframe中插入html

    大家好 我需要在 iframe 中插入一个 html 字符串 如下所示 var html p body p jQuery popolaIframe click function parent indexIframe 0 documentEl
  • ScrollTop 在 Chrome/Safari 中不起作用

    我的网站上有一个循环内的表单 当有人提交表单时 查询字符串会添加到 URL 中 例如 updated 111 然后 我的 JQuery 脚本检查数字的 url 并在提交表单并重新加载页面后滚动到该 div 该脚本在 Firefox 中运行良
  • 位置:粘性滚动仍在移动的元素

    我需要显示类似于表格的内容 其中第一列可以水平滚动 该列会粘滞一段时间 但是当您滚动太多时 它会开始与其余部分一起移动 wrapper width 250px overflow auto display flex flex directio
  • 如何强制网络浏览器不缓存图像

    背景 我正在为两个公益网站编写并使用一个非常简单的基于 CGI Perl 的内容管理工具 它为网站管理员提供了事件的 HTML 表单 他们可以在其中填写字段 日期 地点 标题 描述 链接等 并保存 在该表格上 我允许管理员上传与该活动相关的
  • 方向改变后的javascript最大视口高度Android和iOS

    目标 查找设备的最大视口高度 包括设备的空间address bar这样我们就可以动态调整 min body 的大小并将内容向上推 问题 移动浏览器处理方向状态的方式不同 方向变化时更新 DOM 属性的方式也不同 使用 JavaScript
  • 如何检测浏览器中操作系统是否处于深色模式?

    如同 如何检测 OS X 是否处于深色模式 https stackoverflow com questions 25207077 how to detect if os x is in dark mode 仅适用于浏览器 有没有人发现是否有
  • 粉碎一个元素,向随机方向发送碎片

    我试图 粉碎 一个元素 例如 一个图像 并将其碎片朝随机方向飞行 当碎片到达目的地时 即x距离 以像素为单位 它们变成原始图像的较小版本 jQuery UI 的explode http api jqueryui com explode ef
  • 提交表单时显示警告框

    所以我有这两页 pageOne php and pageTwo php 表格在pageOne php
  • 更改 3 列显示的比例:表格/表格单元格

    我有这个简单的设置 container display table width 70 text align center div border 1px solid 336 column display table cell div clas
  • 我什么时候应该使用内联和外部 Javascript?

    我想知道什么时候应该包含外部脚本或将它们与 html 代码内联编写 就性能和易于维护而言 这方面的一般做法是什么 真实场景 我有几个需要客户端表单验证的 html 页面 为此 我使用了一个包含在所有这些页面上的 jQuery 插件 但问题是
  • 上传前如何检查图片的宽度和高度

    对于图片上传 我编写了以下 html 代码
  • IE 上具有最小宽度的内联跨度

    Hi我有 3 个SPAN那一定是inline并且有和一个min width 显然在 IE 上 SPAN不能有一个min width 我尝试使用DIV但当我把它放在inline the min width是忽略 CSS span displa
  • 'DOMException:使用'option:selected'选择器时无法在'Element'上执行'querySelectorAll'

    我正在运行一个页面 该页面在以下行中引发错误 var label select find option selected html select find option first html 为了完整起见 这里是完整的 jQuery 函数
  • javascript 中一次仅选中一个复选框

    I have 3复选框 我只想1一次选中的复选框 下面是我的 html 小提琴 JS小提琴 https jsfiddle net n03jLhqa 我想要这个工作在IE8还请建议如何做 这个怎么样 fiddle http jsfiddle
  • Modernizr 未将类应用于 html 标签

    我目前正在构建一个网站 我需要使用 Modernizr 但由于某种原因 它没有将类应用到 html 标签 因为它应该 我的代码如下所示
  • Bootstrap - 为反向行模式创建移动自适应

    我想用 Bootstrap 创建一个反向效果 第一行 左边是文字 右边是图像 第二行 左边是图片 右边是文字 第三行 左边是文字 右边是图片 第四行 左边是图片 右边是文字 而且这种情况一直持续下去 它在大型设备上看起来非常漂亮 但当它在设

随机推荐