ホバー生成の境界線によって生じる要素の移動を解決する方法

ホバー生成の境界線によって生じる要素の移動を解決する方法

序文

hover疑似クラスが要素に境界線を追加すると、要素内のコンテンツがずれることがあります。box box-sizing: border-boxを設定し、要素の幅と高さを指定しても、コンテンツは境界線によって圧迫されたままです。たとえば、次のような状況です。

<スタイル タイプ="text/css" メディア="screen">
    。テスト {
        高さ: 30vmin;
        幅: 30vmin;
        背景: 水色;
        ボックスのサイズ: 境界線ボックス;
    }
    .test:hover {
        境界線: 5px 黒一色;
    }
</スタイル>
<div class="test">
    これはdivです。
</div> 

理由は明らかです。要素のサイズは変更されていません(要素の幅と高さが設定されていないか、 box-sizing: border-boxが使用されている場合、要素のサイズは変更されます)。box box-sizing: border-box効果的ですが、突然追加された境界線により、要素内のコンテンツが押し出されています。ボックスモデルは、外側から内側へのmarginborderpadding 、およびcontentであるため、新しく追加されたborderにより、必然的にcontentが小さく圧縮され、 contentの境界座標も変更され、視覚的なコンテンツが移動します。したがって、問題の解決策は、境界線の追加がcontentの位置に影響を与えないようにすることです。

要素に境界線を追加する

境界線が突然現れると、元のレイアウトが変わり、コンテンツが移動します。この場合、境界線を以前のレイアウトにそのまま残しておくことができます。

。テスト {
    高さ: 30vmin;
    幅: 30vmin;
    背景: 水色;
    境界線: 5px 透明実線;
    ボックスのサイズ: 境界線ボックス;
}
.test:hover {
    境界線: 5px 黒一色;
}

ボックスシャドウの使用

ボックス モデルのスペースを占有しないbox-shadowまたはoutlineを使用することもできます。

.test:hover {
    /* 境界線: 5px 黒一色; */
    ボックスシャドウ: 0 0 0 5px 黒;
    アウトライン: 5px 黒
}

パディングを使用する

paddingサイズを変更することで、 border用のスペースを確保できます。

。テスト {
    高さ: 30vmin;
    幅: 30vmin;
    背景: 水色;
    ボックスのサイズ: 境界線ボックス;
    パディング: 5px;
}
.test:hover {
    パディング: 0;
    境界線: 5px 黒一色;
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  ブートストラップ学習体験のまとめ - CSS スタイル デザイン共有

>>:  Apache Tomcat と IDEA エディターの統合に関する詳細なチュートリアル

推薦する

ウェブページのテーブルの境界線を設定する方法

<br />前回は、Web テーブルにセルの線を設定する方法を学びました。今日は、Web...

Tik Tok サブスクリプション ボタンのアニメーション効果を実現する CSS

少し前にTik Tokを見ていて、フォローするときのボタンアニメーションがとても美しいと思ったのと、...

HTMLのテーブルタグの基本学習チュートリアル

表ラベルの構成HTML 内の表は <table> タグで構成されており、ブラウザはタグを...

Vueパンくずコンポーネントのカプセル化方法

Vueはパンくずコンポーネントをカプセル化して参照します。具体的な内容は次のとおりです。効果を達成す...

3Dカルーセル効果を実現するjs

この記事では、3Dカルーセル効果をjsで実装するための具体的なコードを参考までに共有します。具体的な...

独自の FTP および SFTP サーバーを構築するプロセスの紹介

FTP と SFTP はファイル転送プロトコルとして広く使用されています。関連する機能を開発するには...

grpc のリバース プロキシとして nginx を使用する場合の落とし穴の概要

背景ご存知のとおり、nginx は高性能な Web サーバーであり、負荷分散やリバース プロキシによ...

Echarts 基本入門: 棒グラフと折れ線グラフの一般的な構成

1eChartsの基本手順4つのステップ1 DOMコンテナを見つける2 初期化3 設定オプション4 ...

複数のプロジェクトをデプロイする Docker nginx の例

前提条件1. ローカルコンピュータとサーバーにDockerがインストールされています。ダウンロード方...

JavaScript でオブジェクトのプロパティを削除する方法

1. 削除delete は、オブジェクトのプロパティを残さずに削除する唯一の方法ですが、その「代替」...

CentOS 7 で RPM を使用して mysql5.7.13 をインストールする

0. 環境この記事のオペレーティング システム: CentOS 7.2.1511 x86_64 My...

MySQLテーブルの自動インクリメント列の初期値をリセットする方法

MySQLテーブルの自動インクリメント列の初期値をリセットする方法1. 問題の説明MySQL データ...

本番環境でのMySQLパラメータsql_safe_updatesの使用に関する詳細な説明

序文アプリケーションのバグや DBA の誤操作が発生した場合、テーブル全体が更新される可能性がありま...

JavaScript を使用して二分探索木を実装する方法

コンピュータ サイエンスで最も一般的に使用され、議論されているデータ構造の 1 つは、二分探索木です...

JSベースの手持ち連射機能+テキスト揺れ特殊効果コードの簡単実装

少し前にTikTokで揺れる連打が流行っていたので真似してみることにしました。さっそく効果をみてみま...