参考までに、Vue3でナビゲーションバーコンポーネントをカプセル化し、スクロールバーのスクロールに合わせて天井効果を実現します。 ナビゲーション バー コンポーネントの効果図: スクロールバーをスクロールした後の天井効果の模式図: 特定のコード表示: <テンプレート> <ヘッダークラス="アプリヘッダー"> <div class="コンテナ"> <!-- ヘッダーナビゲーション領域 --> <ヘッダーナビゲーション共通 /> <div class="検索"> <i class="iconfont icon-search"></i> <input type="text" placeholder="検索" /> </div> <div class="カート"> <a href="#" class="curr"> <i class="iconfont icon-cart"></i> 2 </a> </div> </div> </ヘッダー> </テンプレート> <スクリプト> '@/components/header-nav-common.vue' から HeaderNavCommon をインポートします。 エクスポートデフォルト{ 名前: 'AppHeader', コンポーネント: ヘッダーナビゲーション共通 } } </スクリプト> <style スコープ lang="less"> .app-header { 背景: #fff; 。容器 { ディスプレイ: フレックス; アイテムの位置を中央揃えにします。 } .navs{ 幅: 820ピクセル; ディスプレイ: フレックス; コンテンツの両端揃え: スペースを空ける; 左パディング: 40px; li { 右マージン: 40px; 幅: 38px; テキスト配置: 中央; { 表示: インラインブロック; フォントサイズ: 16px; 行の高さ: 32px; 高さ: 32px; } &:ホバー{ { 色: @xtxColor; 下部境界線: 1px 実線 @xtxColor; } } } } 。検索 { 幅: 170ピクセル; 高さ: 32px; 位置: 相対的; 下境界線: 1px 実線 #e7e7e7; 行の高さ: 32px; .アイコン検索{ フォントサイズ: 18px; 左マージン: 5px; } 入力{ 幅: 140ピクセル; 左パディング: 5px; 色: #666; } } .カート{ 幅: 50px; .curr { 高さ: 32px; 行の高さ: 32px; テキスト配置: 中央; 位置: 相対的; 表示: ブロック; .icon-cart { フォントサイズ: 22px; } えむ { フォントスタイル: 通常; 位置: 絶対; 右: 0; 上: 0; パディング: 1px 6px; 行の高さ: 1; 背景: @helpColor; 色: #fff; フォントサイズ: 12px; 境界線の半径: 10px; フォントファミリ: Arial; } } } } </スタイル> 中央のメニュー部門は、2つのコンポーネント(HeaderNavCommonコンポーネント)の再利用を実現するために、別のコンポーネントにカプセル化されています。 <テンプレート> <ul class="app-header-nav"> <li class="home"><RouterLink to="/">ホーム</RouterLink></li> <li><a href="#" >おいしい食べ物</a></li> <li><a href="#" >キッチン</a></li> <li><a href="#" >アート</a></li> <li><a href="#" >電化製品</a></li> <li><a href="#" >ホーム</a></li> <li><a href="#" >ケア</a></li> <li><a href="#" >妊娠と乳児</a></li> <li><a href="#" >衣類</a></li> <li><a href="#" >食料品</a></li> </ul> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前: 'AppHeaderNav' } </スクリプト> <スタイル スコープ lang='less'> .app-header-nav { 幅: 820ピクセル; ディスプレイ: フレックス; 左パディング: 40px; 位置: 相対的; zインデックス: 998; li { 右マージン: 40px; 幅: 38px; テキスト配置: 中央; { フォントサイズ: 16px; 行の高さ: 32px; 高さ: 32px; 表示: インラインブロック; } &:ホバー{ { 色: @xtxColor; 下部境界線: 1px 実線 @xtxColor; } } } } </スタイル> 天井効果をカプセル化するコンポーネント <テンプレート> <div class="app-header-sticky" :class="{ show: top >= 78 }"> <div class="コンテナ" v-if="トップ >= 78"> <!-- 中間 --> <ヘッダーナビゲーション共通 /> <!-- 右ボタン --> <div class="right"> <RouterLink to="/">ブランド</RouterLink> <RouterLink to="/">トピック</RouterLink> </div> </div> </div> </テンプレート> <スクリプト> '@/components/header-nav-common.vue' から HeaderNavCommon をインポートします。 // 'vue' から { ref } をインポートします '@vueuse/core' から { useWindowScroll } をインポートします。 エクスポートデフォルト{ 名前: 'AppHeaderSticky', コンポーネント: { HeaderNavCommon }, 設定() { // ページスクロール距離 // const top = ref(0) // window.onscroll = () => { // top.value = document.documentElement.scrollTop // } // サードパーティのパッケージを使用したページスクロール const { y: top } = useWindowScroll() 戻る {トップ} } } </スクリプト> <style スコープ lang="less"> .app-header-sticky { 幅: 100%; 高さ: 80px; 位置: 固定; 左: 0; 上: 0; zインデックス: 999; 背景色: #fff; 下境界線: 1px 実線 #e4e4e4; // これがキースタイルです!!! // デフォルトでは、完全に上に移動します。transform: translateY(-100%); // 完全に透明 opacity: 0; //表示されるクラス名&.show { 遷移: すべて 0.3 秒線形。 変換: なし; 不透明度: 1; } 。容器 { ディスプレイ: フレックス; アイテムの位置を中央揃えにします。 } 。右 { 幅: 220ピクセル; ディスプレイ: フレックス; テキスト配置: 中央; 左パディング: 40px; 左境界線: 2px 実線 @xtxColor; { 幅: 38px; 右マージン: 40px; フォントサイズ: 16px; 行の高さ: 1; &:ホバー{ 色: @xtxColor; } } } } </スタイル> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Dockerコンテナの個別展開のためのLNMPの実装
>>: MySQL ルートパスワードエラー番号 1045 の解決方法
Web Skills第5号では、CSSでダークモードやハイライトモードを実装するための技術的なソリュ...
<br />幅と高さが適応するオリジナルの 9 グリッド レイアウトをベースに、ネットワ...
序文以前、MySQL 5.6 をインストールしました。3 か月後、開発者から MySQL で JSO...
1. 縦型テーブルと横型テーブル垂直テーブル: テーブル内のフィールドとフィールド値はキーと値の形式...
MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...
スワップ メモリとは、主に物理メモリが不足している場合に、システムがハード ディスク領域の一部をサー...
目次序文状態DockerをインストールするRedisのマスターノードとスレーブノードを構成する序文以...
この記事では、参考までにMySQL 5.7.24圧縮パッケージのインストールチュートリアルを紹介しま...
1 hupからイメージを取得する docker プル nginx 2 マウントするディレクトリを作成...
目次使用されるPygame関数スクリーンの作成ヘビの作成ヘビを動かすゲームオーバーの処理食事を増やす...
マイクロソフトIIS (Internet Information Server) は、Microso...
目次1. ポーテナーの紹介2. Portainer アーキテクチャの概要3. Portainerのイ...
——「MySQL in Simple Terms (第 2 版)」からのメモ数値型整数型バイト最小最...
MySQLへのリモートアクセスを有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...
序文lvm (論理ボリューム マネージャー) 論理ボリューム管理は、Linux システムのニーズを満...