版本

  • angular 5.0
  • ngx-perfect-scrollbar ^5.3.5

为什么不用 ngx-perfect-scrollbar 最新的版本 v7 呢?

因为它报错啊!!! 每次init的时候,就报一个Object() is not a function。 根据GitHub上热心网友的建议,就downgrade了。

详见:https://github.com/zefoy/ngx-perfect-scrollbar/issues/189

安装

npm 安装没啥好说的

npm install --save ngx-perfect-scrollbar@^5.0.0

使用

1. 导入module

// app.module.ts
import { PerfectScrollbarModule, PerfectScrollbarConfigInterface, PERFECT_SCROLLBAR_CONFIG } from 'ngx-perfect-scrollbar'; const DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {
wheelPropagation: true
}; @NgModule({
bootstrap: [
AppComponent
],
declarations: [
...
],
imports: [
...,
PerfectScrollbarModule
],
exports: [
],
providers: [
{
provide: PERFECT_SCROLLBAR_CONFIG,
useValue: DEFAULT_PERFECT_SCROLLBAR_CONFIG
}
]
})
export class AppModule {}

Providing the global configuration is optional and when used you should only provide the configuration in your root module.

提供全局配置是可选的,但是如果你需要使用,那么只需要在应用的root module中配置。

2. 在模板中使用

API 提供了两种使用方式,一种是 Component 使用方式,一种是 Derective使用方式。我在项目中用的后者。


<ul *ngIf="nodeList.length" class="indented mTop scroll" [style.max-height.px]="treeContentHeight" [perfectScrollbar]="config">
<li class="no_line" *ngFor="let node of nodeList"></li>
</ul>
import { PerfectScrollbarConfigInterface, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar';

public config: PerfectScrollbarConfigInterface = {};
@ViewChild(PerfectScrollbarDirective) directiveRef?: PerfectScrollbarDirective;

3. 导入CSS

// styles.scss
@import '~perfect-scrollbar/css/perfect-scrollbar.css';

效果:

遇到的问题

上中下结构中,只让 content部分有滚动条,但是路由跳转后,滚动条的高度没有重新计算。

解决方案:

// home.component.html
<div class="container">
<div class="header">
<app-header></app-header>
</div>
<div class="content" [perfectScrollbar]="config">
<router-outlet></router-outlet>
</div>
<div class="footer">
<app-footer></app-footer>
</div>
</div>

在路由跳转后,需要调用update()更新scrollbar的size 和 position

import { Component, OnInit, ViewChild } from '@angular/core';
import { Router} from '@angular/router';
import { PerfectScrollbarConfigInterface, PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; @Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
public config: PerfectScrollbarConfigInterface = {};
@ViewChild(PerfectScrollbarDirective) directiveRef?: PerfectScrollbarDirective;
constructor(public _router: Router) { } ngOnInit() {
this._router.events.subscribe((event) => {
// update the scrollbar
this.directiveRef.update();
});
} }

Angular5 自定义scrollbar样式之 ngx-perfect-scollbar的更多相关文章

  1. Angular5 自定义scrollbar样式之 ngx-malihu-scrollbar

    简介 此插件是 Malihu jQuery Scrollbar 为了在 Angular2+ 环境下使用,封装的一个ts的版本.提供directive和service. 从安装量来看,它比不过 perf ...

  2. Android必知必会-自定义Scrollbar样式

    如果移动端访问不佳,请使用–>GitHub版 背景 设计师给的设计图完全依照 IOS 的标准来的,导致很多细节的控件都得自己重写,最近的设计图中有显示滚动条,Android 默认的滚动条样式(带 ...

  3. jQuery自定义滚动条样式插件mCustomScrollbar

    如果你构建一个很有特色和创意的网页,那么肯定希望定义网页中的滚动条样式,这方面的 jQuery 插件比较不错的,有两个:jScrollPane 和 mCustomScrollbar. 关于 jScro ...

  4. 自定义scrollbar

    Chrome ::-webkit-scrollbar 整体部分 ::-webkit-scrollbar-track 轨道 ::-webkit-scrollbar-track-piece 内层轨道 :: ...

  5. WPF 自定义滚动条样式

    先看一下效果: 先分析一下滚动条有哪儿几部分组成: 滚动条总共有五部分组成: 两端的箭头按钮,实际类型为RepeatButton Thumb 两端的空白,实际也是RepeatButton 最后就是Th ...

  6. scrollbar样式设置

    转载:https://segmentfault.com/a/1190000012800450?utm_source=tag-newest author:specialCoder 一 前言 在CSS 中 ...

  7. 自定义滚动条样式-transition无效

    问题 需求是自定义滚动条样式,然后2秒内无操作隐藏滚动条. 2s内隐藏比较麻烦,不能用css实现,只能监听容器的touch事件,然后给滚动条加个opacity: 0的class. .class::-w ...

  8. CSS3:scrollbar样式设置

    CSS3:scrollbar样式设置 1. 设置出现滚动条的方式 overflow:scroll --- x和y方向都会出现滚动条 或者 overflow-x:scroll --- 只有x方向出现滚动 ...

  9. Siteserver-stl:searchOutput(搜索结果)自定义显示样式

    stl:searchOutput 自定义显示样式 自定义搜索提交表单需要在<stl:searchOutput>中嵌入显示搜索结果的标签,必须包含的标签 有<stl:pageConte ...

随机推荐

  1. learning armbian steps(6) ----- armbian 源码分析(一)

    为了深入学习armbian,前面已经学习了如何手动构建arm ubuntu rootfs. 由于armbian官方的文档比较的匮乏,所以最终还是决定通过其编译的过程来深入地学习. 为了快速度深入地学习 ...

  2. Neo4j (1)创建节点

    节点模式的构成:(Variable:Lable1:Lable2{Key1:Value1,Key2,Value2}),实际上,每个节点都有一个整数ID,在创建新的节点时,Neo4j自动为节点设置ID值, ...

  3. 科大讯飞语音转文字,ffmpeg将wav转成pcm二进制音频文件

    百度和讯飞和其他厂都提供了语音识别的接口,这里使用讯飞的识别将本地手机录的音频文件转成文字 以下注意事项: 1.X_Param 参数开始的时候带了空格导致验证不过,原因是讯飞将字符串做了repelce ...

  4. 宝塔apache设置泛目录的反向代理/莲花泛目录

    反向解析目标站-泛目录站一般用ip或者ip:端口来搭建,这样可以节省一个域名,当然也可以用域名,看个人爱好.主站和泛站可以同一个服务器和可以不同服务器,看个人实际情况.先来看宝塔的反向代理的步骤:点击 ...

  5. thinkphp6下载安装与配置图文详细讲解教程(composer下载安装)

    thinkphp6发布也有一段时间了,相对来说比较稳定,是时候学习一下thinkphp6框架,提前学习,到正式发布的时候,可以直接拿来做正式的项目,先人一步.thinkPHP6.0在5.1的基础上对底 ...

  6. kubeadm进行K8S集群部署

    环境说明: 节点类型     主机名  管理ip master          master   192.168.2.10 nodes            node1    192.168.2.1 ...

  7. HDFS 特殊权限位

    HDFS 特殊权限位 标签(空格分隔): Hadoop 之前对HDFS更或者说是对Linux中文件的权限没有进行一个完整的学习,只是知道有所有者.所属组和其它权限,具体到某个人的权限有读(r).写(w ...

  8. shell 里的正则

    #!/bin/bash variable="This is a fine mess." echo "$variable" # Regex matching wi ...

  9. Laravel 配置

    首页 问答社区 中文文档 API Composer Github 配置说明 框架下载好了,但是想要很好的使用,可能我们还有一些东西需要知道,这就是配置.和项目有关的配置是在 app/config 文件 ...

  10. 微信支付宝xposed个人收款免签支付源码

    源码介绍: 个人免签支付是指使用自己的微信支付宝账号作为个人网站的收款账号,网站订单支付成功后,网站能实时收到成功回调信息.        系统基于xposed逆向微信.支付宝.云闪付来实现个人收款免 ...