相对于高度的自动宽度+调整窗口大小

问题描述:

我正在构建一个Web应用程序,我想要一个特定元素相对于它的父级进行缩放。据我所知,唯一不使用javascript的方法是使用具有所需长宽比的图像(有关于此问题的其他几篇Stackoverflow文章),这就是我所做的,所以基本如此:相对于高度的自动宽度+调整窗口大小

div { height:20%; display:inline-block; } 
div img { height:100%; } 

这会导致div按我想要的方式缩放,但问题是当浏览器调整大小时,图像的宽度会发生变化,但div的宽度不会。刷新页面后,该元素将再次正确缩放。

我在此做了一个工作示例:https://jsfiddle.net/r1efuzmb/当您调整浏览器或Jsfiddle网站上的“输出”列时,可以看到问题。

一些注意事项:

  • 问题只发生在Chrome和IE。在Firefox和Safari中,div正确缩放。
  • 我可以使用vh单位设置宽度,但由于我试图缩放这个元素相对于它的父母而不是视口,它并不是真正理想的。

有谁知道这是浏览器问题还是有办法解决这个问题?

谢谢!

+0

所以,你必须定义,只有高度父元素,并希望孩子确定宽度?介意告诉我们这个“特定元素”是什么? – Sprazer

+0

我正在创建一个cardgame。页面底部有一个“酒吧”,相对于身体的高度为20%。这个酒吧包含项目(“卡片”),我想给予相对于“酒吧”100%的高度,但包含他们的长宽比。 – Leon

您可以在before伪元素上使用padding-top来获得与使用图像相同的效果。

+0

恐怕我不行,因为这会缩放相对于元素宽度的高度。我试图做相反:) – Leon

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

图像将填充其合适的宽高比的容器。

+0

这将工作,如果容器将有一个宽度,我想要一个自动的高度。我试图达到完全相反。 – Leon

+0

@Leon对不起,我想我误解了这个问题。以下是另外一个提示:如果您使用图像只是为了表现自己的想法,为什么不使用Flexbox模型来制作这些卡片? – ed1nh0

我认为,通过使用浮动并让图像容器总是20vh可能是在你的情况下可能的解决方案。

html, body { 
 
    height:100%; 
 
    margin: 0; 
 
} 
 
.card-container { 
 
    height:20vh; 
 
    display:inline-block; 
 
    background-color:red; 
 
    position: fixed; 
 
    bottom: 0; 
 
    width: 100%; 
 
    background-color:lightgray; 
 
} 
 
.cards{ 
 
    height: 20vh; 
 
    display: inline-block; 
 
    position: relative; 
 
    left: 50%; 
 
    -webkit-transform: translateX(-50%); 
 
    -ms-transform: translateX(-50%); 
 
    transform: translateX(-50%); 
 
} 
 
.cards:after{ 
 
    content:""; 
 
    display:block; 
 
    clear:both;} 
 

 
.cards img { 
 
    display: block; 
 
    float: left; 
 
    height:100%; 
 
    width:auto; 
 
    padding:0 2px; 
 
}
<div class="card-container"> 
 
    <div class="cards"> 
 
    <img src="http://lorempixel.com/100/150/"> 
 
    <img src="http://lorempixel.com/100/150/"> 
 
    <img src="http://lorempixel.com/100/150/"> 
 
    <img src="http://lorempixel.com/100/150/"> 
 
    </div> 
 
</div>

+0

感谢您的回复。问题是,“卡”需要是一个div,以便我可以应用其他样式,我不能使用图像。我只是使用图像来调整div .. – Leon

+0

我明白了,你见过这个q吗? http://stackoverflow.com/questions/36983773/make-a-div-act-like-an-image – Sprazer