フィルターと固定間の競合の原因と解決策の詳細な説明

フィルターと固定間の競合の原因と解決策の詳細な説明

問題の説明

body内でfilter属性を使用すると、 fixed要素の位置が不正確になります。つまり、 viewportを基準に配置されるのではなく、Web ページ全体 ( body要素) を基準に配置されることになります。

<html>
  <ヘッド>
    <title>CSS フィルターの問題</title>
    <スタイル>
      体 {
        高さ: 600px;
        背景: 赤;
        filter: grayscale(1); /* キーコード*/
      }

      。修理済み {
        色: 黄色;
        位置: 固定;
        上: 0;
        右: 0;
      }
    </スタイル>
  </head>
  <本文>
    <div class="fixed">修正された項目</div>
  </本文>
</html>

効果図は次のようになります。右上隅のfixed item要素が、画面ビューの右上隅を基準に配置されなくなったことに注意してください。

解決

この問題の原因は、 filternoneでない場合、要素またはその子要素にabsoluteまたはfixed属性があると、新しい包含ブロック/コンテナーが作成され、それによってabsolute要素またはfixed要素の位置が変更されることです (つまり、 absolute要素またはfixed要素の位置 <parent> 要素が、新しく作成された要素に変更されます)。

上記の例では、 bodyタグでfilter属性を使用すると、 filter bodyと同じ位置とサイズの新しい包含ブロックを生成し、この包含ブロックに従ってfixed要素が配置されるため、 fixed要素が元の特性を失っていることがわかります。

ただし、フィルターがルート要素 (つまり、HTML タグ) に作用する場合、絶対または固定の子要素に対して新しい包含ブロックは作成されません。

参考: https://drafts.fxtf.org/filter-effects/#FilterProperty

解決策は非常に簡単で、 htmlタグにfilter属性を追加するだけです。

html{
	フィルター: グレースケール(1);
}

拡張機能

1. position: fixed

要素にfixed属性が含まれている場合、画面viewport 、その要素に対してviewportと同じサイズのcontaining blockを作成し、その包含ブロックに基づいてfixed要素が配置されます。したがって、通常、 fixed要素はviewportに対して相対的に配置されると言われます。

さらに、 fixed属性は新しいスタック コンテキストを作成します。要素の祖先のtransformperspective 、またはfilterプロパティがnone以外の場合、コンテナーはビューポートからその祖先に変更されます。

参考: https://www.w3.org/TR/css-position-3/#fixed-pos

2. HTMLタグとbodyタグ

両者の違いについては、こちらのブログをご覧ください: http://phrogz.net/css/htmlvsbody.html

ps: HTML 要素は最大(画面の高さ <ビューポートの高さ>、内部要素の高さ <本体要素の高さ>) です。

以上で、フィルターと固定の競合の原因と解決方法についての説明は終了です。フィルターと固定の競合の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  ウェブフロントエンドエンジニアにおすすめのヒント

>>:  Linux スクリプトの基礎を詳しく紹介

推薦する

ウェブページのグリッドデザインを考える

<br />元のアドレス: http://andymao.com/andy/post/8...

MySql が常に mySqlInstallerConsole ウィンドウをポップアップする問題の解決策

MySql は常に MySQLInstallerConsole.exe ウィンドウを定期的にポップア...

Ubuntu 18.04の下のディレクトリにディスクをマウントします

導入この記事では、Ubuntu 18.04 デスクトップ システムでディスクを目的のディレクトリにマ...

Pengyou.com モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)

まずは簡単なデータを見てみましょう。 Googleが発表したレポートによると、 ①中国の都市の97%...

Linux whatisコマンドの使い方

01. コマンドの概要whatis コマンドは、システム コマンドの簡単な説明を含むいくつかの特別な...

MySQL 最適化 query_cache_limit パラメータの説明

クエリキャッシュ制限query_cache_limit は、単一のクエリで使用できるバッファ サイズ...

MySQL 8.0.20 のインストールと設定の詳細なチュートリアル

この記事では、MySQL 8.0.20のインストールと設定方法についての詳細なチュートリアルを参考ま...

ウェブサイトでページコンテンツや情報を直接コピーできない問題を解決する方法

最近では、多くのウェブサイトでは、ページ上の特定のコンテンツや情報を直接コピーすることは許可されてお...

Linux ファイアウォールを設定してポート 80 と 3306 を開く方法

ポート80も設定されています。まずファイアウォール設定ファイルを入力しますシェル># vim ...

JavaScript の toLocaleString() での時間フォーマットに関する新しいアイデア

目次1. 時刻表示に関する従来の考え方2. 時刻の書式設定 toLocaleString() Obj...

ウェブページの最も基本的なコード

◆お気に入りに追加例示するクリックすると、ブラウザのお気に入りメニューにウェブサイトが追加されます...

大規模なデータテーブルのコピー効率を向上させるMySQLソリューション

序文この記事では主に、MySQL で大規模なデータ テーブルのコピーの効率を向上させることに関する関...

Maven+Tomcat 基本イメージを構築する Docker の実装

序文Javaプログラミングでは、ほとんどのアプリケーションはMavenに基づいて構築されており、配信...

HTML でスクロールバーを使用する際のヒントを共有する

今日、牛南ニュースリリースシステムについて学んでいたとき、牛南先生はスクロールバーに関するいくつかの...

HTMLウェブページテーブル構造化マークアップの応用に関する簡単な説明

Web テーブルの構造マークアップについて説明する前に、いくつかの画像を見てみましょう。 HTML ...