React.js使用Nuka-Carousel插件時禁用越界效果(Edge Easing)

前段時間在項目中采用了Nuka-Carousel這個輪播圖/走馬燈插件來實現(xiàn)整屏上下滑的效果,但是在實際開發(fā)中遇到了越界效果始終存在的問題,這個效果在某些場景下會起到適得其反的效果。

哪個屬性控制越界效果?

Nuka-Carousel中,控制越界效果的是edgeEasing這個props屬性,有多種效果可供選擇,具體參考文檔

怎么找到解決方法?

遇到這個問題的第一時間,是發(fā)揮各大搜索引擎的作用,搜索Nuka-Carousel關鍵字相關,不過很可惜并沒有找到合適的答案。于是進入了Nuka-Carousel的github查看Issues,搜索關鍵字easing,順利找到有與我相同需求的人,Is there a way to disable an edge easing? #203

怎么解決的?

  1. 手動更改Nuka-Carousel包的文件,找到src/carousel.js,做如下修改
// 在大約65-75行之間找到edgeEasing: React.PropTypes.string,在下一行加入代碼:
edgeEasingEnabled: React.PropTypes.bool,

// 在大約100行左右找到edgeEasing: 'easeOutElastic',在下一行加入代碼:
edgeEasingEnabled: true,

// 在大約250行左右找到
//self.setState({
//  left: self.props.vertical ? 0 : self.getTargetLeft(self.touchObject.length * self.touchObject.direction),
//  top: self.props.vertical ? self.getTargetLeft(self.touchObject.length * self.touchObject.direction) : 0
//});
// 改成:
self.props.edgeEasingEnabled && self.setState({
  left: self.props.vertical ? 0 : self.getTargetLeft(self.touchObject.length * self.touchObject.direction),
  top: self.props.vertical ? self.getTargetLeft(self.touchObject.length * self.touchObject.direction) : 0
});

// 在大約320行左右找到
//self.setState({
//  left: self.props.vertical ? 0 : self.getTargetLeft(self.touchObject.length * self.touchObject.direction),
//  top: self.props.vertical ? self.getTargetLeft(self.touchObject.length * self.touchObject.direction) : 0
//});
// 改成:
self.props.edgeEasingEnabled && self.setState({
  left: self.props.vertical ? 0 : self.getTargetLeft(self.touchObject.length * self.touchObject.direction),
  top: self.props.vertical ? self.getTargetLeft(self.touchObject.length * self.touchObject.direction) : 0
});

同理,修改lib/carousel.js,與上述基本一致。

  1. 使用Nuka-Carousel組件時傳入edgeEasingEnabled = {false}屬性

注意事項:

做了如上修改之后,用git管理代碼,在別的電腦或其他人協(xié)作開發(fā),都可能無法同步到你對這個包的修改(因為node_modules文件夾通常不會被git同步),所以要做好文檔說明備注。在Nuka-Carousel官方對這個問題進行補充修復之前,只能通過這種方式來修改。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容