CSS:在 div 后面居中视频而不影响整体 div 布局?

Posted

技术标签:

【中文标题】CSS:在 div 后面居中视频而不影响整体 div 布局?【英文标题】:CSS: center video behind div without affecting overall div layout? 【发布时间】:2021-11-11 03:39:48 【问题描述】:

我有一个包含多个 div 的页面。它们都根据各种标准进行了尺寸和定位。

[div1]
[div2]
[div3]

现在有人请求在其中一个 div 后面放置一个视频(具有设定的宽度/高度)。

[div1]
[div2 - now with background video]
[div3]

如何在不以任何方式影响现有布局的情况下做到这一点?

这是我想要做的事情的起点:

https://jsfiddle.net/gzdjL8kx/

我希望蓝色框(代表视频)保持居中(垂直和水平)在黄色框后面,完全不影响黄色/红色/橙色框的布局,并且布局黄色/红色/橙色框的数量可以更改,蓝色框的位置将适应,使其保持在黄色后面的中心。即使更改了宽度/高度,蓝色框也应保持居中。

鉴于那个小提琴,这是我想要的结果,但我不知道如何实现它:

https://i.imgur.com/k0S8WNF.png

基本上,我希望蓝色框能够相对于黄色框定位,而不会影响其他框。到目前为止,我所有试图将其居中的尝试最终也将其他框撞到了周围。

【问题讨论】:

【参考方案1】:

如果您在视频中使用position:absolute;,您将从文档流中删除它,从而阻止它影响其他相对定位的 div 的位置。

如果您的目标是为您的视频创建一个灯箱样式的弹出窗口,您可以使用以下方法将其居中放置在视口中:

.yellow

  width:250px;
  height:150px;
  margin:auto;
  background-color:yellow;
  position:relative;

.orange

  width:500px;
  height:100px;
  margin:auto;
  background-color:orange;

.red

  width:100%;
  height:150px;
  background-color:red;

.blue

  width:320px;
  height:240px;
  background-color:blue;
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%, -50%);
<div class="orange">
</div>

<div class="yellow">
  <div class="blue"></div>
</div>

<div class="red">
</div>

【讨论】:

谢谢,但我需要将视频 div 置于黄色的中心。这不是我想要实现的灯箱式弹出窗口。有没有办法将 position:absolute 与对另一个 div 的中心位置的引用结合起来? 是的,我刚刚更新了 sn-p。在黄色 div 中使用position:relative,然后将蓝色 div 放入其中。如果你将一个绝对定位的元素放在带有position:relative 的div 中,它的定位将相对于它的父元素。 啊,谢谢!这似乎是我正在寻找的答案。感谢您的快速编辑。

以上是关于CSS:在 div 后面居中视频而不影响整体 div 布局?的主要内容,如果未能解决你的问题,请参考以下文章

html中css+div!一个网页的整体框架居中

body 内容居中问题

css怎样让整体居中?

用css如何让大div里的两个小div居中,如图

CSS如何让div相对body居中 而其中的控件不受影响。

CSS Flexbox - 在两个 div 之间居中一个 div [重复]