如何在 ionic 4 中隐藏滚动条上的标题?

2023-12-12

我想知道如何通过向下滚动页面来隐藏 Ionic 4 中的标题,并在向上滚动时重新显示它。

我找到了许多关于如何做到这一点的解决方案,但结果都证明它们不起作用或已经过时了。

因此,我收集了我能找到的所有信息来提供这个答案。


谢谢这个视频我让它工作了。

首先打电话ionic g directive directives/hide-header。你当然可以替换directive/hide-header用您自己的路径和名称。

hide-header.directive.ts

import { Directive, HostListener, Input, OnInit, Renderer2 } from '@angular/core';
import { DomController } from '@ionic/angular';

@Directive({
    selector: '[appHideHeader]'
})
export class HideHeaderDirective implements OnInit {

    @Input('header') header: any;

    private lastY = 0;

    constructor(
        private renderer: Renderer2,
        private domCtrl: DomController
    ) { }

    ngOnInit(): void {
        this.header = this.header.el;
        this.domCtrl.write(() => {
            this.renderer.setStyle(this.header, 'transition', 'margin-top 700ms');
        });
    }

    @HostListener('ionScroll', ['$event']) onContentScroll($event: any) {
        if ($event.detail.scrollTop > this.lastY) {
            this.domCtrl.write(() => {
                this.renderer.setStyle(this.header, 'margin-top', `-${ this.header.clientHeight }px`);
            });
        } else {
            this.domCtrl.write(() => {
                this.renderer.setStyle(this.header, 'margin-top', '0');
            });
        }

        this.lastY = $event.detail.scrollTop;
    }

}

之后,在您的模板中:

<ion-header #header>
    <ion-toolbar><ion-title>Test</ion-title></ion-toolbar>
</ion-header>
<ion-content scrollEvents="true" appHideHeader [header]="header">
</ion-content>

照顾好scrollEvents, appHideHeader[header]属性!最后一个将 header 元素作为参数,在本例中#header.


大部分代码与视频中所示的相同。我改变了host- 财产来自@Directive并使用了最新的主机监听器.

如果要在多个指令中使用该指令,则需要创建一个共享模块.

为此,请使用以下命令创建模块ng g module shared。之后,添加HideHeaderDirective to the declarationsexports array.

shared.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { HideHeaderDirective } from './directives/hide-header.directive';


@NgModule({
    declarations: [HideHeaderDirective],
    exports: [HideHeaderDirective],
    imports: [
        CommonModule
    ]
})
export class SharedModule {}

现在将共享模块添加到要在其中使用该指令的所有模块。

注意:您不能导入该指令app.module.ts并在子模块中使用它!您必须在要使用该指令的每个直接模块中导入共享模块。

我当前的版本node, npm and ionic:

versions

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ionic 4 中隐藏滚动条上的标题? 的相关文章

随机推荐

  • BlackBerry ObjectChoiceField 不接受带空格的国家/地区名称

    我正在黑莓应用程序中开发一个注册页面 我将输入的所有字段发送到本地服务器 国家 地区是表单字段之一 位于 ObjectChoiceField 中 每当用户选择一个具有多个单词的国家 地区 例如 美利坚合众国 时 就会显示注册失败 当用户选择
  • v-model 并选择多个

    我认为有以下代码 div class item editor line div
  • 如何使用最新的 MinGW 将 qmake 设置为 C++14?

    I know there are many 重复项 这是我的测试版 CONFIG c 14 SOURCES main cpp 和我的 main cpp int main 根据许多重复 这应该给我 C 14 但是 当我使用构建项目时Qt 创建
  • iOS 6.0 限制导航控制器内的自动旋转?

    我还应该做什么 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation toInterfaceOrientation return toInterfaceOrie
  • 如何执行ajax输出脚本

    我收到 ajax 输出成功数据 其中数据包含一些 html 文本和脚本 但脚本没有执行 我该如何执行脚本 假设 Ajax 响应 obj 是 div something div 上面的代码是我的 Ajax 响应 div 正在渲染 但警报不起作
  • 按字典键的整数对字典进行排序

    假设我有一本这样的字典 thedict 1 the 2 2 3 five 10 orange 我想按键对这本字典进行排序 如果我执行以下操作 for key value in sorted thedict iteritems print k
  • 在堆积条形图上按列显示百分比

    我正在尝试绘制一个堆积条形图 显示列中每个组的相对百分比 这是我的问题的说明 使用默认的 mpg 数据集 mpg gt ggplot aes x manufacturer group class geom bar aes fill clas
  • 如何在android中找到两条折线之间的交点?

    如何在android中找到两条折线之间的交点 我尝试了以下所有选项 PolyUtil isLocationOnPath RectF rectPathBounds new RectF path computeBounds rectPathBo
  • 如何更改 Bootstrap 列的顺序?

    如何更改 Bootstrap 4 的 Flexbox 网格系统的列顺序 我有代码 div class contents div class row row 1 div class col sm 6 Content Left div div
  • 如何将图像设置为圆形

    我怎样才能将图像设置在一个圆圈中 有没有更好的方法来设置带有圆圈框的图像 特别是 Windows 10 登录屏幕上的图像框架 Circle cir2 new Circle 250 200 80 cir2 setStroke Color SE
  • 这些对象的引用是在栈上还是在堆上?

    如果有人能告诉我我是否理解得很好 我将不胜感激 class X A a1 new A reference on the stack object value on the heap a1 VarA 5 on the stack value
  • 自定义形状的边框

    在这里摆弄 我正在尝试设置一些不规则形状的边框颜色 箭头ish 我做到了 问题是 为了实现这些形状 我必须已经操纵边框 所以我不能这样做border color red 我想将每个形状的边框颜色设置为2px HTML div class m
  • 未报告的异常UnknownHostException;必须被抓住或宣布被扔出

    我有下面给出的代码 但是 当我尝试编译代码时 出现以下错误 MyClient java 12 error unreported exception UnknownHostException must be caught or declare
  • 如何在java中从图像中获取光栅?

    我正在尝试将 gif 图像从 url 加载到 java util image Raster 中 以便我可以操作它 我能找到的加载和解压缩图像的唯一方法是 Toolkit getImage 它返回 java awt Image 我需要将其转换
  • 如何在您的网站中使用长轮询或 Ajax 推送

    我想知道如何使用ajax推送 我从各种网络文章中了解到 Ajax推送可以通过使用一些程序来获得 例如COMET APE AJAX PUSH ENGINE 等 但我想知道是否有更简单的使用方法以及使用什么语言实现ajax推送 因为在我看过的文
  • Ruby on Rails 中多对多的正确实现?

    新手提问 请注意 我想在 Rails 中实现基本的多对多关系 并且我试图找出哪种方法被认为是其中最 Rails 方式 在传统的非 ActiveRecord 数据库中 我刚刚创建了两个表和一个联结表 并编写了一堆逻辑 以确保在对其中任何一个表
  • PHP:根据季节设置图像?

    大家好 你对此有何看法 我想根据是冬季还是夏季在我的网站上设置一个标题图像 一个用于冬季 一个用于夏季 所以我想知道最简单的方法是什么 我想到使用 date n 并查询返回的值对于冬季或夏季月份是否为真 你会怎么办 谢谢你的提示 谷歌搜索并
  • 片段之间的通信

    我有默认的主从流程 该流程是在创建新项目时自动创建的 我的问题是 当我向详细信息侧添加按钮时 有没有办法通过按该按钮来更新我的列表面 换句话说 ItemDetailFragment 和 ItemListFragment 可以通信吗 是的 只
  • Android 中的加权热图

    我正在尝试为我的 Android 应用程序项目创建一个加权热图 我查看了谷歌文档 我不明白如何使用颜色数组和起点数组创建新的渐变 起始数组表示为 每种颜色的起点 以最大强度的百分比形式给出 这是什么意思 如何将颜色数组与起点数组关联起来 i
  • 如何在 ionic 4 中隐藏滚动条上的标题?

    我想知道如何通过向下滚动页面来隐藏 Ionic 4 中的标题 并在向上滚动时重新显示它 我找到了许多关于如何做到这一点的解决方案 但结果都证明它们不起作用或已经过时了 因此 我收集了我能找到的所有信息来提供这个答案 谢谢这个视频我让它工作了