CSS를 처음 접하시는 분들도 아주 간단하고 어려움이 없으실 겁니다. 사실 아직 CSS의 특징을 완전히 이해하지 못하셨기 때문입니다. 이 글을 통해 무시하기 쉬운 CSS의 특징을 알려드리겠습니다. 는 편집자가 매일 접하는 함정이며 참고용으로 매우 유용합니다. , 참고용으로 공유하세요
CSS를 처음 배울 때는 매우 간단하게 느껴지지만, 더 많이 배울수록 물이 얼마나 깊은지 알게 될 것입니다. CSS는 항상 다양한 함정에 직면하게 됩니다. 먼저 자주 접하게 되는 몇 가지 함정을 요약해 보겠습니다.
size 글쓰기는 민감하지 않습니다
CSS를 작성할 때 일반적으로 소문자를 사용하지만 실제로 CSS는 대소문자를 구분하지 않습니다
background-color를 background-COLOR로 작성해도 적용은 됩니다. 소문자로 쓰는 이유는 xhtml 표준 때문인데, xhtml이 아니더라도 쓰는 것이 좋습니다. 소문자로 되어 있습니다. 아름답고 읽기 쉬우며 가능한 변환 요구 사항에 대처할 수 있습니다
선택기 우선 순위
두 규칙이 동일한 html에 적용되는 경우 정의된 속성이 충돌하는 경우 CSS는 무엇을 사용해야 합니까? 일련의 우선순위 정의.
다른 수준
1. 속성 뒤에 !important를 사용하면 페이지의 모든 위치에 정의된 요소 스타일이 재정의됩니다.
2. 요소 내부에 스타일 속성으로 작성된 스타일
4. 클래스 선택자
6. 와일드카드 선택자
7. 동일한 수준
같은 레벨이 먼저 작성된 스타일을 덮어쓰게 됩니다.
위의 레벨은 이해하기 쉽지만 때로는 다음과 같이 여러 레벨의 조합이 있습니다. .test{
background-COLOR:#a00;
width:100px;
height: 100px;
}
p에는 어떤 규칙이 적용되나요(정원 친구?) 가중치는 실제로 소수를 기준으로 한 것이 아니라는 점을 상기시켜 드렸습니다. 숫자로 표현한 것은 단지 아이디어를 설명하기 위한 것입니다. 만 클래스는 ID 하나의 가중치만큼 높지 않습니다.)
•인라인 스타일 시트의 가중치는 1000입니다.
• 클래스 선택자의 가중치는 10
• HTML 태그 선택자의 가중치는 1 선택자에 해당 규칙을 추가하고 가중치를 비교할 수 있습니다. 마찬가지로, 나중 항목은 이전 항목을 덮어씁니다. p.class의 가중치는 1+10=11이고 .test1 .test2의 가중치는 10+10=20이므로 p는 .test1 .test2
을 적용합니다. 녹색으로 변함
인라인 요소의 일부 속성
모든 속성이 인라인 요소에 적용되는 것은 아닙니다1. 너비 속성은 인라인 요소에 적용되지 않으며 해당 길이는 콘텐츠 Open에서 지원됩니다. 2. 인라인 요소에는 높이 속성이 적용되지 않으며 콘텐츠에서도 높이를 지원하지만 높이는 line-height를 통해 조정할 수 있습니다
3 인라인 요소의 패딩 속성은 padding-left 및 padding-right, padding -top 및 padding-bottom은 요소의 범위를 변경하지만 다른 요소에는 영향을 미치지 않습니다. 4 인라인 요소의 여백 속성은 유효한 margin-left 및 margin-right, margin-top 및 margin입니다. -bottom은 유효하지 않습니다
5. 인라인 요소는 오버플로 속성이 유효하지 않습니다. 말할 것도 없이
6. 인라인 요소의 수직 정렬 속성이 유효하지 않습니다(높이 속성이 유효하지 않습니다)
<!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>
通过例子可以看出,我们对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 중국어 웹사이트의 기타 관련 기사를 참조하세요!