2016-12-26 76 views
0

我将从头开始。我创建了一个响应式网站,在那里我有一个改变高度的元素。在这张照片中,我不得不创建一个容器,以便能够定位与它有关的新元素。不幸的是,在调整大小后(例如,当您打开手机时) - 容器不会随图像一起改变宽度。如果刷新参数的值(例如,“检查元素”删除并添加“显示”),则它已被正确设置。如何解决这个问题呢?当父母更改尺寸时,图像容器不灵活

var i = 0; 
 
$('button').on('click', function() { 
 
    if (i%2) $('.background').css('height', '200px'); 
 
    else $('.background').css('height', '300px');i++; 
 
});
.background { 
 
    width: 600px; 
 
    height: 200px; 
 
    background-color: black; 
 
    transition: 0.3s; 
 
} 
 

 
.background > .container { 
 
    height: 100%; 
 
    display: inline-block; 
 
    background-color: white; 
 
} 
 

 
.background > .container > img { 
 
    height: 100%; 
 
    opacity: 0.7; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="background"> 
 
    <div class="container"> 
 
    <img src="https://i.ytimg.com/vi/bVzpweTJvhc/hqdefault.jpg"> 
 
    </div> 
 
</div> 
 

 
<br><br> 
 

 
<button>Change</button>

回答

0

container显示为inline它的工作(我不知道为什么...但)

var i = 0; 
 
$('button').on('click', function() { 
 
    if (i%2) $('.background').css('height', '200px'); 
 
    else $('.background').css('height', '300px');i++; 
 
});
.background { 
 
    width: 600px; 
 
    height: 200px; 
 
    color: white; 
 
    background-color: black; 
 
    transition: 0.3s; 
 
} 
 

 
.background > .container { 
 
    display: inline; 
 
} 
 

 
.background > .container > img { 
 
    height: 100%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="background"> 
 
    <div class="container"> 
 
    <img src="https://i.ytimg.com/vi/bVzpweTJvhc/hqdefault.jpg"> 
 
    </div> 
 
    <span>I move too....</span> 
 
</div> 
 
<br><br> 
 
<button>Change</button>

+0

我以为是它,但不幸的是没有。如果在容器中添加“background-color:white”,则可以看到图像宽度与容器不同,因此我仍然没有提及图像的右侧边缘:( – Invictus

+0

@Invictus更新了我的回答 – LGSon

+0

这不是一个完美的解决方案,但解决了我的问题,所以谢谢:) – Invictus

0

我用

.my-container-div 
{ 
    background-image: zoom 
} 

而不是IMG进入一个div。有了这个,你可以用div和它的背景属性,背景大小,背景,地位......等方面发挥

我会做这样的事情:

.background > .container { 
    height: 100%; 
    width: 100%; 
    background-image: url("https://i.ytimg.com/vi/bVzpweTJvhc/hqdefault.jpg"); 
    background-size: cover;  
} 
+1

什么是'background-image:zoom'? – LGSon

+0

图像作为div的背景不会给我设定尺寸,以便我可以将其他元素设置为图像。例如,我想从图像的右边框(位置:绝对;右20px)设置20px的边距。 – Invictus

0

container类和图像没有任何为他们定义的width。这就是原因。给你一个containerwidth:50%的对图像width:100%

+0

你试过这个吗? ...除了扭曲图像之外它不起作用 – LGSon

+0

它没有定义宽度,因为它被自动设置为保存图像的比例,并且不像所述的@LGSon那样使其变形。高度的定义如你所见。 – Invictus

+0

当圆顶DOM得到更新时,容器div没有任何反应,因为它的状态保持不变。图像的大小因其高度属性而发生变化,并且由于没有宽度属性,所以会溢出容器。你可以通过使用'overflow:hidden'将图像留在容器中,但是使用纯CSS,我无法想象使用容器和图像的大小。 –