jquery - 子 div 继承高度设置为 0 的 siblingdiv 的高度

标签 jquery html css

我有一个 div,它有两个子 div。

一个是隐藏的并包含一些文本, 另一个是带有背景图片的div。 当我将鼠标悬停在父 div 上时,它会显示隐藏的文本 div。

我希望隐藏文本 div 的高度与背景图像 div 的高度相同

如果我将隐藏文本的 div 大小设置为 100%,则 div 的高度太大

这是一个例子 http://jsfiddle.net/vg050o67/3/

代码

.portfolioImage {
   width: 100%;
   height: auto;
   position: relative;
}
   .hiddenText {
   position: absolute;
   padding-top:10%;
   width:100%;
   height:100%;
   text-align:left;
   padding-left:10%;
   z-index:22;
   background-color:#000;
}
 .hiddenText h2 {
   color:#fff;
   text-transform: uppercase;
   font-weight:700;
}
   .hiddenText p {
   color:#fff;
}
   .image_frame {
   -webkit-transition: all 0.3s ease;
   -moz-transition: all 0.3s ease;
   -o-transition: all 0.3s ease;
   ms-transition: all 0.3s ease;
   transition: all 0.3s ease;
   z-index:21;
   opacity: 1.0;
   position:relative;
   background-size: 100%;
   width: 100%;
   padding-top:100%;
   height: 0;
}
.lowerOpacity {
   opacity:0.9;
}

div class="container">
    <div class="row no-gutter">
        <div class="col-xs-6 col-sm-4 col-md-3">
            <div class="portfolioImage">
                <div class="footerBar">
                        <h2>Title 1</h2>

                    <p>extra text snippet...</p>
                </div>
                <div class="image_frame" style="background-image: url('https://placekitten.com/g/200/300'); background-repeat:no-repeat;"></div>
            </div>
        </div>
        <!-- /col-->
    </div>
    <!-- /row-->
</div>
<!-- /container-->

$('.hiddenText').hide();

var formType = '';
$('.portfolioImage').hover(

function () {
    $(this).find(".hiddenText").addClass("lowerOpacity");
    $(this).find('.hiddenText').show();

}, function () {
$(this).find(".hiddenText").removeClass("lowerOpacity");
$(this).find('.footerBar').hide();
});

如果我设置高度为auto,然后用jQuery获取图片div的高度,返回的高度为0

例子 http://jsfiddle.net/vg050o67/2/

 var bgImageHeight = $(this).find('.image_frame').height();
alert("height=" + bgImageHeight);
$(this).find('.footerBar').css('height', bgImageHeight + 'px');

由于图像是响应式的,我不能硬编码隐藏 div 的高度

有没有人对我如何解决这个问题有任何想法,或者我是否使事情复杂化了?

最佳答案

也许是我的Codepen可能会给你一个指针,让你只使用 html 和 css 做这样的事情。

它使用常规的 <img>使用类 img-responsive 做出响应的标签.当鼠标悬停在 <img> 上时visibility: hidden设置使图像不可见但仍占用文档中的空间。悬停也设置 display: block在绝对定位的悬停内容上,所有定位属性都设置为零,以便它与图像一样大。

.box {
  position: relative;
}
.box-text {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  display: none;  
  background-color: #333;
  color: #fff;
  padding: 10px;
  text-align: center;
}

.box:hover .box-image {
  visibility: hidden;
}

.box:hover .box-text {
  display: block;
}
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" />

<div class="container">
  <div class="row">
    <div class="col-xs-3">
      <div class="box">
        <div class="box-text">
          <h1>Header</h1>
          Content
        </div>
        <div class="box-image">
          <img src="http://placekitten.com/300/250" class="img-responsive" />
        </div>
      </div>
    </div>
  </div>
</div>

关于jquery - 子 div 继承高度设置为 0 的 siblingdiv 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27446683/

相关文章:

html - 如何在 WordPress 中设置桌面菜单宽度的样式?

css - 使用CSS制作点状网格

jquery - 选中复选框时从复选框控制父级 5 级

javascript - 迭代自定义 UL LI A 列表并仅隔离具有所选类名的项目

html - 列表元素与上一行带有边框的元素对齐

html - 如何在不重叠两个 div 的情况下将 1 div 的框阴影放在另一个 div 之上?

html - 通过减小 td 的大小来删除表中两个 td 之间的空白

javascript - 为 Owl Carousel 添加动画字幕

javascript - 如何从对象数组列表中访问对象?

javascript - 功能的成功部分不起作用