将特定的属性传递给选定的孩子

时间:2019-05-25 13:30:32

标签: html css overflow

我目前正在第一个网站上工作,尝试创建两个动画时遇到了问题。将元素悬停时,将文本移到图像上方(在本示例中为“ Krow Logo”),放大图像并更改其不透明度。到目前为止很好。

问题是,我也希望在此动画期间在元素h3中过渡一个小的文本。这并非以我尝试过的所有方式起作用。我想象这是继承的问题,所以我尝试将父级的属性专门更改为其第二个孩子。没有运气。

我想保留溢出:隐藏在h2(Krow徽标)上,但不隐藏在h3上,因为我希望h3移到父框的外侧。

任何提示都将不胜感激!

我摆弄:nth-​​child尝试更改属性溢出:隐藏为可见

我尝试创建位置设置为相对的祖父母元素。

我尝试了+〜>组合器的组合

它们都不起作用。

CSS


@import url(https://fonts.googleapis.com/css?family=Raleway:400,800);
figure.snip1104:first-child {
  font-family: 'Raleway', Arial, sans-serif;
  position: absolute;
  left:20%;
  overflow: hidden;
  margin: 10px;
  min-width: 220px;
  max-width: 310px;
  max-height: 220px;
  width: 100%;
  background: #000000;
  color: #ffffff;
  text-align: center;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.15);
}

figure.snip1104 h2 {
  position: absolute;
  left: 40px;
  right: 40px;
  display: inline-block;
  background: #000000;
  -webkit-transform: skew(-10deg) rotate(-10deg) translate(0, -50%);
  transform: skew(-10deg) rotate(-10deg) translate(0, -50%);
  padding: 12px 5px;
  margin: 0;
  top: 50%;
  text-transform: uppercase;
  font-weight: 400;
}

figure.snip1104:hover h2,
figure.snip1104.hover h2 {
  -webkit-transform: skew(-10deg) rotate(-10deg) translate(-150%, -50%);
  transform: skew(-10deg) rotate(-10deg) translate(-150%, -50%);
}

figure.snip1104 h3 {
    opacity:0;
  z-index: 5;
  position: absolute;
  left: 40px;
  right: 40px;
  display: inline-block; 
  padding: 12px 5px;
  margin: 0;
  top: 110px;
  overflow: visible;


}

figure.snip1104:hover h3,
figure.snip1104.hover h3{
    opacity:1;
    background-color:green;
    transform: translateY(200%);
}

HTML


<figure class="snip1104 blue">
    <img class="temp" src="/home/it21366/Desktop/liberty/tshirtblue.jpg" alt="sample33"/>
    <figcaption>
        <h2>Krow <span> Logo</span></h2>
        <h3>tesssst</h3>
    </figcaption>

    <a href="#"></a>
</figure>

我希望发生的效果是

tessst

溢出了父片段,即使移出了其边界也保持可见。相反,h3消失了(移至位置,但被隐藏了)

2 个答案:

答案 0 :(得分:2)

好的,我创建了一个示例来展示您如何解决所遇到的问题(根据我对问题的理解)。基本上,您可以为标题和图像创建一个容器,并根据容器的悬停状态控制标题/图像。

我已经解决了解决元素移动问题所需的所有工作,因此您必须以有意义的方式(例如,使用大小调整,display: none,任何你想要的。)

还有一些方法可以使用JavaScript触发此操作,但是我想展示仅CSS的解决方案。

如果运行代码段,则应全屏查看它,否则它看起来很糟糕,因为我将视口单位用于页面高度。或签出代码笔并在左侧或右侧放置编辑器,以获取更大的显示高度。

https://codepen.io/zenRyoku/pen/oRdYzB?editors=1100

@import url(https://fonts.googleapis.com/css?family=Raleway:400,800);

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: 'Raleway', Arial, sans-serif;
}

.page {
  height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: slategray;
}

.main-heading,
.sub-heading {
  padding: 2rem;
  color: white;
  background: rgba(0,0,0,.6);
  transition: all 300ms;
  text-align: center;
}

.main-heading {
  transform: translateY(200%);
}

.sub-heading {
  opacity: 0;
}

.container:hover .main-heading {
  transform: translateY(0px);
}

.container:hover .sub-heading {
  opacity: 1;
  transform: translateY(-200%);
}
<div class="page">
  <div class="container">
    <h2 class="main-heading">Logo</h2>
    <img src="https://source.unsplash.com/400x300/?japan,sign"/>
    <h3 class="sub-heading">some other text</h3>
  </div>
</div>

答案 1 :(得分:0)

不确定我要实现的目标是什么,但如果父框中隐藏了溢出,那么您想要溢出的任何内容都将被隐藏,因为这就是溢出的含义:隐藏。 / p>

如果我要问的话,您打算以此为目标吗?

figure.snip1104:hover h2,
figure.snip1104.hover h2