首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何转换z-index?

如何转换z-index?
EN

Stack Overflow用户
提问于 2017-09-24 06:24:02
回答 3查看 26.9K关注 0票数 16

https://jsfiddle.net/vaf6nv36/1/

气球图像可以在苹果图像上慢慢过渡吗?

我想我需要更多的过渡参数,或者我应该使用不透明度?

有人能帮我吗?

HTML:

代码语言:javascript
复制
<div class="img1">

</div>

<div class="img2">
                    
</div>

CSS:

代码语言:javascript
复制
.img1, .img2{
   border: 1px solid black;
   transition: 1s;
   position: absolute;
}

.img1{
    left: 25%;
    height: 500px;
    width: 500px;
    z-index: 1;
    background-image: url(http://cdn.pcwallart.com/images/balloons-photography-vintage-wallpaper-1.jpg);
   }

.img2{
  right: 25%;
  width: 500px;
  height: 500px;
  bottom: 0;
  z-index: 2;
  background-image:  url(https://i.pinimg.com/736x/c1/7b/15/c17b150e93c4e9c50d963b076484bee7--apple-wallpaper-iphone-wallpaper.jpg);
}

.img1:hover{
       z-index: 999;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-24 06:52:17

虽然理论上你可以转换z-index,但这不会有多大意义,也就是不会产生你显然在寻找的交叉淡入淡出效果:z-index值是整数,当你以最小的步长(整数,没有逗号)改变它们时,结果要么在另一个状态之前,要么在另一个状态之后--在两者之间没有过渡的“半状态”。如果你想在两个元素之间做一种连续的交叉淡入淡出,你应该在opacity上使用一个过渡。

在您的特定情况下,由于您的DIV不是直接位于彼此之上,而只是相互重叠,您可以通过使用与img2相同的第二个DIVs (我称之为它的类.img3)来解决这个问题,但是使用z-index: 0和下面的CSS规则:

代码语言:javascript
复制
.img1:hover + .img2 {
  opacity: 0;
}

这将淡出img2,但仍然显示img3,但它是img1的幕后黑手,这给人一种在img1和img2之间过渡的印象。

https://jsfiddle.net/2a2epLfv/1/

代码语言:javascript
复制
.img1,
.img2,
.img3 {
  border: 1px solid black;
  transition: 1s;
  position: absolute;
}

.img1 {
  left: 20%;
  height: 300px;
  width: 300px;
  z-index: 1;
  background-image: url(http://cdn.pcwallart.com/images/balloons-photography-vintage-wallpaper-1.jpg);
}

.img2,
.img3 {
  right: 20%;
  width: 300px;
  height: 300px;
  top: 100px;
  background-image: url(https://i.pinimg.com/736x/c1/7b/15/c17b150e93c4e9c50d963b076484bee7--apple-wallpaper-iphone-wallpaper.jpg);
}

.img2 {
  z-index: 2;
}

.img3 {
  z-index: 0;
}

.img1:hover+.img2 {
  opacity: 0;
}
代码语言:javascript
复制
<div class="img1"></div>
<div class="img2"></div>
<div class="img3"></div>

票数 13
EN

Stack Overflow用户

发布于 2017-09-24 06:52:07

我担心z-index转换只会让元素一步一步地通过每一层。为了获得一个很好的效果,你需要将它与不透明度过渡和缩放/位置过渡结合起来。向你展示这个想法的小提琴:

代码语言:javascript
复制
.img1, .img2{

  border: 1px solid black;
    transition: 1s;
    position: absolute;
}

.img1{
    left: 25%;
    height: 500px;
    width: 500px;
    z-index: 1;
    transform: scale(0.9);
    opacity: 0.5;
    background-image: url(http://cdn.pcwallart.com/images/balloons-photography-vintage-wallpaper-1.jpg);
}

.img2{
    right: 25%;
    width: 500px;
    height: 500px;
    bottom: 0;
    z-index: 2;
    background-image:  url(https://i.pinimg.com/736x/c1/7b/15/c17b150e93c4e9c50d963b076484bee7--apple-wallpaper-iphone-wallpaper.jpg);
}

.img1:hover{
    animation: fronte 1s linear forwards; 
}

@keyframes fronte {
  from { z-index: 0; transform: scale(0.9); opacity: 0.5; }
  to { z-index: 4; transform: scale(1.1); opacity: 1; }
}
代码语言:javascript
复制
<div class="img1">
</div>
<div class="img2">
</div>

票数 5
EN

Stack Overflow用户

发布于 2018-06-03 20:35:25

这是我使用的技巧。

代码语言:javascript
复制
.minus{animation:move 2s;animation-fill-mode:forwards;animation-delay:2s;}

@-webkit-keyframes move {
  0 {z-index:1;opacity:1}
  50% {opacity:0}
  100% { z-index:-1;opacity:1}
}
@keyframes move {
  0 {z-index:1;opacity:1}
  50% {opacity:0}
  100% {z-index:-1;opacity:1}
}

#main{background:red;width:100vw;height:100vh;position:fixed;top:0;left:0;opacity:.9}
.minus{position:fixed;top:10px;left:10px;z-index:1;color:#000}
代码语言:javascript
复制
<div id="main"></div>
<div class="minus">FADE</div>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46384799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档