2017-08-12 71 views
0

我试图制作一个可调整的引导程序列表组,该列表组调整为同级图像的大小。父容器没有固定的高度,我不能使用jQuery。有什么想法吗?如何调整div高度以匹配没有固定父级高度的同级img高度

https://jsfiddle.net/lgants/oL0rgsqk/3/

HTML:

<div class="row carousel-container"> 
    <div class="carousel-image-container"> 
     <img class="carousel-image img-responsive" src="https://lorempixel.com/900/500?r=4"> 
    </div> 
    <div class="carousel-list-container"> 
     <div class="list-group"> 
     <a href="#" class="list-group-item list-group-item-action flex-column align-items-start active"> 
      <div class="d-flex w-100 justify-content-between"> 
      <h5 class="mb-1">List group item heading</h5> 
      <small>3 days ago</small> 
      </div> 
      <p class="mb-1">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p> 
      <small>Donec id elit non mi porta.</small> 
     </a> 
     <a href="#" class="list-group-item list-group-item-action flex-column align-items-start"> 
      <div class="d-flex w-100 justify-content-between"> 
      <h5 class="mb-1">List group item heading</h5> 
      <small class="text-muted">3 days ago</small> 
      </div> 
      <p class="mb-1">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p> 
      <small class="text-muted">Donec id elit non mi porta.</small> 
     </a> 
     <a href="#" class="list-group-item list-group-item-action flex-column align-items-start"> 
      <div class="d-flex w-100 justify-content-between"> 
      <h5 class="mb-1">List group item heading</h5> 
      <small class="text-muted">3 days ago</small> 
      </div> 
      <p class="mb-1">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p> 
      <small class="text-muted">Donec id elit non mi porta.</small> 
     </a> 
     </div> 
    </div> 

CSS:

.carousel { 
    max-height: 500px; 
    position: relative; 
    display: inline-block; 
    height: 100%; 
} 

.carousel-image-container { 
    width: 60%; 
} 

.carousel-image { 
    max-width:100%; 
    max-height:100%; 
    object-fit: contain; 
} 

.carousel-list-container { 
    position: absolute; 
    top: 0; 
    bottom: 0; 
    right: 0; 
    overflow-y: hidden; 
    width: 40%; 
} 
+0

您可以指定类名吗?哪个父母应该等于哪个图像? – godblessstrawberry

+0

@godblessstrawberry我可以指定类名。同样,可滚动列表组的高度应该与相邻图像的高度相同(即,大小取决于图像,父母只是一个包装)。 – lgants

+0

我的意思是你可以告诉我类名 - 应该与图像相等的确切父类是什么?我没有得到你想要达到的目标。你也需要jQuery作为它的引导依赖 - “所有的JavaScript插件都需要包含jQuery”(c)http://getbootstrap.com/docs/3.3/getting-started/#download – godblessstrawberry

回答

2

有涉及CSS百分比填充一个很酷的技巧,因为......

的大小填充百分比,re与容纳块的宽度相同。必须是非负的。

MDN spec

你可以用你的优势,以创造真正响应的网页布局。

这里的工作[的jsfiddle(https://jsfiddle.net/oL0rgsqk/4/

这是我使用的CSS:

.carousel-container { 
    position: relative; 
    display: inline-block; 
    width: 100%; 
    font-size: 0; 
} 

.carousel-image-container { 
    width: 60%; 
    padding-top: 60%; 
    position: relative; 
    display: inline-block; 
} 

.carousel-image { 
    position: absolute; 
    top: 0; 
    width: 100%; 
    height: 100%; 
} 

.carousel-list-container { 
    width: 40%; 
    padding-top: 60%; 
    position: relative; 
    display: inline-block; 
    font-size: 14px; 
} 

.carousel-list-container-scroll { 
    position: absolute; 
    top: 0; 
    width: 100%; 
    height: 100%; 
    overflow-y: scroll; 
    overflow-x: hidden; 
} 

以及添加在你.list-额外.carousel列表容器滚动DIV组以启用此设置中的滚动

+0

这是一个非常酷的方法。不幸的是,图像会被裁剪掉(即,当窗口被调整大小时,图像没有被调整为具有一致的宽高比) – lgants

+0

有人纠正我错了,但我不认为你可以不使用JS。 – WiseOlMan

+0

我能想到的唯一的事情就是保持所有图像完全相同的比例,并更新两个兄弟容器中每一个的宽度以匹配。 – WiseOlMan