ホームページ  >  記事  >  ウェブフロントエンド  >  CSS の見落とされやすい機能を理解し、よくある落とし穴を回避します

CSS の見落とされやすい機能を理解し、よくある落とし穴を回避します

青灯夜游
青灯夜游転載
2020-11-11 18:09:231941ブラウズ

CSS の見落とされやすい機能を理解し、よくある落とし穴を回避します

CSS は、最初に学習すると非常に簡単に感じますが、学習を進めていくと、CSS の奥深さがわかります。常にさまざまな落とし穴に遭遇します。まず、いくつかの点をまとめてみましょう。よく遭遇する落とし穴。

推奨チュートリアル: CSS ビデオ チュートリアル

大文字と小文字を区別しない

通常は CSS を記述しますが、実際には小文字を使用します。は大文字と小文字を区別しません

.test{
    background-COLOR:#a00;
    width:100px;
    height: 100px;
}

CSS の見落とされやすい機能を理解し、よくある落とし穴を回避します

background-colorはbackground-COLORと書いても有効です、小文字で書いているのはXhtmlの規格のためです2 つのルールが同じ HTML 要素に適用される場合、定義された属性が競合する場合、どちらの値を使用する必要がありますか? CSS には一連の優先順位の定義があります。

#さまざまなレベル

#属性の後に ! important を使用すると、ページ内の任意の場所で定義されている要素スタイルがオーバーライドされます。

#要素内に style 属性として記述されたスタイル
  • id ​​selector
  • クラス選択セレクター
  • タグ セレクター
  • ワイルドカード セレクター
  • ブラウザーのカスタマイズまたは継承
  • 同じレベル
  • 同じレベルで後で書かれたスタイルは、最初に書かれたスタイルを上書きします
上のレベルはまだ見やすいです理解していますが、一部のルールは、次のように複数のレベルの組み合わせである場合もあります

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div.test{
            background-COLOR:#a00;
            width:100px;
            height: 100px;
        }

        .test.test2{
            background-COLOR:#0e0;
            width:100px;
            height: 100px;
        }
    </style>
</head>
<body>
    <div class="test test2"></div>
</body>
</html>
どのルールが div に適用されますか? 簡単な計算方法があります (庭からの注意事項、重みは実際には異なります)。 10 進数の数値表現は概念を説明するためのものです。1 万クラスは 1 つの ID の重みほど大きくありません)

インライン スタイル シートの重みは 1000

ID セレクターの重みは 100
  • クラス セレクターの重みは 10
  • HTML タグ セレクター The value の重みは 1 10=11、.test1 .test2 の重みは 10 10=20 であるため、.test1 .test2
  • ## を使用すると div が緑色に変わります。

  • # インライン要素の一部の属性
  • すべての属性がインライン要素に有効であるわけではありません

width 属性は、インライン要素には適用されません。インライン要素とその長さはコンテンツによって引き伸ばされます

CSS の見落とされやすい機能を理解し、よくある落とし穴を回避します

高さ属性はインライン要素には適用されず、その高さもコンテンツによって引き伸ばされますが、高さは変更できます。 line-height を通じて調整できます

インライン要素のパディング属性は、padding-left と padding-right でのみ有効です。padding-top と padding-bottom は要素のスコープを変更します。ただし、他の要素には影響しません。

  1. インライン要素のマージン属性は、margin-left と margin-right のみが有効です。margin-top と margin-bottom は無効です

  2. inline 要素の overflow 属性が無効です。これについては詳しく説明する必要はありません。

  3. inline 要素のvertical-align 属性が無効です (height 属性が無効です) )

  4. <div style="background-color: #a44;">
      <span style="padding:4px; margin:8px; height: 500px; width:1000px; background-color:#0e0;">
       123456789123456789</span>
      </div>
    
      <div style="background-color: #a44;">
      <span style="padding:4px; margin:8px; height: 500px; width:1000px; background-color:#0a0;">
          123456789</span>
      </div>

  5. 例を使用できます。span に設定した幅と高さの属性が有効にならないことがわかります。 margin-bottom は無効で、padding-top と padding-bottom は要素のスコープを変更します (背景領域が大きくなります) が、後続の要素には影響しません。

  6. 絶対要素と固定配置 (固定サイズ、幅、高さの属性が設定されている) 要素の場合、top 属性と left 属性が設定されている場合は、bottom と right の値を設定します。は効果がありません。上と左の方が優先されるべきです。そうでない場合、ブラウザは同時に誰が書かれたかに従って誰を配置するかをどのようにして知るのでしょうか?

絶対的な場合および固定位置の要素の場合、上、左、下、および右の値が設定されている場合、margin 属性は機能しません。CSS の見落とされやすい機能を理解し、よくある落とし穴を回避します

絶対位置および固定位置の要素の場合、上、左、下、右の値を設定した後は、float 属性も無効になります。

float 属性またはブロックの絶対または固定位置の場合要素が設定されると、vertical-align 属性はアクティブ化されなくなります。フォントのサイズは
  1. #px
  2. pt
  3. em
  4. ## と書きます。
  5. #rem

これらのフォントは何を意味しますか? 1. Px はピクセルの略で、ピクセルに基づく単位であり、Web を閲覧する過程で、画面上の文字や写真などが画面の解像度に応じて変化します。幅 100 ピクセルの画像は、800×600 の解像度では画面幅の 1/8 を占めますが、1024×768 では約 1/10 しか占めません。

所以如果在定义字体大小时,使用px作为单位,那一旦用户改变显示器分辨率从800到1024,用户实际看到的文字就要变“小”(自然长度单位),甚至会看不清,影响浏览。 

2、pt是point(磅)缩写,是一种固定长度的度量单位,大小为1/72英寸。如果在web上使用pt做单位的文字,字体的大小在不同屏幕(同样分辨率)下一样,这样可能会对排版有影响,但在Word中使用pt相当方便。

因为使用Word主要目的都不是为了屏幕浏览,而是输出打印。当打印到实体时,pt作为一个自然长度单位就方便实用了:比如Word中普通的文档都用“宋体 9pt”,标题用“黑体 16pt”等等,无论电脑怎么设置,打印出来永远就是这么大。

3、em:是相对单位,是一个相对长度单位,最初是指字母M的宽度,所以叫em,现指的是字符宽度的倍数,用法类似百分比,如:0.8em, 1.2em,2em等。

通常1em=16px(浏览器默认字体大小16px),em是指父元素的字体大小。在一个页面上给定了一个父元素的字体大小,这样就可以通过调整一个元素来成比例的改变所有元素大小.它可以自由缩放,比如用来制作可伸缩的样式表。

类似还有ex的概念,ex 相对于字符“x”的高度,此高度通常为字体尺寸的一半。

4、rem:rem是CSS新增的,em是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在多次使用时,就会带来无法预知的错误风险。

而rem是相对于根元素(r:root),使用rem我们只需要在根元素确定一个参考值,然后就可以控制整个html页面所有字体了。

:checked 选择器范围

我们知道:checked会选择被选中的checkbox和radio,看个例子

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        :checked{
            margin: 10px;
        }
    </style>
</head>
<body>
    <input id="t1" type="checkbox" checked/>
    <input id="t3" type="radio" checked/>
    <select>
        <option id="t2">test</option>
        <option id="t4">test2</option>
    </select>
</body>
</html>

CSS の見落とされやすい機能を理解し、よくある落とし穴を回避します

对于前两个margin变成10px我们不奇怪,但是当我们看select的option的时候会发现被选中的option的margin业变成了10px,没有被选中的option则没有变化!

CSS の見落とされやすい機能を理解し、よくある落とし穴を回避します

是的:checked也会选择被选中的option

并不是所有图片都会被加载

我们知道写在页面上的img标签,无论显示与否,图片都会被加载(所以试图通过对图片display:none来达到节省网络流量的做法就省省吧。。。),我们也经常使用backgroung-image等css属性为页面添加图片,这些图片是不是一定会被加载呢,看个例子

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        .useless{
            background-image: url(images/0.jpg);
        }
        .hidden{
            background-image: url(images/1.jpg);
        }
        .none{
            background-image: url(images/2.jpg);
        }
        .parentHidden{
            background-image: url(images/3.jpg);
        }
        .parentNone{
            background-image: url(images/4.jpg);
        }
    </style>
</head>
<body>
    <div></div>

    <div></div>

    <div style="visibility:hidden;">
        <div></div>
    </div>

    <div style="display:none;">
        <div></div>
    </div>
    
    <div style="display:none">
        <img  src="images/5.jpg" alt="CSS の見落とされやすい機能を理解し、よくある落とし穴を回避します" ></div>
</body>
</html>

看一下网络监视情况(怎么柳岩的照片变小后感觉怪怪的。。。)

CSS の見落とされやすい機能を理解し、よくある落とし穴を回避します 我们可以发现图片0和4没有被下载,0是没有用到的CSS,4是父容器的display被设为none的情况,这两种情况下的CSS引用的图片是不会被加载的,而父容器设置visibility属性为hidden仍然会加载图片,不要搞混了

更多编程相关知识,请访问:编程入门!!

以上がCSS の見落とされやすい機能を理解し、よくある落とし穴を回避しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。