CSS初学感觉很简单,但随着学习的深入才感觉CSS的水由多深,平常总会遇到各种坑,先总结一些经常遇到的坑 大小写不敏感虽然我们平时在写CSS的时候都是用小写,但其实CSS并不是大小写敏感的 .test{ background-COLOR:#a00; width:100px; height: 100px; } 虽然把background-color写为了background-COLOR,但仍然会生效,之所以写成小写是因为xhtml标准的关系,但是即使不是xhtml还是写成小写比较好,美观、易读而且可以应对可能的转换需求 选择器优先级当两个规则都作用到了同一个html元素上时,如果定义的属性有冲突,那么应该用谁的值的,CSS有一套优先级的定义。 不同级别
同一级别 同一级别中后写的会覆盖先写的样式 上面的级别还是很容易看懂的,但是有时候有些规则是多个级别的组合,像这样 doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Documenttitle>
<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是应用那条规则呢,有个简单的计算方法
我们可以把选择器中规则对应做加法,比较权值,如果权值相同那就后面的覆盖前面的了,div.class的权值是1+10=11,而.test1 .test2的权值是10+10=20,所以div会应用.test1 .test2变成绿色 行内(inline)元素的一些属性并不是所有的属性对行内元素都能够生效
<div style="background-color: #a44;"> <span style="padding:4px; margin:8px; height: 500px; width:1000px; background-color:#0e0;">123456789123456789span> div> <div style="background-color: #a44;"> <span style="padding:4px; margin:8px; height: 500px; width:1000px; background-color:#0a0;">123456789span> div> 通过例子可以看出,我们对span设置的width和height属性并没有生效,margin-top和margin-bottom无效,padding-top和padding-bottom会改变元素范围(背景区域变大了),但并没有影响下面元素位置 一些互斥的元素
font-size单位我们在写字体的尺寸的时候常用的单位有
这些字体分别有什么含义?
:checked 选择器范围我们知道:checked会选择被选中的checkbox和radio,看个例子 doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Documenttitle>
<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">testoption>
<option id="t4">test2option>
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>Documenttitle>
<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 class="hidden">div>
<div class="none">div>
<div style="visibility:hidden;">
<div class="parentHidden">div>
div>
<div style="display:none;">
<div class="parentNone">div>
div>
<div style="display:none">
<img src="images/5.jpg">div>
body>
html> 看一下网络监视情况(怎么柳岩的照片变小后感觉怪怪的。。。) 我们可以发现图片0和4没有被下载,0是没有用到的CSS,4是父容器的display被设为none的情况,这两种情况下的CSS引用的图片是不会被加载的,而父容器设置visibility属性为hidden仍然会加载图片,不要搞混了 |