图像应该占据剩余位置(Vue/Tailwind/Flex)

Posted

技术标签:

【中文标题】图像应该占据剩余位置(Vue/Tailwind/Flex)【英文标题】:Image should take remaining place (Vue/Tailwind/Flex) 【发布时间】:2021-07-17 19:12:48 【问题描述】:

我需要编写以下设计

我想给中间的大图像(深红色)提供我的 flexcontainer 的剩余空间,其中黄色的东西是边距/填充。我在这里遇到的问题是,我的图像总是与 flex 容器以及底部的图像和 svgs 重叠。我不想给图像一个固定的高度,也不想给一些百分比值,因为我想让它保持响应和动态。这是我的代码:

  <div
class="flex flex-col flex-1 fixed bg-black w-auto inset-x-11 inset-y-10 z-1003">
</svg>
<div class="fixed flex flex-1 flex-col inset-x-20 inset-y-20">
  <div class="flex h-3/4 justify-center items-center">
    <svg
    </svg>

    <img
      class="mx-6 w-5/6 h-full bg-gray-light border-2 rounded-md"
      My Big Image
    />
    <svg
    </svg>
  </div>
  <div class="flex w-full flex-row flex-1 items-end justify-center mt-6">
    <div v-for="img in 3" class="mx-6 bg-black-normal rounded-lg">
      <img
       the orange images
      />
    </div>
  </div>
</div>

这里最好的解决方案是我删除所有高度,只使用 flex flex-1 flex-shrink 等等,但它不能按预期正常工作。

【问题讨论】:

【参考方案1】:

您可以通过多种方式做到这一点。弹性盒是很好的方法,但对于缩略图图像,我会使用网格来使它们均匀(但肯定也可以使用弹性盒)。

按钮是否使用 SVG 并不重要。但如果您对它们有任何疑问 - 请提供真实的复制示例(https://play.tailwindcss.com/ 可能很有用)。

演示:https://play.tailwindcss.com/RsXsrdSYG3

<link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet"/>

<div class="min-h-screen bg-gray-50 p-8 flex flex-col">
  <div class="flex items-center">
    <button class="flex-none w-16 h-16 bg-gray-500">PREV</button>
    <div class="px-6">
      <img src="https://via.placeholder.com/1920x1080" />
    </div>
    <button class="flex-none w-16 h-16 bg-gray-500">NEXT</button>
  </div>
  <div class="mt-6 grid grid-cols-3 gap-6">
    <img src="https://via.placeholder.com/1920x1080" />
    <img src="https://via.placeholder.com/1920x1080" />
    <img src="https://via.placeholder.com/1920x1080" />
  </div>
</div>

或者如果你想填充屏幕高度(但空白区域会在大图像上可见以保持响应率)。

演示:https://play.tailwindcss.com/hTYuGjPHHk

<link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet"/>

<div class="h-screen bg-gray-50 p-8 flex flex-col">
  <div class="flex items-center flex-1">
    <button class="flex-none w-16 h-16 bg-gray-500">PREV</button>
    <div class="px-6 h-full flex items-center">
      <img src="https://via.placeholder.com/1920x1080" />
    </div>
    <button class="flex-none w-16 h-16 bg-gray-500">NEXT</button>
  </div>
  <div class="mt-6 grid grid-cols-3 gap-6">
    <img src="https://via.placeholder.com/1920x1080" />
    <img src="https://via.placeholder.com/1920x1080" />
    <img src="https://via.placeholder.com/1920x1080" />
  </div>
</div>

【讨论】:

感谢您的努力。不幸的是,这个解决方案不能正确地为我工作,因为我需要使用固定/绝对值来定位它与我需要使用的其他组件。看到我的演示 play.tailwindcss.com/nSdJsYxuJW ,图像缩略图正在走出我的屏幕:(

以上是关于图像应该占据剩余位置(Vue/Tailwind/Flex)的主要内容,如果未能解决你的问题,请参考以下文章

让 div (height) 占据父级剩余高度

是否可以使表格的前两列与其内容一样宽,而第三列占据剩余空间?

如何使图像占据屏幕的整个宽度? (html,css)

如何让图像填充 div 内的剩余空间? [复制]

创建一个带有缩放文本和图像以适应剩余空间的div?

Firefox 100% 高度和自动滚动 div 问题