Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 引导程序4-如何保持边栏与响应方块的高度相同?_Html_Css_Twitter Bootstrap_Flexbox_Bootstrap 4 - Fatal编程技术网

Html 引导程序4-如何保持边栏与响应方块的高度相同?

Html 引导程序4-如何保持边栏与响应方块的高度相同?,html,css,twitter-bootstrap,flexbox,bootstrap-4,Html,Css,Twitter Bootstrap,Flexbox,Bootstrap 4,我有以下设置: 我有一个图像框,作为一个响应的正方形,使用伪元素:after和padding-bottom:100% 问题是: 我想在我的盒子旁边有一个侧边栏,它可以包含任意数量的小缩略图。但是,在默认引导行为中,较小的框会被调整为较大的框。相反,我试图使侧边栏始终与主图像保持相同的高度。如果更大,内容应该垂直滚动 我已经尝试在侧边栏周围使用包装器来实现这一点,但是盒子仍然会变大 我的问题: 如何确保侧边栏仅获得其旁边方形框的最大高度 .行{ 边缘顶部:20px; } .行>分区{ 边框:实心

我有以下设置: 我有一个图像框,作为一个响应的正方形,使用伪元素:after和padding-bottom:100%

问题是: 我想在我的盒子旁边有一个侧边栏,它可以包含任意数量的小缩略图。但是,在默认引导行为中,较小的框会被调整为较大的框。相反,我试图使侧边栏始终与主图像保持相同的高度。如果更大,内容应该垂直滚动

我已经尝试在侧边栏周围使用包装器来实现这一点,但是盒子仍然会变大

我的问题: 如何确保侧边栏仅获得其旁边方形框的最大高度

.行{ 边缘顶部:20px; } .行>分区{ 边框:实心1px 6c757d; 填充:10px; } img{ 显示:块; 边框:1px纯红; } .sidebar>div:not:last child img{ 边缘底部:10px; } .主img{ 宽度:100%; 身高:100%; 对象匹配:覆盖; } .main.wrapper{ 边框:1px纯绿色; 位置:相对位置; } .main.wrapper:之后{ 内容:\00a0; 显示:块; 垫底:100%; 线高:0; } .主支架{ 位置:绝对位置; 左:0; 排名:0; 身高:100%; 宽度:100%; } .侧边栏包装器.侧边栏{ 身高:100%; 溢出y:滚动; }
这是绝对可能的,只有纯CSS。好的,前提很简单。您希望您的行始终采用响应图像的高度,而不是您提到的长长的缩略图列表

我们需要告诉浏览器只查看图像的高度而忽略缩略图列表,为此,我们使用绝对位置从文档流中删除缩略图列表

我复制了您的引导布局,尽管更简单,并实现了我刚才提到的内容。我将边栏定位设置为相对垂直溢出以滚动。我用固定的flex宽度设计了它,没有增长或收缩,然后放置了另一个绝对定位的容器div来放置缩略图

然后,我在主图像所在的位置添加了第二列。剩下的就是添加了img流体引导风格,使图像响应迅速,瞧

在这里演奏小提琴:

这是代码:

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">

<style>
  .container-overrides {
    background: #ccc;
    margin: 20px auto;
    max-width: 500px !important;
  }

  .sidebar {
    position: relative;
    overflow-y: scroll;
    flex: 0 0 50px;
  }

  .sidebar .image-container {
    position: absolute;
    left: 0;
    right: 0;
    top: 10px;
    bottom: 10px;
  }

  .sidebar img {
    display: block;
    margin: 0 auto 10px;
  }

  .sidebar img:last-of-type {
    margin: 0 auto;
  }
  .main{
    background:#ccc;
  }
  .main img {
    height: auto;
    border: 1px solid red;
  }

</style>

<div class="container p-0 container-overrides">
  <div class="row no-gutters">
    <!-- Responsive Sidebar -->
    <div class="sidebar bg-dark p-2">
      <div class="image-container">
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
        <img src="http://via.placeholder.com/20x20" />
      </div>
    </div>
    <!-- Main Image Container -->
    <div class="col p-2 main">
      <img src="https://ih1.redbubble.net/image.393347411.1344/flat,800x800,070,f.jpg" class="img-fluid" />
    </div>
  </div>
</div>

这在纯CSS中是不可能的,您必须使用一点javascript来实现结果良好的解决方案,我真的很喜欢它!