better-scroll之吸顶效果巨坑挣扎中

更新日期: 2019-04-07阅读: 3.7k标签: 效果

 今天和大家分享下better-scroll这款移动端用来解决各种滚动需求的插件(目前已经支持PC),关于其中的api大家可以去官网看下  这里就给大家介绍几种常用的以及需要注意的点是什么?首先说一下better-scroll的使用注意问题吧?


1、移动端 我们通常采用三段式进行布局的  例如 <div>    <header></header><main></main><fotter></fotter>   </div>  假如我们利用弹性盒布局的话  给container  开盒子后我们一般给头部和尾部固定的高度 给main这个中间盒子一个flex:1;和overflow:auto ,让其达到可以自由滚动效果  但是如果我们给main这层中间盒子加载了better-scroll这款插件后 我们需要把auto改成hidden  毕竟给上固定高度百分百(当然这里可以省略)

可是有的人就会发现有时滚动效果没有作用对吧 嘿、此时第一个注意问题就来了 加载better-scroll的元素只能有一个直属子元素 也就是 <main><div>剩余布局盒子写在这里</div></main>这种形式 并且content这层盒子不能给固定高度  当content的高度大于外层main这个盒子后better-scroll就会生效

 

2、然后第二点就是今天的重头戏 吸顶效果了  

相信用过这款插件的就会知道我们的滚轮在这里是没有作用的 这也意味着onscroll事件不能使用了 那吸顶效果该如何去做才好呢    在better-scroll中给我们提供了这样一个方法  bs.on("scroll",function(e){})  此时的e能够打印出一个关于滚动产生的x y 对象  注意这个方法要想生效我们需要在  这个bs对象中添加probeType这个属性 写法如下

let bs=new BScroll("main",{probeType:2})
然后到了这里就有人会说那我们既然能够得到y值那岂不是可以 利用以前的方法 我们给需要吸顶的元素添加一个关于固定定位的class类名就可以对吧   然后此时又引出了better-scroll的另一个巨坑了   
fixed定位的元素,如果父级有transform样式,值不为none,那么fixed定位就会失效,scale(),rotate()都会使fixed定位失效。  所以说我们在使用better-scroll事件的盒子里会造成我们的绝对定位失效 从而导致我们的吸顶效果失败     于是本人想出另外一个比较low的方法可以模拟吸顶效果   我们同样可以在scroll这个方法中克隆一下这个需要吸顶的盒子然后 在通过e.y值在达到我们想要的高度时动态添加给除了main任何一个地方  注意这里一定不要加给main   然后在通过绝对定位定在想要位置  不想要的位置再删除  这里删除的时候需要判断是否添加上   添加的时候注意不要多次添加!!!

 
3、点击事件失效问题  
在引用了这个插件后这个盒子内部的元素会出现点击事件失效问题  此时我们需要在bs那个对象中放上这个属性  click:true

 
 4、  返回顶部操作问题
前面说过引入了这个插件后onscroll事件就不会被触发了 那么代表scrollTop也就没有作用了  那么返回顶部操作我们应该怎么办呢?此时better-scroll事件里面有一个方法 bs.scrollTop(0,0,1000) 这个方法可以让我们返回顶部  0,0是返回0,0点位置 第三个参数是返回所用的时间长短
  
 5、上拉加载效果 和 下拉刷新  
这里给大家简单介绍几个API的使用
let bs = new BScroll("main", {
    pullUpLoad: true,//上拉
    pullDownRefresh: true,//下拉
    //也可以写成对象模式
    //注意上拉不支持
    // pullDownRefresh:{
    //     //下拉到一百的位置才会触发
    //     threshold:100,
    //     //然后松手后返回50的位置
    //     stop:50,
    // }
})

bs.on("pullingDown", function () {
    //"pullingUp   上拉"   
    console.log("下拉刷新");
    //这个事件开始告诉浏览器开始下拉刷新了
    //然后进行一些数据的请求

    //当数据请求过来后
    //告诉浏览器下拉结束
    bs.finishPullUp();//上拉结束
    bs.finishPullDown();
    //dom结构发生改变后可以刷新下
    bs.refresh()
})

来自:https://www.cnblogs.com/cq1715584439/archive/2019/04/05/10660265.html



链接: https://fly63.com/article/detial/2747

使用 JavaScript 实现分屏视觉效果

今天这篇文章就来讲讲使用JavaScript来实现这种分屏的视觉UI效果。现在在网站上这种分屏视觉效果应用的也非常广泛,比如 Corsair website。

CSS3的过渡效果,使用transition实现鼠标移入/移出效果

在css中使用伪类虽然实现了样式的改变,但由于没有过渡效果会显得很生硬。以前如果要实现过渡,就需要借助第三方的js框架来实现。现在只需要使用CSS3的过渡(transition)功能,就可以从一组样式平滑的切换到另一组样式。

js如何实现新手引导效果?

js最近有个小伙伴问到了怎么实现新手引导的效果,然后便去网上找了下实现方案。可以通过css的border来实现。

css3 斜切角/斜边的实现方式

设计图含有斜切角的效果时,我们一般想到的方法是切出四个角为背景,然后用border连起来,这样就能显示出该效果了,那么直接使用css呢?下面就整理css做斜边的效果。

JavaScript 实现打字机效果,跑马灯效果

这篇文章在不使用任何插件的情况,以最简洁的原生javascript来实现打字机效果和跑马灯效果。打字效果即把一段话一个字一个字的显示出来。

CSS遮罩效果(模糊效果,阴影效果,毛玻璃效果)

一般遮罩加上透明度opacity就是阴影效果。阴影效果和一般遮罩一样,唯一不同的是设置.mask遮罩的背景色用rgba()表示,当然hsla()也是可以的。模糊效果(毛玻璃效果) 通过 filter来实现

纯css实现气泡效果

主要运用的是1.border 组成的直角三角形。2,before 和 after 伪元素 。3,z-index属性;将元素的长宽设置为0,并且将border的3条边设置为透明的,就会出现border颜色的直角三角形

css文字选中效果

文字选中效果,这个可能很少有人注意过。在默认状态先一般选中的文本颜色是白字蓝底的,不过可以通过CSS进行设置。::selection定义元素上的伪选择器,以便在选定元素时设置其中文本的样式。

text-fill-color:仿苹果官网介绍效果 CSS设置文字渐变效果 文字背景图遮罩

发布iPhone XR的时候 各种心动 去官网看了一遍又一遍。闲着无聊发现 里面的介绍很用大篇幅的有背景文字来介绍。Like this:看着挺酷炫的还不错 就看了下实现方式。还挺简单的。

Vue 中多个元素、组件的过渡,及列表过渡

多元素之间如何实现过渡动画效果呢?这么写行不行呢?肯定是不行的,因为 Vue 在两个元素进行切换的时候,会尽量复用dom,就是因为这个原因,导致现在动画效果不会出现。如果不让 Vue 复用dom的话,应该怎么做呢?只需要给这两个div不同的key值就行了

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!