如何用动画叠加遮罩元素?

TC工作

我正在尝试为我正在处理的项目做一些页面转换,当用户使用Barba导航网站时,屏幕上出现了动画叠加层,但出现问题。

我希望徽标位于随叠加层一起滚动的页面上,但是我需要将其与叠加层分开放置,因为叠加层上的任何变换也会影响徽标。(我希望徽标以叠加层元素遮罩)

我尝试过的

  • 切换元素层次结构/ Z索引(我确定问题出在这里)
  • 尝试不同的变换
  • 遇到最大宽度问题(取得了一些成功,但我需要转换原点属性)

范例-

let transitionOpen = false;

$('.transition-cta').on("click", function() {
  if (transitionOpen === false) {
    $('.transition-background').css("transform", "scaleX(1)");
    $(this).css("color", "white");
    transitionOpen = true;
  } else {
    $('.transition-background').css("transform", "scaleX(0)");
    $(this).css("color", "black");
    transitionOpen = false;
  }
});
body {
  background-color: lightblue;
}

.someContent {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.transition-wrapper {
  overflow: hidden;
}

.transition-background {
  width: 100%;
  height: 100vh;
  position: absolute;
  top: 0;
  left: 0;
  transform-origin: left;
  transition: 0.7s ease-in-out;
  background-color: #1f1f1f;
  transform: scaleX(0);
  z-index: 2;
}

.transition-center {
  background-image: url('https://i.imgur.com/6um9G9h.png');
  z-index: 2;
  width: 150px;
  height: 150px;
  position: absolute;
  background-repeat: no-repeat;
  background-size: cover;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.transition-cta {
  text-decoration: underline;
  cursor: pointer;
  z-index: 3;
  position: absolute;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div class="transition-wrapper">
  <div class="transition-background"></div>
  <!-- I want to clip this with the transition background -->
  <div title="I only want this to show with the transition overlay" class="transition-center"></div>
</div>

<div class="transition-cta">Trigger Transition</div>

<div class="someContent">
  <h1>Some Content</h1>
</div>

(地球应随覆盖层一起滚动)

这似乎是一个非常简单的问题,但我真的很难解决。我不知道自己是否精疲力尽,或者这实际上就像我的大脑一样复杂。

谢谢!

陪同Afif

改用clip-path动画,您可以通过将徽标作为背景作为背景来简化代码transition-wrapper

let transitionOpen = false;

$('.transition-cta').on("click", function() {
  $('.transition-wrapper').toggleClass('show');
  if (transitionOpen === false) {
    $(this).css("color", "white");
    transitionOpen = true;
  } else {
    $(this).css("color", "black");
    transitionOpen = false;
  }
});
body {
  background-color: lightblue;
}

.someContent {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.transition-wrapper {
  width: 100%;
  height: 100vh;
  position: absolute;
  top: 0;
  left: 0;
  transition: 0.7s ease-in-out;
  background: url('https://i.imgur.com/6um9G9h.png') center/150px 150px no-repeat;
  background-color: #1f1f1f;
  clip-path: polygon(0 0, 0%  0, 0%   100%, 0 100%);
  z-index: 3;
}

.transition-wrapper.show {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}

.transition-cta {
  text-decoration: underline;
  cursor: pointer;
  z-index: 3;
  position: absolute;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div class="transition-wrapper">
</div>

<div class="transition-cta">Trigger Transition</div>

<div class="someContent">
  <h1>Some Content</h1>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何用叠加的图片绘制散点图?

来自分类Dev

如何叠加“已转换”元素?

来自分类Dev

如何使用图像遮罩html元素

来自分类Dev

如何使用图像遮罩html元素

来自分类Dev

如何用图像和纹理遮罩平铺形状?

来自分类Dev

如何为叠加动画设置图像DIV

来自分类Dev

如何用动画关闭UIView

来自分类Dev

如何在叠加层上方显示元素?

来自分类Dev

我如何用jQuery动画剪辑路径

来自分类Dev

如何用matplotlib填充动画形状?

来自分类Dev

如何用jQuery动画单击链接的边框?

来自分类Dev

如何用动画重新加载iCarousel?

来自分类Dev

我如何用jQuery动画剪辑路径

来自分类Dev

如何用渐变动画阴影?

来自分类Dev

如何用动画设计布局

来自分类Dev

如何使用遮罩将元素和索引放入原始数组

来自分类Dev

jQuery:如何叠加许多异步开始的运动动画?

来自分类Dev

如何用Lottie动画替换SwipeRefreshLayout加载动画

来自分类Dev

ffmpeg使叠加动画平滑

来自分类Dev

如何用2D蒙版遮罩3D张量并保持原始矢量的尺寸?

来自分类Dev

动画后如何删除元素?

来自分类Dev

如何用元素包含的子元素替换元素?

来自分类Dev

如何在Flutter应用程序中叠加元素?

来自分类Dev

如何制作此样式的选择叠加层而不是下推元素

来自分类Dev

如何在绝对定位的元素上添加叠加?

来自分类Dev

如何用react + enzyme选择元素文本

来自分类Dev

如何用ng-transclude替换元素

来自分类Dev

如何用lodash挑选数组的元素?

来自分类Dev

如何用Polymer绘制卡片/元素网格?