css - 响应高度,基于背景大小
问题描述
我需要我的背景图片做出响应。我用过background-size: contain
,这似乎工作正常,但我需要我的 div 的高度也能响应。
.container {
width: 100%;
}
.bg {
background: red url('https://cdn.pixabay.com/photo/2018/06/30/09/31/background-image-3507320_960_720.jpg') no-repeat center top;
background-size: contain;
height: 600px;
}
<div class="container">
<div class="bg"></div>
</div>
目前高度为 600 像素,根据屏幕的宽度,您将看到红色背景,这不应该是这种情况。
我试过background: cover
了,但它会缩放图像。它应该是 100% 的 div 但不应该被削减。
我怎样才能解决这个问题?
解决方案
有一个不使用 JavaScript 的简单解决方案。只需<svg>
在容器内按特定比例添加即可。
您必须使用图像尺寸作为 viewBox<svg viewBox="0 0 960 628"></svg>
例子:
div{
background-image:url('https://cdn.pixabay.com/photo/2018/06/30/09/31/background-image-3507320_960_720.jpg');
background-size:cover;
background-position:50%;
background-repeat:no-repeat;
}
svg{
width:100%;
display:block;
visibility:hidden;
}
.demo-1{width:100%}
.demo-2{width:40%}
<div class="demo-1">
<svg viewBox="0 0 960 628"></svg>
</div>
<hr>
<div class="demo-2">
<svg viewBox="0 0 960 628"></svg>
</div>
推荐阅读
- c++ - C++,类中的结构问题
- c++ - 为什么 std::putchar(NULL) 输出一个空格?
- perl - perl中是否有mouseClicked或keyPressed?
- python - Pyautogui 不在 Mac 上运行?(卡特琳娜)
- java - 如何从 java 中 POJO 中的 ArrayList 获取特定值
- r - ggplot2 中的 scale_colour_gradient2 无法准确显示低或高的颜色?
- amazon-web-services - 通过 .ebextensions 安装 pip 包
- python - 如何为nlp查找单词的前缀
- sql - 如何在 SQL 中同时更新两个表?
- php - Dropzone - resizeWidth、resizeHeight 不起作用