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

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

序文

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 エディターの統合に関する詳細なチュートリアル

推薦する

VueはElement el-uploadコンポーネントを使用してピットに足を踏み入れます

目次1. 基本的な使い方2. 画像量の制御3. 画像形式の制限/複数の画像を選択可能補足: vueプ...

Tomcat コアコンポーネントとアプリケーションアーキテクチャの詳細な説明

目次Web コンテナとは何ですか? HTTP の性質HTTP リクエスト応答の例クッキーとセッション...

Vue+express+Socketでチャット機能を実現

この記事では、チャット機能を実現するためのVue+express+Socketの具体的なコードを参考...

MySQLの基本の共通機能

目次1. 共通機能分類1.1 単一行関数: 1.2 グループ化機能: 2. 単一行関数3. 数学関数...

プライベートレジストリ内の画像を照会または取得する方法

Dockerはプライベートレジストリ内のイメージを照会または取得するために、 docker 検索 1...

Docker コンテナのネットワーク障害に対する 6 つの解決策

Docker コンテナのネットワーク障害に対する 6 つの解決策注: 以下の方法は、コンテナ内のパブ...

webkit-box-reflect を巧みに使用してさまざまな動的効果を実現する (要約)

かなり前の記事で、 -webkit-box-reflectプロパティについて説明しました。リフレクシ...

Dockerに関するよくある質問

Docker はポートを IPv6 にのみマッピングし、IPv4 にはマッピングしません。 dock...

ネイティブ js でカスタム難易度のマインスイーパ ゲームを実装する

この記事の例では、マインスイーパゲームを実装するためのjsの具体的なコードを参考までに共有しています...

Nginx リバース プロキシから go-fastdfs へのケースの説明

背景go-fastdfs は、http プロトコルをサポートする分散ファイルシステムです。一般的なプ...

divの背景を透明に設定する方法の例

div の背景を透明にする一般的な方法は 2 つあります。 1. 不透明度属性を 0 ~ 1 の値に...

Vue は左右のスライド効果のサンプルコードを実装します

序文個人の実際の開発で使用した効果問題を、今後の開発やレビューに役立てるためにまとめています。他の人...

SecureCRT に基づくリモート Linux ホストへのファイルのアップロードとダウンロードのグラフィカルな手順

wget や curl ツールを使用して、Linux サーバーで大規模なネットワーク ファイルを直接...

MySQLコンテナ間のレプリケーション構成例の詳細な説明

背景先週、会社で MySQL レプリケーションのトレーニングを受けたので、今週末は学んだことを実践す...