ホームページ > 記事 > ウェブフロントエンド > CSS で見落とされやすい機能
CSS の初心者にとって、それは非常に簡単で難しいことではありません。それは、CSS の特性をまだ完全に理解していないからです。この記事では、無視されやすい CSS の特性について説明します。は編集者が毎日遭遇する落とし穴であり、非常に参考になるので、参考のために共有します
CSS を最初に学習したときは非常に単純に感じますが、さらに学習すると、奥が深いことがわかります。 CSS は常にさまざまな落とし穴に遭遇します。まず、よくある落とし穴をいくつかまとめてみましょう
サイズの記述は区別されません
CSS を記述するときは通常小文字を使用しますが、実際には CSS は大文字と小文字を区別しません
.test{ background-COLOR:#a00; width:100px; height: 100px; }
background-colorをbackground-COLORと書いても小文字で書いているのはxhtmlの規格のためですが、xhtmlでなくても書いた方が良いです。小文字で美しく、読みやすく、起こり得る変換ニーズに対応できます
セレクターの優先順位
両方のルールが同じ HTML に適用される場合、定義された属性が競合する場合、CSS の値はどちらを使用する必要がありますか?優先順位の定義のセット。
さまざまなレベル
1. 属性の後に ! important を使用すると、ページ内の任意の場所で定義された要素のスタイルがオーバーライドされます。
2. style 属性として要素内に記述されるスタイル
3.id セレクター
5. タグ セレクター
7. ブラウザのカスタマイズまたは継承
同じレベルは最初に書かれたスタイルを上書きします
上記のレベルは理解しやすいですが、いくつかのルールは次のように複数のレベルを組み合わせたものになることがあります <!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
p.test{
background-COLOR:#a00;
width:100px;
height: 100px;
}
.test.test2{
background-COLOR:#0e0;
width:100px;
height: 100px;
}
</style>
</head>
<body>
<p class="test test2"></p>
</body>
</html>
どのルールが適用されますか? 簡単な計算方法があります (庭の友達?)重みは実際には 10 進数に基づいていないことを思い出しました。この数値表現はアイデアを説明するためのものです。1 万クラスは 1 つの ID の重みほど高くありません。
• インライン スタイル シートの重みは 1000 です。
• クラス セレクターの重みは 10 です
• HTML タグ セレクターの重みは 1 です セレクターに対応するルールを追加し、重みを比較できます。同様に、後のものは前のものを上書きします。p.class の重みは 1+10=11、.test1 .test2 の重みは 10+10=20 なので、p は .test1 .test2
を適用します。緑色に変わります
インライン要素の一部の属性
すべての属性がインライン要素に適用されるわけではありません1、幅属性はコンテンツ Open によってサポートされません。 2. height 属性はインライン要素には適用されず、その高さはコンテンツによってもサポートされますが、高さは line-height によって調整できます
3 インライン要素のパディング属性は、padding-left と padding-left でのみ有効です。 padding-right、padding -top、padding-bottom は要素のスコープを変更しますが、他の要素には影響しません4. インライン要素の margin 属性は margin-left と margin-right にのみ有効であり、margin-top は有効です。
5. インライン要素 オーバーフロー属性は無効です
6. インライン要素のvertical-align属性は無効です
<p style=""> <span style="padding:4px; margin:8px; height: 500px; width:1000px; ">123456789123456789</span> </p> <p style=""> <span style="padding:4px; margin:8px; height: 500px; width:1000px; ">123456789</span> </p>
通过例子可以看出,我们对span设置的width和height属性并没有生效,margin-top和margin-bottom无效,padding-top和padding-bottom会改变元素范围(背景区域变大了),但并没有影响下面元素位置
一些互斥的元素
1.对于absolute和fixed定位的(固定大小,设置了width和height属性)元素,如果设置了top和left属性,那么设置bottom和right值就没有作用了,应该是top和left优先级高,否则同时写了浏览器怎么知道按照谁定位
2.对于absolute和fixed定位的元素,如果设置了top、left、bottom、right的值后margin属性也就不起作用了
3.对于absolute和fixed定位的元素,如果设置了top、left、bottom、right的值后float属性同样会失效
4.块元素如果设置了float属性或者是absolute、fixed定位,那么vertical-align属性不再起作用
font-size单位
我们在写字体的尺寸的时候常用的单位有
•px
•pt
•em
•rem
这些字体分别有什么含义?
1.px是pixel缩写,是基于像素的单位.在浏览网页过程中,屏幕上的文字、图片等会随屏幕的分辨率变化而变化,一个100px宽度大小的图片,在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是相对于根元素100db36a723c770d327fc0aef2ce13b1(r:root),使用rem我们只需要在根元素确定一个参考值,然后就可以控制整个html页面所有字体了。
:checked 选择器范围
我们知道:checked会选择被选中的checkbox和radio,看个例子
<!doctype html> <html lang="en"> <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> 对于前两个margin变成10px我们不奇怪,但是当我们看select的option的时候会发现被选中的option的margin业变成了10px,没有被选中的option则没有变化!
是的:checked也会选择被选中的option
并不是所有图片都会被加载
我们知道写在页面上的img标签,无论显示与否,图片都会被加载(所以试图通过对图片display:none来达到节省网络流量的做法就省省吧。。。),我们也经常使用backgroung-image等css属性为页面添加图片,这些图片是不是一定会被加载呢,看个例子
<!doctype html> <html lang="en"> <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> <p class="hidden"></p> <p class="none"></p> <p style="visibility:hidden;"> <p class="parentHidden"></p> </p> <p style="display:none;"> <p class="parentNone"></p> </p> <p style="display:none"> <img src="images/5.jpg"></p> </body> </html>
看一下网络监视情况(怎么柳岩的照片变小后感觉怪怪的。。。)
我们可以发现图片0和4没有被下载,0是没有用到的CSS,4是父容器的display被设为none的情况,这两种情况下的CSS引用的图片是不会被加载的,而父容器设置visibility属性为hidden仍然会加载图片,不要搞混了
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上がCSS で見落とされやすい機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。