検索
ホームページウェブフロントエンドCSSチュートリアルCSS 100vh に依存すべきではない理由について話しましょう。

CSS 100vh に依存してはいけない理由は何ですか?その理由については次の記事で詳しく説明していますので、お役に立てれば幸いです。

CSS 100vh に依存すべきではない理由について話しましょう。

テキストとボタンがある場合、テキストを上に貼り付け、ボタンを下に貼り付けます。 CSS Flexを使えば簡単にできそうです。 [推奨学習: css ビデオ チュートリアル ]

// HTML
<div>
  <p>Lorem ipsum dolor sit amet...</p>
  <button>Sign Up</button>
</div>

// CSS
.layout {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: 100vh;
}

実機での効果の確認:

CSS 100vh に依存すべきではない理由について話しましょう。

Cool! Git add, git commit 、 git Push、そうそう!

これの何が問題なのでしょうか?

もちろん、あります! この問題を確認するには、実際の携帯電話またはエミュレータでアプリを表示する必要があります。この記事で使用されている iPhone 13 (iOS 15.2) はテストされました。結果は次のとおりです:

CSS 100vh に依存すべきではない理由について話しましょう。

あれ、下のボタンはどこに行ったのでしょうか?

ちなみに、Android スマートフォンでは期待どおりに動作しません。

CSS 100vh に依存すべきではない理由について話しましょう。

モバイル デバイスで 100vh の問題が発生するのはなぜですか?

この問題について調査を行ったところ、原因が判明しました。簡単に言うと、ブラウザのツールバーの高さは考慮されていないということです。この問題が発生する理由をさらに詳しく知りたい場合は、この Stack Overflow の投稿が役立ちます。

モバイルデバイスでの 100vh の問題を解決するにはどうすればよいですか?

最初の提案は、vh の使用をできるだけ少なくすることです。たとえば、上記のコードでは、スティッキー ボタンを使用して、vh 単位の使用を避けることができます。

// HTML
<div>
  <p>Lorem ipsum dolor sit amet...</p>
  <button>Sign Up</button>
</div>

// CSS
.layout {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: 100vh;
}
.layout button {
  position: sticky;
  bottom: 0;
}

効果:

横向きモードでもうまく動作します:

正直に言うと結果は良好ですが、sticky 要素を使用した 100vh 問題を常に解決できるとは限りません。

CSS のみを使用してモバイルでの 100VH の問題を解決する

vh を使用する目的は、単純にビューポートの高さに等しいセクションを作成することです。これは、たとえばランディング ページを作成する場合に一般的です。このような場合、position Sticky は役に立ちません。ここでは fill-available プロパティを使用します。使い方は簡単です。接頭辞とフォールバック値を使用することを忘れないでください。

.layout {
  min-height: 100vh;            /* fall-back */
  min-height: -moz-available;
  min-height: -webkit-fill-available;
  min-height: fill-available;
}

効果:

そして、デバイスを回転させると、高さも更新されます。すばらしい!

#fill-available を使用して 100vh の問題を解決するのは確かに簡単ですが、この解決策を調査中にいくつかの問題が発生しました。

1. HTML タイプ宣言の問題

ページに

宣言があり、fill-available になります。 Chromeブラウザでは正しく動作しません。

CSS 100vh に依存すべきではない理由について話しましょう。

は Android ブラウザでも動作しません:

CSS 100vh に依存すべきではない理由について話しましょう。

したがって、この問題を解決するには、次のコマンドを削除する必要があります。ページから

doctype 宣言を削除します。

2. Safari での垂直パディングの問題

min-height (または height) で fill-available です要素 (下部と上部) に垂直の padding を使用すると、Safari で高さが正しくなくなるという問題が発生します。

CSS 100vh に依存すべきではない理由について話しましょう。

これを修正するには、コンテンツを別の

div 要素内にラップするだけで完了です:

// HTML
<div>
  <div>
    ...
  </div>
</div>

// CSS
.screen {
  background-color: mediumpurple;
  min-height: 100vh;
  min-height: -moz-available;
  min-height: -webkit-fill-available;
  min-height: fill-available;
}
.content {
  color: #fff;
  display: flex;
  flex-direction: column;
  justify-content: center;
  height: 100%;
  padding: 30px;
}
3. fill- available は

calc()

では使用できません。注意すべき点は、

fill-available 属性 calc()## では使用できないことです。 #。したがって、次の CSS ルールは有効になりません: <pre class="brush:php;toolbar:false">min-height: calc(-webkit-fill-available / 2);</pre> <p>例如,如果需要在元素上有一半的可用高度,必须使用JavaScript。</p> <p><strong>使用JavaScript修复移动设备上的100vh问题</strong></p> <p>可以使用 window 的 <code>innerHeight 属性,将元素 height (或minHeight)设置为window.innerHeight,如下所示:

nbsp;html>


  <style>
    ...
  </style>


<div>
  <h1 id="Hello-World">Hello World!</h1>
  <h2 id="The-height-of-this-area-is-equal-to">The height of this area is equal to...</h2>
</div>
...
<script>
  (function () {
    const el = document.getElementById(&#39;intro&#39;);
    el.style.minHeight = window.innerHeight + &#39;px&#39;;
  })();
</script>

效果:

接着,再介绍一种花销的方式。 一些开发者喜欢根据窗口的内部高度定义一个CSS变量,并使用该变量来设计他们所需的元素。代码如下:

// 以像素为单位计算1vh值
// 基于窗口的内部高度
var vh = window.innerHeight * 0.01;

//  将CSS变量设置为根元素
// 相当于1vh
document.documentElement.style.setProperty('--vh', vh + 'px');

在 CSS 中:

min-height: calc(var(--vh) * 100);

最后一件事是当窗口被调整大小或设备方向改变时,重新计算这个值:

function calculateVh() {
  var vh = window.innerHeight * 0.01;
  document.documentElement.style.setProperty('--vh', vh + 'px');
}

// 初始计算
calculateVh();

// 调整大小时重新计算
window.addEventListener('resize', calculateVh);

// 在设备方向改变时重新计算
window.addEventListener('orientationchange', calculateVh);

在我看来,你应该先用CSS的解决方案。

(学习视频分享:css视频教程web前端

以上がCSS 100vh に依存すべきではない理由について話しましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はsegmentfaultで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
CSSグリッドとは何ですか?CSSグリッドとは何ですか?Apr 30, 2025 pm 03:21 PM

CSSグリッドは、複雑で応答性の高いWebレイアウトを作成するための強力なツールです。設計を簡素化し、アクセシビリティを向上させ、古い方法よりも多くの制御を提供します。

CSS Flexboxとは何ですか?CSS Flexboxとは何ですか?Apr 30, 2025 pm 03:20 PM

記事では、レスポンシブデザインにおけるスペースの効率的なアラインメントと分布のためのレイアウト方法であるCSS FlexBoxについて説明します。 FlexBoxの使用量を説明し、CSSグリッドと比較し、ブラウザのサポートを詳細に説明します。

CSSを使用してWebサイトを応答するにはどうすればよいですか?CSSを使用してWebサイトを応答するにはどうすればよいですか?Apr 30, 2025 pm 03:19 PM

この記事では、ビューポートメタタグ、柔軟なグリッド、流体メディア、メディアクエリ、相対ユニットなど、CSSを使用してレスポンシブWebサイトを作成するための手法について説明します。また、CSSグリッドとフレックスボックスを使用してカバーし、CSSフレームワークを推奨しています

CSSボックスサイズのプロパティは何をしますか?CSSボックスサイズのプロパティは何をしますか?Apr 30, 2025 pm 03:18 PM

この記事では、要素の寸法の計算方法を制御するCSSボックスサイズのプロパティについて説明します。コンテンツボックス、ボーダーボックス、パディングボックスなどの値と、レイアウト設計とフォームアライメントへの影響について説明します。

CSSを使用してアニメーション化するにはどうすればよいですか?CSSを使用してアニメーション化するにはどうすればよいですか?Apr 30, 2025 pm 03:17 PM

記事では、CSS、キープロパティ、およびJavaScriptとの組み合わせを使用してアニメーションの作成について説明します。主な問題は、ブラウザの互換性です。

CSSを使用してプロジェクトに3D変換を追加できますか?CSSを使用してプロジェクトに3D変換を追加できますか?Apr 30, 2025 pm 03:16 PM

記事では、3D変換、主要なプロパティ、ブラウザの互換性、およびWebプロジェクトのパフォーマンスに関する考慮事項にCSSを使用して説明します。

CSSに勾配を追加するにはどうすればよいですか?CSSに勾配を追加するにはどうすればよいですか?Apr 30, 2025 pm 03:15 PM

この記事では、CSSグラデーション(線形、放射状、繰り返し)を使用して、ウェブサイトのビジュアルを強化し、深さ、フォーカス、および現代の美学を追加します。

CSSの擬似要素とは何ですか?CSSの擬似要素とは何ですか?Apr 30, 2025 pm 03:14 PM

記事では、CSSの擬似要素、HTMLスタイリングの強化における使用、および擬似クラスとの違いについて説明します。実用的な例を提供します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境