uni-app カスタム ナビゲーション バー - 適応の問題を解決する

序文

  • 実際の開発では、このコンポーネントが実現できるかどうかではなく、要件、試作図、機能的なカラーマッチングに応じて開発を行います。

  • ホーム ページにジャンプする必要がない場合、タイトルが左に移動し、グラデーション カラー、入力ボックス、その他のレイアウトが表示されます。ネイティブ ナビゲーション バーはニーズを満たしていません。

  • このとき、ナビゲーション バーをカスタマイズする必要があります。uni-app は、携帯電話のシステム バーの高さとカプセル ボタンの高さを示す CSS 変数を提供します。ただし、これを書き込むと、ページのレイアウトが変わります。これは、携帯電話の解像度が異なるとスケーリングが異なるため、システム バーとカプセル ボタンに違いが生じるためです。

  • 別の角度から考えてみると、なぜ WeChat 自体によってカプセル化されたコードがこれらの問題に適応できるのかというと、高さを生きたまま書き込むからです。初めてページに入るときのみ API を呼び出す必要があります。電話システムバー、カプセルボタンを入手すると、これらの問題を解決できます。

コード実装 - 直接コピー可能

<template>
    <view class="content">
        <!-- 背景导航栏 -->
        <view class="background-plate" :style="{ height:titleheight + titletop + 10 + 'px'}">
        </view>
        <!-- 标题 -->
        <view class="status_bar" :style="{ height:titleheight + 'px',top: titletop + 'px'}">
            <text>自定义导航栏</text>
        </view>
        <!-- 内容 -->
        <view class="content-statistics" :style="{ paddingTop:titleheight + titletop + 10 + 'px'}">
​
        </view>
    </view>
</template>
​
<script>
    export default {
        data() {
            return {
                // 胶囊按钮高度
                titleheight: 0,
                // 胶囊到顶部距离
                titletop: 0,
            }
        },
        onLoad() {
            // 或许胶囊按钮各种参数
            this.getHeight()
        },
​
        methods: {
            getHeight() {
                let res = uni.getMenuButtonBoundingClientRect();
                this.titletop = res.top;
                this.titleheight = res.height
                console.log(res);
                console.log("titletop的值", this.titletop);
                console.log("titleheight的值", this.titleheight);
                console.log("一半的titleheight的值", this.titleheight / 2);
            },
​
        }
    }
</script>
​
<style lang="scss">
    .content {
        .background-plate {
            width: 100vw;
            background: skyblue;
            position: fixed;
            left: 0;
            z-index: 5;
        }
​
        .status_bar {
            width: 100vw;
            position: fixed;
            left: 0;
            line-height: 64rpx;
            padding-left: 32rpx;
            z-index: 10;
​
            text {
                font-size: 36rpx;
                font-family: PingFang SC-Heavy, PingFang SC;
                font-weight: 800;
                color: #FFFFFF;
            }
        }
    }
</style>

要約:

このプロセスを経て、ユニアプリのカスタム ナビゲーション バー - 適応問題の解決について最初に深い印象を受けたと思いますが、実際の開発では遭遇する状況は明らかに異なるため、それを理解する必要があります。原理は常に同じ。さあ、労働者を殴ってください!

欠点があればご指摘ください、ありがとうございます - Feng Guo Wuhen

おすすめ

転載: blog.csdn.net/weixin_53579656/article/details/132768253