javascript - 使用 jquery 使父子 div 的高度不相等?

标签 javascript jquery html css twitter-bootstrap

我正在尝试修复不允许更改 html 或 css 结构的客户端错误。正如您所看到的,有 3 个并排的 div block 是使用 Bootstrap 创建的并且是响应式的。当其中一个 div 的标题很长或内容很长时(在本例中为第一个),就会出现问题。我猜通过 Bootstrap 自动设置的高度使所有 3 个 div 都没有,因为其中一个需要更多空间来添加内容。他们通常没有像我的例子那样长的标题,但即使稍长的标题也会使 div 不均匀,就像在 iPad 大小的屏幕上一样。我如何在 jquery 中定位这些 div,并且可能有一个 if else 来检查其中一个 div 是否更长,其他 2 将自动调整它的高度

.homefont {
    font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
}

.home-sub-head h1 {
    color: #006ac3;
}

.home-sub-content p {
    color: #7c7f7e;
    margin-top: 15px;
    font-size: 16px;
    margin-bottom: 30px;
}

.doc-content h3 {
    color: #0a5185;
    margin-top: 0px;
    padding-top: 20px;
}

.doc-content {
    background: #f1f1f1;
    padding: 0px 15px 30px 15px;
}

    .doc-content ul li:before {
        font-family: FontAwesome;
        content: "\f105";
        float: left;
        width: 1.4em;
        margin-left: -35px;
        background: #0a5185;
        margin-right: 14px;
        text-align: center;
        color: white;
        font-weight: bold;
        margin-top: 5px;
    }

    .doc-content ul {
        list-style: none;
    }

        .doc-content ul li {
            margin-bottom: 20px;
        }

.doc-content1 h3 {
    color: #726d7b;
}

.doc-img img {
    height: 196px !important;
    max-width: 100%;
}

    .doc-img img:hover {
        transform: scale(1.1);
    }

.doc-img img {
    -webkit-transition: -webkit-transform .3s ease-in-out;
    transition: transform .3s ease-in-out;
    cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />

<div class="homefont">
    <div class="space-after-content">
        <div class="col-md-4 col-sm-4">
            <div class="doc-img">
<img src="https://assets.pando.com/uploads/2012/12/html5-logoreal1.png">


</div>
            <div class="doc-content">
                <div class="text-center">
                    <h3>Title oneeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee</h3>
                </div>
<ul>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>

</ul>
            </div>
        </div>
       <div class="col-md-4 col-sm-4">
            <div class="doc-img">
<img src="https://assets.pando.com/uploads/2012/12/html5-logoreal1.png">


</div>
            <div class="doc-content">
                <div class="text-center">
                    <h3>Title one</h3>
                </div>
<ul>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>

</ul>
            </div>
        </div>
   <div class="col-md-4 col-sm-4">
            <div class="doc-img">
<img src="https://assets.pando.com/uploads/2012/12/html5-logoreal1.png">


</div>
            <div class="doc-content">
                <div class="text-center">
                    <h3>Title one</h3>
                </div>
<ul>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>
<li>jackson</li>

</ul>
            </div>
        </div>
    </div>
</div>

最佳答案

可以遍历它们并获取所有高度并存储最高高度,然后在所有高度上设置该高度。

请注意,这并未考虑图片加载时间。

另一种方法是对它们应用内联 flexbox css

var maxHt = 0;
$('.doc-content').each(function() {
  var ht = $(this).height();
  maxHt = ht > maxHt ? ht : maxHt;
}).height(maxHt);
.homefont {
  font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
}

.home-sub-head h1 {
  color: #006ac3;
}

.home-sub-content p {
  color: #7c7f7e;
  margin-top: 15px;
  font-size: 16px;
  margin-bottom: 30px;
}

.doc-content h3 {
  color: #0a5185;
  margin-top: 0px;
  padding-top: 20px;
}

.doc-content {
  background: #f1f1f1;
  padding: 0px 15px 30px 15px;
}

.doc-content ul li:before {
  font-family: FontAwesome;
  content: "\f105";
  float: left;
  width: 1.4em;
  margin-left: -35px;
  background: #0a5185;
  margin-right: 14px;
  text-align: center;
  color: white;
  font-weight: bold;
  margin-top: 5px;
}

.doc-content ul {
  list-style: none;
}

.doc-content ul li {
  margin-bottom: 20px;
}

.doc-content1 h3 {
  color: #726d7b;
}

.doc-img img {
  height: 196px !important;
  max-width: 100%;
}

.doc-img img:hover {
  transform: scale(1.1);
}

.doc-img img {
  -webkit-transition: -webkit-transform .3s ease-in-out;
  transition: transform .3s ease-in-out;
  cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />

<div class="homefont">
  <div class="space-after-content">
    <div class="col-md-4 col-sm-4">
      <div class="doc-img">
        <img src="https://assets.pando.com/uploads/2012/12/html5-logoreal1.png">


      </div>
      <div class="doc-content">
        <div class="text-center">
          <h3>Title oneeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeee
          </h3>
        </div>
        <ul>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>

        </ul>
      </div>
    </div>
    <div class="col-md-4 col-sm-4">
      <div class="doc-img">
        <img src="https://assets.pando.com/uploads/2012/12/html5-logoreal1.png">


      </div>
      <div class="doc-content">
        <div class="text-center">
          <h3>Title one</h3>
        </div>
        <ul>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>

        </ul>
      </div>
    </div>
    <div class="col-md-4 col-sm-4">
      <div class="doc-img">
        <img src="https://assets.pando.com/uploads/2012/12/html5-logoreal1.png">


      </div>
      <div class="doc-content">
        <div class="text-center">
          <h3>Title one</h3>
        </div>
        <ul>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>
          <li>jackson</li>

        </ul>
      </div>
    </div>
  </div>
</div>

关于javascript - 使用 jquery 使父子 div 的高度不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47519646/

相关文章:

html - Firefox 输入字段中的下降部分

javascript - Spread Operator 获取数组内对象的单个属性 - JS/TS

php - 注意第 2 行的 : Undefined index: name in C:\Users\. .\logged_in.php

javascript - 切换类后,Jquery 将不会选择按钮

javascript - 使用 jquery ui Draggable 排序后是否有任何选项可以获取旧父级

c# - 如何使用 xml 将内容多行转换为 html

javascript - 无法将 UIkit 与 Webpack 一起使用

javascript - nodejs mongoose 删除命中错误 : Can't set headers after they are sent

javascript - 循环内的值不变

javascript - 为什么这个 Ajax 条件对话框不起作用?