css基础(待补充)
css选择器
基础选择器
1.标签选择器:针对一类标签
注意:选择的所有,而不是一个。
<style type="text/css"> p{ font-size:14px; } </style> <p>css</p>
2.ID选择器:针对某一个特定的标签使用,只能使用一次
注意:
(1)只能有字母、数字、下划线。
(2)必须以字母开头。
(3)不能和标签同名。比如id不能叫做body、img、a。
(4)大小写严格区分,也就是说aa,和AA是两个不同的ID。
<style type="text/css"> #mytitle{ border:3px dashed green; } </style> <h2 id="mytitle">你好</h2>
3.类选择器:针对你想要的所有标签使用,优点:灵活
(特性1:类选择器可以被多种标签使用。特性2:同一个标签可以使用多个类选择器。用空格隔开)
注意:
(1)不要去试图用一个类名,把某个标签的所有样式写完。这个标签要多携带几个类,共同完成这个标签的样式。
(2)每一个类要尽可能小,有“公共”的概念,能够让更多的标签使用。
<style type="text/css"> .oneclass{ width:800px; } </style> <h2 class="oneclass">你好</h2>
4.通用选择器(通配符):针对所有的标签都适用(不建议使用)
<style type="text/css"> */*定义通用选择器*,希望所有标签的上边距和左边距都为0*/{ margin-left:0px; margin-top:0px; } </style>
高级选择器
1.后代选择器: 定义的时候用空格隔开(含类选择器、id选择器都是可以的)
注意:只要保持一个后代的关联即可。也就是说,选择的是后代,不一定是儿子。
<style type="text/css"> h3 b i{ color:red ; } </style>
2.交集选择器
注意:选择的元素要求同时满足两个条件:必须是h3标签,然后必须是special标签。
<style type="text/css"> h3.special{ color:red; } </style>
3.并集选择器:定义的时候用逗号隔开
p,h1,#mytitle,.one/*定义了一个并集选择器,带有p,h1,id="mytitle",class="one"的标签都内容会显示红色*/{ color:red; }
4.伪类选择器
一、结构(位置)伪类选择器( : )
1、:first-child
2、:last-child
3、:nth-child(n)或者:nth-child(2n)或者:nth-child(2n+1)
<body> <ul> <li>我是第一个</li> <li>我是第二个</li> <li>我是第三个</li> <li>我是第四个</li> <li>我是第五个</li> <li>我是第六个</li> <li>我是第七个</li> <li>我是第八个</li> <li>我是第九个</li> <li>我是第十个</li> </ul> </body> <style type="text/css"> ul li:first-child{ /* 选择第一个li */ background: rgb(228, 22, 22); } ul li:last-child { /* 选择最后一个li */ background: rgb(109, 18, 212); } ul li:nth-child(6){ /* 选择第n个li */ background: rgba(140, 214, 19); } ul li:nth-child(2n){ /* 选择偶数li(注:n=0,1,2,3,4……) */ font-size: 20px; } ul li:nth-child(2n+1){ /* 选择奇数li(注:n=0,1,2,3,4……) */ font-size: 12px; } </style>
二、属性选择器([ ])
1、[ 属性 ]
2、可以和正则表达式混用,如 $ 和 ^ 和 *
<body> <ul> <li class="test">我是第一个</li> <li class="two123">我是第二个</li> <li class="twotabc">我是第三个</li> <li class="abcfour">我是第四个</li> <li class="ggg-four">我是第五个</li> <li class="bug">我是第六个</li> <li class="bug_ee">我是第七个</li> <li class="hhbug">我是第八个</li> <li class="bug345">我是第九个</li> <li class="test">我是第十个</li> </ul> </body> <style type="text/css"> ul li[class=test] { /* 选择有属性为class=test的li(第一个和第十个) */ background: rgb(206, 25, 25); } ul li[class$=four]{ /* 选择属性里结尾有four的类名的li(第四个和第五个)*/ background: rgb(106, 9, 216); } ul li[class^=two]{ /* 选择属性里开头有two的类名的li(第二个和第三个) */ background: rgb(54, 201, 10); } ul li[class*=bug]{ /* 选择属性里所有带有bug的类名的li(第六、七、八、九个) */ font-size: 30px; } </style>
css权重的等级划分
什么是权重
CSS权重指的是样式的优先级,有两条或多条样式作用于一个元素,权重高的那条样式对元素起作用,权重相同的,后写的样式会覆盖前面写的样式。
当很多的规则被应用到某一个元素上时,权重是一个决定哪种规则生效,或者是优先级的过程。
每个选择器都有自己的权重。你的每条css规则,都包含一个权重级别。 这个级别是由不同的选择器加权计算的,通过权重,不同的样式最终会作用到你的网页中
权重的等级
可以把样式的应用方式分为几个等级,按照等级来计算权重
1、!important,加在样式属性值后,权重值为 10000 2、内联样式,如:style=””,权重值为1000 3、ID选择器,如:#content,权重值为100 4、类,伪类和属性选择器,如: content、:hover 权重值为10 5、标签选择器和伪元素选择器,如:div、p、::before 权重值为1 6、通用选择器(*)、子选择器(>)、相邻选择器(+)、同胞选择器(~)、权重值为0
权重的计算实例
1、实例一:
<style type="text/css"> div{ color:red !important; } </style> ...... <div style="color:blue">这是一个div元素</div> <!-- 两条样式同时作用一个div,上面的样式权重值为10000+1,下面的行间样式的权重值为1000, 所以文字的最终颜色为red -->
2、实例二:
<style type="text/css"> #content div.main_content h2{ color:red; } #content .main_content h2{ color:blue; } </style> ...... <div id="content"> <div class="main_content"> <h2>这是一个h2标题</h2> </div> </div> <!-- 第一条样式的权重计算: 100+1+10+1,结果为112; 第二条样式的权重计算: 100+10+1,结果为111; h2标题的最终颜色为red -->
伪类和伪元素
伪类和伪元素的区别(CSS3下的区别)
伪类其实是弥补了CSS选择器的不足,用来更方便地获取信息。
而伪元素本质上是创建了一个虚拟容器(元素),我们可以在其中添加内容或样式。
所以可以理解伪元素本质上是创建了一个虚拟容器(元素)了吧。
除了上面这个本质区别以外,在CSS3中,伪类用单冒号:表示;而伪元素用双冒号::表示。一个选择器可以同时使用多个伪类(但有的伪类会互斥);而一个选择器只能同时使用一个伪元素(未来的版本可能会支持多伪元素)。
1.伪类
CSS3给出的定义是:伪类存在的意义是为了通过选择器,格式化DOM树以外的信息以及不能被常规CSS选择器获取到的信息。
通过上面的概念我们知道了伪类的功能有两种:
1.格式化DOM树以外的信息。比如: <a> 标签的:link、:visited 等。这些信息不存在于DOM树中。
2.不能被常规CSS选择器获取到的信息。比如:要获取第一个子元素,我们无法用常规的CSS选择器获取,但可以通过 :first-child 来获取到。
2.伪元素
CSS3给出的定义是:伪元素可以创建一些文档语言无法创建的虚拟元素。比如:文档语言没有一种机制可以描述元素内容的第一个字母或第一行,但伪元素可以做到(::first-letter、::first-line)。同时,伪元素还可以创建源文档不存在的内容,比如使用 ::before 或 ::after。
用法
::before
在被选元素之前插入内容。需要指定content属性来插入内容。
::after
在被选元素之后插入内容。需要指定content属性来插入内容。
<p>CSS</p> <style type="text/css"> p::before { content: "Hi,"; } p::after { content: "Css"; } </style>
::first-letter
匹配元素中文本的首字母。
::first-line
匹配元素中第一行的文本(只能在块元素中使用)。
::selection
匹配被用户选中的部分。
元素
元素是文档结构的基础。在HTML中,最常用的元素很容易被识别,如平p、table、span、a、和div。文档中的每个元素都对文档的表现起一定的作用。在css中,至少在css2.1中,这意味着每个元素生成一个框(box,也称为盒),其中包含元素的内容。
替换和非替换元素
尽管css依赖于元素,但并非所有元素都以同样的方式创建。元素通常有两种形式:替换和非替换。
替换元素
替换元素是指用来替换元素内容的部分并非由文档内容直接表示。在HTML中,最熟悉的替换元素的例子就是img元素,它由文档本身之外的一个图像文件来替换。实际上,img没有具体的内容,通过一下的简单例子可以了解这一点。
<img src='howdy.gif'>
这个标记片段不包含任何具体内容,只有一个元素名和一个属性。除非将其指向一个外部内容。否则这个元素没有任何意义。
input元素与之类似,取决于input元素的类型,要由一个单选按钮、复选框或文本输入框替换。替换元素显示时也生成框。
非替换元素
大多数HTML元素都是非替换元素。这意味着,其内容由用户代理(通常是一个浏览器)在元素本身生成的框中显示。
例如:
<span>hi there</span>
这就是一个非替换元素。段落、标题、表单元格、列表和HTML中的几乎所有元素都是非替换元素。
元素显示角色
除了替换和非替换元素,css2.1还使用另外两种基本元素类型:块级元素和行内元素。
块级元素
块级元素生成一个元素框,(默认的)它会填充其父元素的内容区,旁边不能有其他元素。换句话说,它在元素框之前和之后生成了“分隔符”。替换元素可以是块级元素,不过通常都不是。
行内元素
行内元素在一个文本行内生成一个元素框,而不会打断这行文本。行内元素最好的例子就是HTML中的a元素。行内元素不会在它本身之前或之后生成“分隔符”,所以可以出现在另一个元素内容中,而不会破坏其显示。