js滑动后吸顶实现

本文介绍了两种JavaScript实现滑动后元素吸顶的方法。法一是通过addEventListener监听滚动,当滚动到一定高度时,使用fixed定位使元素吸顶。法二是利用CSS的sticky定位,设置top: 0,元素会在滚动时固定在最近的滚动祖先顶部,非常便捷。
摘要由CSDN通过智能技术生成

效果:

 

法一:

addEventListener监听滚动,当滚动上去的高度scrollTop 大于 吸顶部分距离页面顶部的距离offsetTop时,添加一个类,类里边用fixed布局,top设置成0;当又滚动下来,在将该类名移除即可,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  body {
    margin: 0;
  }
  .wrap {
    height: 600px;
    overflow: auto;
    width: 100%;
    background-color: darksalmon;
  }
  .blank {
    height: 200px;
  }
  .header {
    height: 100px;
  
在HarmonyOS中实现滑动吸顶功能,通常涉及到窗口管理、触摸事件处理以及状态栏交互。以下是基本步骤: 1. **设置布局**:首先,需要将需要吸顶的视图放在一个可以响应滚动的`StackView`或`ListStack`容器内,这是HarmonyOS提供的用于管理窗口层次结构的组件。 ```xml <com Huawei.HMS.UI.view.StackView> <com.example.YourCustomComponent/> </com Huawei.HMS.UI.view.StackView> ``` 2. **监听滚动事件**:在自定义组件上添加滚动监听器,当用户滑动屏幕时检查是否达到了吸顶条件。 ```java StackView stackView = findViewById(R.id.stack_view); stackView.setOnScrollListener(new OnScrollListener() { @Override public void onScroll(float x, float y) { // 检查y坐标,如果超过某个阈值则启动吸顶模式 if (y > ABSOLUTE_TOP_THRESHOLD) { startPinching(); } else if (y <= ABSOLUTE_TOP_THRESHOLD) { stopPinching(); } } }); ``` 3. **开启/关闭吸顶**:当满足吸顶条件时,启用状态栏的透明度变化(如果支持),同时调整顶部视图的位置使其固定在屏幕顶部。关闭时恢复原状。 ```java private void startPinching() { // 设置状态栏半透明,显示吸顶效果 setStatusBarTransparent(); // 将顶部视图设置绝对位置,吸附到顶部 yourCustomComponent.setTranslationY(0f); } private void stopPinching() { // 清除状态栏透明度,隐藏吸顶效果 clearStatusBarTransparent(); // 让顶部视图回到正常滚动位置 yourCustomComponent.setTranslationY(-yourCustomComponent.getHeight()); } ``` 4. **状态栏操作**:为了与系统状态栏保持良好互动,可能还需要实现`OnSystemUiVisibilityChangeListener`,监听系统UI状态改变,并相应地调整吸顶效果。 记得在实际项目中考虑适配各种屏幕尺寸和设备特性。完成上述步骤后,你应该就能在HarmonyOS应用中实现滑动吸顶效果了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值