検索
ホームページウェブフロントエンドCSSチュートリアルCSS におけるパーセンテージの問題の分析

この記事では、CSS のパーセンテージについての簡単な説明を主に紹介します。CSS スタイルを定義するときに長さの単位「%」がよく使用されますが、このパーセンテージは誰に関係するのでしょうか?

この記事では、CSS についての簡単な説明を紹介します。

結論:

  1. 標準ストリーム内の要素について、その属性が継承されているかどうかを確認します。 width と margin-left の場合は継承可能であり、親要素または祖先要素 (実際には包含ブロック) を参照します。高さの場合は継承がなく、親要素または祖先要素はその高さに適応します。すべての子要素と (これには注意が必要です)。

  2. 絶対配置は、最も近い親要素または祖先要素を参照します。親要素または祖先要素がない場合は、最初の包含ブロックを参照します (W3C ではブラウザ固有の方法が指定されていないため、ブラウザによって異なる場合があります)。それを達成します)。しかし実際には、ほとんどのブラウザは表示可能領域を絶対的に配置された包含ブロックとして扱います。

  3. 固定位置は視覚領域を参照します

幅はパーセンテージに設定されます

通常、一般的な子要素は、パーセンテージの参照として親要素の計算値を継承します。およびルート要素は、初期値を参考にしてください

たとえば、.box には幅が設定されていませんが、デフォルトで body の計算された値が継承されます。また、.box は .item の親要素であるため、.item です。 .box の計算値を継承します。ブロックレベルの要素で幅が設定されていない場合、その要素は含まれているブロックの幅を継承するため、その幅はデフォルトで全画面になります。

高さをパーセンテージに設定します

結論

高さをパーセンテージに設定すると、高さは幅のように親要素または祖先要素を継承しません。要素は、子要素の実際の高さ (高さの計算値) に基づいて自動適応されます。通常は、すべての子要素のコンテンツの高さの合計です。子要素は、テキスト行の高さに基づいて特定の高さの値を設定します (子要素の高さが特定の値に設定されていない場合)。絶対配置の要素の場合、その高さがパーセンテージである場合、絶対配置は親要素またはそれに最も近い祖先要素の高さを参照します。祖先要素の場合、それは最初の要素を参照します (W3C ではブラウザが実装する方法を指定していないため、ブラウザによって異なる場合があります)。しかし実際には、ほとんどのブラウザは表示可能領域を絶対的に配置された包含ブロックとして扱います。

通常、幅をパーセンテージで設定することを好みますが、高さをパーセンテージで設定する場合は注意してください。

 <style>
        body,p{
            margin:0;
            padding:0;
        }
        .box{
            width:100px;
            height:100%;
            background-color: #58d3e2;
        }
    </style>
<p class="box">height 100%</p>

HTML では高さが 21 に等しいように見えるのはなぜですか?この21は祖先要素から受け継がれたものなのでしょうか?体の高さを 100% に設定しても、結果は同じです。実際、ここでの高さは行の高さです。つまり、高さが 0 の場合、または高さが設定されていない場合、高さはテキストの行の高さになります。 .box、ボックス、ボディと html の高さは、 .box の高さを特定の値に設定すると 20px になります:

 <style>
        body,p{
            margin:0;
            padding:0;
        }
        .box{
            width:100px;
            height:100px;
            background-color: #58d3e2;
        }
    </style>
<p class="box">height 100%</p>

html は 100px の .box と同じなので、高さを設定しなくても、親要素は子要素の高さに適応すると結論付けることができます (高さを設定しないと、html と body の高さはすべての高さを合わせたものになります)。 content)、親要素が height を設定している場合は、別の状況になります:

 <style>
        body,p{
            margin:0;
            padding:0;
        }

        .d{
            height: 100px;
            width: 200px;
            background-color: #9d9d9d;
        }
        .box{
            width:100px;
            height:100px;
            background-color: #58d3e2;
        }
    </style>
<p class="d">
<p class="box">height</p>
</p>

d、body、および html の高さが 100px (200px であるはずです) になっていることがわかります。これは、親要素がまたは祖先要素が子要素の高さに受動的に適応する場合、その高さの値は要素から継承されません。

絶対配置がある場合

1. 祖先要素を配置せずに絶対配置する

このとき、絶対配置とはビューポートの概念に注意してください。

りー

改变height分别为100%和50%,可以发现html的高度为0,并没有自适应p的高度,因为p已经彻底脱离标准流了,我们说过,如果绝对定位没有定位的祖先元素,则包含块为初始包含块,这里的初始包含块即为可视区,所以这里的百分比是参照可视区的大小来计算的。所以为50%时占视口的一半。注意这只是一个视口的高度,把滚动条往下拉拉就知道了。

2.绝对定位的元素在另外一个定位元素里面(除static外)

这时百分比参照的是父元素生成的包含块计算出来的值

所以想让定位元素的高度占满整个屏幕,可以:

body{
  position:relative;
}

margin-left设置成百分比

  <style>
        body,p{
            margin:0;
            padding:0;
        }
        .box{
            position:absolute;
            width:100px;
            height:100px;
            margin-left: 100%;
            background-color: #58d3e2;
        }
    </style>
<p class="box">margin-left</p>

这时出现了滚动条,这是因为将p的margin-left设置成了100%,而百分比是参照其包含块body的宽度,body又是参照的html(某些浏览器将它当作初始包含块)。而html的初始包含块是可视区,所以可视区的宽度再加上元素的100%,自然就超出了屏幕了。

解决方法:

(1)利用calc函数

<style>
        body,p{
            margin:0;
            padding:0;
        }
        .box{
            position:absolute;
            width:100px;
            height:100px;
            margin-left: calc(100%-100px);
            background-color: #58d3e2;
        }
    </style>
<p class="box">margin-left</p>

(2)让body的宽度减去100px,因为p的百分比是参照其父元素的宽度计算的,因此这里将它的父元素的宽度减小,那么它的margin-left的100%自然就小了

<style>
        body,p{
            margin:0;
            padding:0;
        }
         body{
             margin-right;100px;
        }
        .box{
            position:absolute;
            width:100px;
            height:100px;
            margin-left: 100%;
            background-color: #58d3e2;
        }
    </style>
<p class="box">margin-left</p>

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

CSS实现页面九宫格布局的简单示范

HTML5标签大全

以上がCSS におけるパーセンテージの問題の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
cohost.orgの失われたCSSトリックcohost.orgの失われたCSSトリックApr 25, 2025 am 09:51 AM

この投稿では、Blackle Moriは、CohostのHTMLサポートの限界を押し広げようとしている間に見つかったハックのいくつかを示します。あえてこれらを使用してください、あなたもCSS犯罪者とラベル付けされないようにしてください。

カーソルの次のレベルCSSスタイリングカーソルの次のレベルCSSスタイリングApr 23, 2025 am 11:04 AM

CSSを備えたカスタムカーソルは素晴らしいですが、JavaScriptを使用して次のレベルに物事を引き出すことができます。 JavaScriptを使用して、カーソル状態間で移行し、カーソル内に動的テキストを配置し、複雑なアニメーションを適用し、フィルターを適用できます。

Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Apr 23, 2025 am 10:42 AM

2025年には、互いに互いに跳ね返る要素を伴うインタラクティブなCSSアニメーションは、CSSにPongを実装する必要はありませんが、CSSの柔軟性とパワーの増加はLee&#039;の疑いを補強します。

UI効果にCSSバックドロップフィルターを使用しますUI効果にCSSバックドロップフィルターを使用しますApr 23, 2025 am 10:20 AM

CSSバックドロップフィルタープロパティを使用してユーザーインターフェイスをスタイルするためのヒントとコツ。バックドロップフィルターを複数の要素間でレイヤー化する方法を学び、それらを他のCSSグラフィカル効果と統合して、精巧なデザインを作成します。

微笑んでいますか?微笑んでいますか?Apr 23, 2025 am 09:57 AM

まあ、SVG&#039;の組み込みのアニメーション機能は、計画どおりに非推奨されることはありませんでした。確かに、CSSとJavaScriptは負荷を運ぶことができる以上のものですが、以前のようにSmilが水中で死んでいないことを知っておくのは良いことです

「かわいい」は見る人の目にあります「かわいい」は見る人の目にありますApr 23, 2025 am 09:40 AM

イェーイ、テキストワラップのジャンプを見てみましょう:サファリテクノロジーのプレビューにかなり着陸してください!しかし、それがChromiumブラウザーでの仕組みとは異なることに注意してください。

CSS-Tricks XLIIIを記録しますCSS-Tricks XLIIIを記録しますApr 23, 2025 am 09:35 AM

このCSS-Tricksアップデートは、アルマナック、最近のポッドキャスト出演、新しいCSSカウンターガイド、および貴重なコンテンツを提供するいくつかの新しい著者の追加の大幅な進歩を強調しています。

Tailwind&#039;の@Apply機能は、響きよりも優れていますTailwind&#039;の@Apply機能は、響きよりも優れていますApr 23, 2025 am 09:23 AM

ほとんどの場合、人々はTailwind&#039;の@Apply機能を紹介します。このように展示されたとき、@Applyはまったく有望な音をしません。だからobvio

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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

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

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

DVWA

DVWA

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