首页 > 其他分享 >[RxJS] Create a scroll progress bar

[RxJS] Create a scroll progress bar

时间:2022-10-03 14:23:00浏览次数:39  
标签:map bar Create percent progress scroll const

// begin lesson code
import { fromEvent } from 'rxjs';
import { map } from 'rxjs/operators';

/*
 * Calculate progress based on scroll position
 */
function calculateScrollPercent(element) {
  const { scrollTop, scrollHeight, clientHeight } = element;

  return (scrollTop / (scrollHeight - clientHeight)) * 100;
}

// elems
const progressBar: any = document.querySelector('.progress-bar');

// streams
const scroll$ = fromEvent(document, 'scroll');

const progress$ = scroll$.pipe(
  /*
   * For every scroll event, we use our helper function to 
   * map to a current scroll progress value.
   */
  map(({ target }: any) => calculateScrollPercent(target.scrollingElement))
);
/*
 * We can then take the emitted percent and set the width
 * on our progress bar.
 */
progress$.subscribe(percent => {
  progressBar.style.width = `${percent}%`;
});

 

 

<iframe src="https://stackblitz.com/edit/rxjs-yw4jld?embed=1&file=index.ts" style="width: 100%; height: 500px"></iframe>

标签:map,bar,Create,percent,progress,scroll,const
From: https://www.cnblogs.com/Answer1215/p/16750476.html

相关文章

  • react的jsx和React.createElement是什么关系?面试常问
    1、JSX在React17之前,我们写React代码的时候都会去引入React,并且自己的代码中没有用到,这是为什么呢?这是因为我们的JSX代码会被Babel编译为React.createElement,我们来......
  • 服务相关 CreateService
    https://baike.baidu.com/item/CreateService/2662500?fr=aladdinSC_HANDLECreateService(SC_HANDLEhSCManager,//服务控制管理程序维护的登记数据库的句柄,由系统函数O......
  • BOOL CreateProcess
    https://blog.csdn.net/fuhanghang/article/details/112988299 BOOLCreateProcess(LPCTSTRlpApplicationName,LPTSTRlpCommandLine,LPSECURITY_ATTRIBUTESlpProcess......
  • CreateFileA
    CreateFileA(__inLPCSTRlpFileName,__inDWORDdwDesiredAccess,__inDWORDdwShareMode,__in_optLPSECURITY_ATTRIBUTESlpSecurityAttri......
  • [Oracle] LeetCode 53 Maximum Subarray 贪心
    Givenanintegerarraynums,findthecontiguoussubarray(containingatleastonenumber)whichhasthelargestsumandreturnitssum.Asubarrayisacontig......
  • P4084 [USACO17DEC]Barn Painting G
    #include<bits/stdc++.h>usingnamespacestd;constlonglongmod=1e9+7;classDP_on_tree{public: #definelllonglong lln,k; llfree[100001]; llf......
  • [Oracle] LeetCode 560 Subarray Sum Equals K 思维+Map
    Givenanarrayofintegersnumsandanintegerk,returnthetotalnumberofsubarrayswhosesumequalstok.Asubarrayisacontiguousnon-emptysequenceof......
  • DEMO: ME51N 创建PR BAPI_REQUISITION_CREATE
    货铺QQ群号:834508274*&---------------------------------------------------------------------**&BAPI_REQUISITION_CREATE和BAPI_PR_CREATE相关问题查看NOTE*&49962......
  • DEMO: ME51N 创建PR BAPI_PR_CREATE
    货铺QQ群号:834508274*&---------------------------------------------------------------------**&BAPI_REQUISITION_CREATE和BAPI_PR_CREATE相关问题查看NOTE*&49962......
  • Spring源码-createBeanInstance和SmartInstantiationAwareBeanPostProcessor
    protectedBeanWrappercreateBeanInstance(StringbeanName,RootBeanDefinitionmbd,@NullableObject[]args){//Makesurebeanclassisactuallyresolvedatth......