将自举轮播项目设置为具有最大高度的元素

问题描述

我正在将具有不同长度文本的内容动态加载到Bootstrap Carousel组件中。为了防止父容器随每个轮播项目的装载而跳高,我想确定所有项目的最大高度并将其设置为最大高度。这样一来,我就可以使用填充等方式处理布局,而页面上的其他弹性项目不会四处移动。

 <div id="carouselExampleSlidesOnly" class="carousel slide" data-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
        <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
</div>

<script>
    $(document).ready(function () {
        //set all carousel items to the highest container
        var containers = document.getElementsByClassName('carousel-item');
        var max_height = 0;

        //find highest container
        for (var i = 0; i < containers.length; i++) {
            var container_height = containers[i].offsetHeight;
            if (container_height > max_height) {
                max_height = container_height;               
            }
        }

        //set container heights
        for (var i = 0; i < containers.length; i++) {
            containers[i].offsetHeight = max_height;
        }
    });
</script>

这是行不通的,因为唯一显示的容器高度> 0。有没有一种方法可以模拟这些容器的高度,而无需实际显示它们?

解决方法

这与您的问题类似。我想您可以从中得到一个主意。

import React,{ Component } from "react";
import Table from "@material-ui/core/Table";
import TableBody from "@material-ui/core/TableBody";
import TableCell from "@material-ui/core/TableCell";
import TableContainer from "@material-ui/core/TableContainer";
import TableHead from "@material-ui/core/TableHead";
import TableRow from "@material-ui/core/TableRow";

    class Wish extends Component {
      constructor() {
        super();
        this.state = {
          items: [
            { uid: "1001",item: "iPhone" },{ uid: "1002",item: "iPad" },{ uid: "1003",item: "iTab" },{ uid: "1004",item: "iTelevision" }
          ],wishes: [
            { uid: "1001",wish: true },wish: false },item: false }
          ]
        };
      }
      render() {
        return (
          <div>
            <TableContainer>
              <Table>
                <TableHead>
                  <TableRow>
                    <TableCell>UID</TableCell>
                    <TableCell align="left">Item</TableCell>
                    <TableCell align="left">Wish</TableCell>
                  </TableRow>
                </TableHead>
                <TableBody>
                  {this.state.items.map((item) => (
                    <TableRow key={item.name}>
                      <TableCell component="th" scope="row">
                        {item.uid}
                      </TableCell>
                      <TableCell align="left">{item.item}</TableCell>
                      <TableCell align="left">{item.fat}</TableCell>
                    </TableRow>
                  ))}
                </TableBody>
              </Table>
            </TableContainer>
          </div>
        );
      }
    }
    export default Wish;