将悬停覆盖在具有多个 div 的容器上? (弹性盒)

Posted

技术标签:

【中文标题】将悬停覆盖在具有多个 div 的容器上? (弹性盒)【英文标题】:Hover overlay on a container with multiple divs within? (flexbox) 【发布时间】:2019-07-12 06:15:59 【问题描述】:

我有一个包含多个 div 的 flex 容器。我试图弄清楚如何使用与容器大小相同的副本设置悬停覆盖黑色覆盖并覆盖容器内的 div。我假设有一种方法可以在没有 JS 的情况下使用 html 和 CSS 来做到这一点?这个想法是,当您将鼠标悬停在页面上的一个框上时,“阅读更多”通知会出现在 75% 透明的黑色覆盖层上。我现在只是为了“添加更多细节”而漫无目的

.box 
  display: flex;
  transition: background-color 0.5s ease;
  background: white;
  width: 23%;
  margin: 10px;
  color: black;
  font-weight: bold;
  font-size: .7em;
  text-align: center;
  justify-content: space-between;
  height: 40%;
  border-left: .5px solid black;
  border-right: .5px solid black;
  flex-direction: column;


#header-box 
  display: flex;
  border-top: 1px solid black;
  border-bottom: 1px solid black;
  width: 100%;
  justify-content: flex-star;
  align-content: flex-start;
  font-family: 'Big Caslon';


#end-matter 
  display: flex;
  border-top: 10px solid black;
  border-bottom: 10px solid black;
  border-width: .5px;
  width: 100%;
  justify-content: space-around;


#sign-photo 
  display: flex;
  justify-content: center;


#aries 
  display: flex;
  width: 50%;
  justify-content: center;


.sign-copy 
  display: flex;
  padding-left: 5px;
<div class="box">
  <div id="header-box">
    <h2 class="sign-copy">
      Aries
    </h2>
  </div>
  <div id="sign-photo">
    <img id="aries" src="CSS/images/aries2.svg">
  </div>
  <div id="end-matter">
    <p>
      wtf
    </p>
    <p>
      weird content here
    </p>
    <p>
      time something?
    </p>
  </div>
</div>

【问题讨论】:

嗨,乔,欢迎来到 SO。你有任何可以附加的代码吗?很有帮助! 嗨,Joe,如果您可以使用 codepen.io/pen 创建问题示例,那么其他人可以提供解决方案。 您希望“阅读更多”通知出现在悬停时的每个单独的框上还是所有框上? 【参考方案1】:

您可以在特定的 css 类上使用 :hover 和 :after。

例如:

.container 
  border: 2px solid blue;
  display: flex;


.eachDiv 
  border: 1px solid red;
  background-color: gray;
  width: 33%;
  height: 50px;


.eachDiv:hover 
  color: purple;
  background-color: yellow;

 
.one:hover:after 
  content: "this is the first div!!!";

 
.two:hover:after 
  content: "el segundo div";

 
.three:hover:after 
  content: "three is the best";

 
<div class="container">
  <div class="eachDiv one">one</div>
  <div class="eachDiv two">two</div>
  <div class="eachDiv three">three</div>
</div>

注意:this answer 可能是您问题的更好解决方案。

【讨论】:

这不是答案,请使用 cmets 的评论部分。 @Zac 用一些示例代码更新了我的答案,显示了 :hover 和 :after 的使用

以上是关于将悬停覆盖在具有多个 div 的容器上? (弹性盒)的主要内容,如果未能解决你的问题,请参考以下文章

没有弹性盒的垂直居中

web布局新方法:弹性盒

将相对div拉伸到其静态父级的高度

设置主弹性容器和嵌套弹性容器之间的包装优先级

Flex弹性盒子布局

如何让带有 z-index 的 div 在悬停时覆盖另一个 div