参考までに、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 の解決方法
コードをコピーコードは次のとおりです。高さ:自動 !重要;高さ:550px;最小高さ:550px; ...
MySql は、私たちが頻繁に使用するデータ ソースです。開発者が練習、小規模なプライベート ゲーム...
テーブルの欠点1. テーブルは他の HTML タグよりも多くのバイトを占有します。 (ダウンロード時...
目次1 Dockerをインストールする2 国内ミラーソースの設定3 中国語環境基本版Centos7イ...
CentOS6.9+Mysql5.7.18 ソースコードのインストールでは、以下の操作を root ...
絶対位置決め方式: (1)親要素を相対配置に設定します。親要素の高さを指定しない場合は、左の子要素の...
この記事では、Reactリストバーとショッピングカートコンポーネントの具体的なコードを参考までに紹介...
昨夜、ブラウザのレンダリングプロセスに関するエッセイを書きましたが、小さなコードで説明しただけでした...
データが変更されても、DOM ビューはすぐには更新されません。変更直後にノードまたはその値を取得しよ...
1. Docker環境を構築する1. Dockerfileを作成する Centos:latest か...
この記事では、LinuxにバイナリモードでMySQLをインストールする具体的な手順を参考までに紹介し...
序文今日は、聖杯レイアウトとダブルウィングレイアウト、そしてそれらの違いについてお話しします。この2...
目次概要1. 範囲エラー2. 参照エラー3. 構文エラー4. タイプエラー5. URIエラー6. 評...
この記事の例では、参考のためにvueカスタムオプションタイムカレンダーコンポーネントの具体的なコード...
目次インデックスの適切な使用1. 通常のインデックスのデメリット2. 主キーインデックスの落とし穴3...