【问题标题】:Is there anyway to set background-size to both contain and cover?无论如何将背景大小设置为包含和覆盖?
【发布时间】:2017-04-18 16:45:07
【问题描述】:

这是我的尝试https://codepen.io/alexyap/pen/VbvGvw

<div id="bg">
</div>



* {
  margin: 0;
  padding: 0;
}

#bg {
  background: url('https://static.pexels.com/photos/198747/pexels-photo-198747.jpeg');
  height: 60vh;
  width: 100%;
  background-repeat: no-repeat;
  background-size: 100vw;
}

我几乎想通了,但我似乎无法复制这个网站https://sierradesigns.com/ 是如何做到的(检查登陆页面上的滑块图像),无论我给高度多少值,我的底部都被切断了

【问题讨论】:

  • 不可能,它们是两种完全不同的处理方法。您链接的网站使用的是 100% 宽度的图片,而不是背景。
  • 不,这两个属性在解释尺寸的方式上是相反的。你必须选择其中一个。

标签: css responsive-images background-size


【解决方案1】:

通过将背景大小设置为cover,您将赋予浏览器调整图像直到完全覆盖该区域的特权;它会忽略您分配的宽度和高度值。

使用contain,您允许浏览器决定如何调整图像以使整个图像适合该区域,这可能基于高度或宽度来完成此操作(取决于图像的方向宽或高)。

background-size: 100% 100% 可能是您正在寻找的,但这会不成比例地调整图像(即:根据方向拉伸或压缩)。但是,当您说“既涵盖又包含”时,这听起来确实是您想要的。

有很多方法可以放置和缩放用作背景的图像(其中背景不一定意味着 CSS 背景属性)

以下是我如何完成此操作的简化示例(假设图像大约为 700x300 像素)

.container-wrap {
     width:100%;
     }
 .container {
     position:relative;
     padding:42.86% 0 0 0;
     /* where padding = the proportion of the images width and height
     which you can get by division: height / width = 0.42857 */
     }
 .container img {
     position:absolute;
     top:0px;
     right:0px;
     bottom:0px;
     left:0px;
     }

重要的是,您的图像之间要保持接近的比例 - 如果它们稍微偏离,那么对于大多数图像来说,大多数人应该看不到轻微的失真

同样,还有其他方法可以做到这一点。您链接到的网站应用了类似的概念。概念是相同的,方法略有不同(例如,他们在图像上使用 width:100% 而不是绝对定位它们),其中概念 =“使用某种方法将图像与容器成比例,因此它将神奇的规模”

请注意,同样的方法可以应用于视频容器(例如来自 YouTube)。

【讨论】:

  • 那么我如何实现我链接到的网站正在使用的效果?只是按照APAD1所说的然后放入一个img标签并将其宽度设置为100%?哦,我忘了提到当你调整页面大小时sierradesigns.com 滑块上的图像完美缩放(没有任何截断),这就是为什么我想要实现包含和覆盖浏览器窗口的东西
【解决方案2】:

您链接的页面保持容器的纵横比不变。

您可以使用宽度和高度的 vw 单位来获得这种效果(例如)

#bg {
  background: url('http://lorempixel.com/1000/600/');
  height: 30vw;
  width: 50vw;
  background-size: cover;
}
<div id="bg">
</div>

【讨论】:

  • 对不起,我忘了提到当您调整页面大小时,我提到的图像可以完美缩放,因为没有任何截断,就好像图像在所有屏幕尺寸下都保持了它们的高度和宽度,这就是我想要的效果,抱歉这里已经很晚了
  • 我使用 50vw 作为宽度以适应 sn-p 尺寸。设置宽度:100vw 和高度 60vw,你会得到全宽
  • 如果我是你,我不会认为“工作”......请参阅下面对我的回答的编辑
  • 很抱歉,英语不是我的母语,我在翻译我的信息时遇到了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2014-05-26
相关资源
最近更新 更多