ホームページ > ウェブフロントエンド > CSSチュートリアル > `100vw` が予期しない水平オーバーフローを引き起こすことがあるのはなぜですか?

`100vw` が予期しない水平オーバーフローを引き起こすことがあるのはなぜですか?

Barbara Streisand
リリース: 2024-12-07 10:08:12
オリジナル
787 人が閲覧しました

Why Does `100vw` Sometimes Cause Unexpected Horizontal Overflow?

100vw により予期しない水平オーバーフローが発生する

要素に 100vw の幅を割り当てると、要素がビューポートの幅全体を占有することが期待されるかもしれません。オーバーフローの原因となります。ただし、特定の状況下では、100vw を使用しているにもかかわらず、水平スクロールバーが表示されることがあります。

次の例を考えてみましょう:

html, body {
  margin: 0;
  padding: 0;
}
.box {
  width: 100vw;
  height: 100vh;
}

<div class="box">Screen 1</div>
ログイン後にコピー

このシナリオでは、.box 要素がスクロールバーなしで画面いっぱいに表示されます。ただし、最初の .box 要素の下に 2 番目の .box 要素を追加すると、

<div class="box">Screen 1</div>
<div class="box">Screen 2</div>
ログイン後にコピー

垂直スクロールバー (予想される) だけでなく、わずかな水平スクロールバーも表示されることがわかります。

この動作の理由は、ブラウザによる 100vw の解釈方法にあります。これは「ビューポートの幅の 100%」を意味しますが、スクロールバーの厚さを考慮した後に残るビューポートの表示部分を表します。この場合、垂直スクロールバーの存在により、使用可能なビューポートの幅が減少し、2 番目の .box 要素が水平方向にオーバーフローする可能性があります。

この問題を解決するには、max-width: 100% を使用できます。 .box 要素:

.box {
  width: 100vw;
  height: 100vh;
  max-width: 100%;
}
ログイン後にコピー

これにより、要素が実際のビューポートの幅を超えないようになり、潜在的な水平オーバーフローが効果的に防止されます。

以上が`100vw` が予期しない水平オーバーフローを引き起こすことがあるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート