html - 滚动页面时如何为纯 CSS 中的部分设置动画?

标签 html css

我正在寻找一种在用户滚动页面时为某些元素设置动画(使用 @keyframestransform...)的方法。例如:

  • 当偏移量为 0 时:divheight: 100px
  • 当偏移量在 0 到 100 之间时:divheight: 50pxcolor: blue
  • 等等...

是否可以使用纯 CSS? 如果不是,使用 HTML 或 Javascript 最有效的方法是什么?

最佳答案

根据滚动位置为元素的样式属性设置动画的最有效方法可能是添加一个具有滚动功能的类:

Working Example

myID = document.getElementById("myID");

var myScrollFunc = function() {
  var y = window.scrollY;
  if (y > 500) {
    // myID.style.backgroundColor = "blue"; // you can add individual styles 
    myID.className = "blue" // or add classes
  } else {
    // myID.style.backgroundColor = "red";
    myID.className = "red"
  }
};

window.addEventListener("scroll", myScrollFunc);
body {
  height: 1100px;
}
#myID {
  position: fixed;
  height: 100px;
  line-height: 20px;
  transition: all 1s;
}
.blue {
  background: blue;
  animation: myAnimation 1s both;
}
.red {
  background: red;
}
@keyframes myAnimation {
  0% {
    border-radius: 0px;
    line-height: 10px;
  }
  100% {
    border-radius: 100%;
    line-height: 100px;
  }
}
<div id="myID" class="red">Hello world</div>

文档:

.scrollY
.className
.addEventListener

关于html - 滚动页面时如何为纯 CSS 中的部分设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32208560/

相关文章:

javascript - 使用 Javascript 淡出子 div 图像并淡入重叠的父 div 图像

css - 关于屏幕尺寸而不是分辨率的媒体查询

css - 在调整大小时中心切片响应式 svg 图像

html - CSS 过渡 - 先滑动菜单,然后淡入淡出文本

HTML/CSS 将 div 设置为背景

HTML 电子邮件 header 未按应有的方式定位

javascript - IE8不显示文本区域调整右下角

javascript - 如何使用 jQuery 在类之间随机切换

php - 在模态视图上显示所选行的完整信息

javascript - 在 CSS 动画之后滚动到 anchor ?