简体   繁体   English

我已经使动画在滚动状态下工作,但是我想应用的样式阻止了它的工作

[英]I've made an animation work on scroll, however the styling I want to apply is preventing it working

I have butchered the below from a few sources, I want to animate the text moving up highlighting on scroll. 我从一些来源了解了以下内容,我想为向上滚动显示的文本设置动画。 But I want it to look like this: 但我希望它看起来像这样:

Heading 标题

I've got some CSS there which does it but it stops the animation working, I want this animation to work across my site for various headings, not 100% sure if the code here will do that or not! 我在那里有一些CSS可以做到这一点,但是它停止了动画的工作,我希望该动画可以在我的网站上针对各种标题工作,而不是100%确定这里的代码是否可以做到!

HTML 的HTML

<ul>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
<div id = "spacer"></div>
  <div class='boostheadings'><h2>TAKE NOTE, MAKE <span class="onAppear">PROGRESS</span></h2></div>  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
</ul>  

CSS 的CSS

/*.boostheadings {
  font-family: "montserrat";
  font-size: 7vw;
  -webkit-transform: skew(-20deg);
  -moz-transform: skew(-20deg);
  -o-transform: skew(-20deg);
  transform: skew(-20deg);
}
*/

.onAppear {
 background-image: linear-gradient(120deg, #32d2ff 0%, #32d2ff 100%);
  transform: skew(30deg);
  background-repeat: no-repeat;
  background-size: 100% 20%;
  background-position: 0 88%;
  transition: background-size 0.25s ease-in;
}
.visible {
    background-image: linear-gradient(120deg, #32d2ff 0%, #32d2ff 100%);
  background-repeat: no-repeat;
  background-position: 0 88%;
  transition: background-size 1s ease-in;
    background-size: 100% 90%;
    transform: skew(30deg);
}

}

JS JS

var onAppear = [];

document.addEventListener("DOMContentLoaded", function() {
  onAppear = [].map.call(document.querySelectorAll(".onAppear"), function(item ) {
    return item;
  });
}, false);

window.addEventListener("scroll", function() {
  onAppear.forEach(function(elem) {
    var vwTop = window.pageYOffset;
    var vwBottom = (window.pageYOffset + window.innerHeight);
    var elemTop = elem.offsetTop;
    var elemHeight = elem.offsetHeight;

    if (vwBottom > elemTop && ((vwTop - elemHeight) < elemTop)) {
     elem.classList.add("visible");
    } else {
      elem.classList.remove("visible");
    }
  });
}, false);

https://codepen.io/anon/pen/xYKMbM https://codepen.io/anon/pen/xYKMbM

 var onAppear = []; document.addEventListener("DOMContentLoaded", function() { onAppear = [].map.call(document.querySelectorAll(".onAppear"), function(item ) { return item; }); }, false); window.addEventListener("scroll", function() { onAppear.forEach(function(elem) { var vwTop = window.pageYOffset; var vwBottom = (window.pageYOffset + window.innerHeight); var elemTop = elem.offsetTop; var elemHeight = elem.offsetHeight; if (vwBottom > elemTop && ((vwTop - elemHeight) < elemTop)) { elem.classList.add("visible"); } else { elem.classList.remove("visible"); } }); }, false); 
 .boostheadings { font-family: "montserrat"; } .skewed { display: inline-block; -webkit-transform: skew(-20deg); -moz-transform: skew(-20deg); -o-transform: skew(-20deg); transform: skew(-20deg); } .onAppear { background-image: linear-gradient(120deg, #32d2ff 0%, #32d2ff 100%); background-repeat: no-repeat; background-size: 100% 20%; background-position: 0 88%; transition: background-size 0.25s ease-in; } .visible { background-image: linear-gradient(120deg, #32d2ff 0%, #32d2ff 100%); background-repeat: no-repeat; background-position: 0 88%; transition: background-size 1s ease-in; background-size: 100% 90%; } 
 <ul> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <div id = "spacer"></div> <div class='boostheadings'> <h2> <span class="skewed">TAKE NOTE, MAKE</span> <span class="onAppear skewed">PROGRESS</span> </h2> </div> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> <li>Item</li> </ul> 

In this snippet I did not go through the rest of your code, just the thing that prevented your animation. 在此代码段中,我没有遍历您的其余代码,只是阻止了动画的事情。

In order to make sure it works, you can skew elements inside h2 tag as separate elements, not the whole .boostheadings div. 为了确保它起作用,您可以将h2标签内的元素倾斜为单独的元素,而不是整个.boostheadings div。

So in your case 2 span elements should be skewed (I wrapped first part of sentence in span, just before span with animation), which cannot be transformed as inline elements, so I gave them class "skewed" then in css gave them display: inline-block and skew transform. 因此,在您的情况下,应该歪斜2个span元素(我将span的第一部分包装在span中,紧接动画之前为span),不能将其转换为嵌入式元素,因此我给它们提供了“歪斜”类,然后在css中为它们显示:内联块和偏斜变换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我创建了一个滑出社交媒体图标的 animation。 但是,我需要将其应用于多个 div - I've created an animation that slides out social media icons. However, I need to apply this to multiple divs 我想单独应用计数 animation - I want to apply the count animation individually 表单 onChange 工作,但是当我将其更改为 onSubmit 时无法工作? - Form onChange working, however fails to work when I change it to onSubmit? 为什么我的 object 在我制作、保存并想要提醒时不提醒? - Why does my object not alert when I've made it, saved it, and want to alert it? 向下滚动时动画不起作用 - Animation not working when I scroll down 我做了一些投票按钮(想想reddit / digg / etc),但是在IE8以下它们不起作用 - I made some voting buttons (think reddit/digg/etc) however they don't work below IE8 如何在CSS上延迟动画? 我尝试了动画延迟。 不起作用 - How to delay animation on CSS? I've tried animation-delay. Doesn't work 我制作了一个 javascript 代码,将我的图像从数组随机显示到照片网格中,但我不希望图像重复 - i've made a javascript code that randomly displays my images from an array into a photo grid but i don't want the images to repeat 下面是我一直在处理的索引页面的 html。 我想编辑和删除数据表中的按钮但不工作 - Below is the html for an index page I've been working on. I want to edit and delete button in datatable but not working 我有一个不工作的 AJAX 函数 - I've a not working AJAX function
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM