CSS的三大特性

1.继承性

作用:子元素可以继承父元素的样式
text-,font-,line-这些元素开头的都可以继承,以及color属性
特殊性:

①. a标签的颜色不能继承,必须对a标签本身进行设置

②. h标签的字体大小不能修改,必须对h标签本身进行修改

2.层叠性

是浏览器处理冲突的一个能力
如果一个属性通过两个选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉

3.优先级

!important>行内样式>id选择器>类选择器>标签选择器>通配符>继承

权重:

作用:多个选择器组合以后的优先级

算法:(0,0,0,0)==》第一个0是important的个数,第二个0是id选择器的个数,

第三个0对应的类选择器的个数,第四个0对应的是标签选择器的个数,就是当前选择器的权重。

权重是优先级的算法,层叠是优先级的表现

选择器的工作原理:选择器是从右我往左查找

选择器优先级

当两个规则都作用到了同一个html元素上时,如果定义的属性有冲突,那么应该用谁的值的,CSS有一套优先级的定义。

不同级别

  1. 在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式。
  2. 作为style属性写在元素内的样式
  3. id选择器
  4. 类选择器
  5. 标签选择器
  6. 通配符选择器
  7. 浏览器自定义或继承

同一级别

同一级别中后写的会覆盖先写的样式

上面的级别还是很容易看懂的,但是有时候有些规则是多个级别的组合,像这样

CSS的三大特性
<!doctype html>
<html lang="en">
<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>
CSS的三大特性

到底div是应用那条规则呢,有个简单的计算方法(经园友提示,权值实际并不是按十进制,用数字表示只是说明思想,一万个class也不如一个id权值高)

  • 内联样式表的权值为 1000
  • ID 选择器的权值为 100
  • Class 类选择器的权值为 10
  • HTML 标签选择器的权值为 1

 我们可以把选择器中规则对应做加法,比较权值,如果权值相同那就后面的覆盖前面的了,div.class的权值是1+10=11,而.test1 .test2的权值是10+10=20,所以div会应用.test1 .test2变成绿色

CSS的三大特性

行内(inline)元素的一些属性

并不是所有的属性对行内元素都能够生效

  1. 行内元素不会应用width属性,其长度是由内容撑开的
  2. 行内元素不会应用height属性,其高度也是由内容撑开的,但是高度可以通过line-height调节
  3. 行内元素的padding属性只用padding-left和padding-right生效,padding-top和padding-bottom会改变元素范围,但不会对其它元素造成影响
  4. 行内元素的margin属性只有margin-left和margin-right有效,margin-top和margin-bottom无效
  5. 行内元素的overflow属性无效,这个不用多说了
  6. 行内元素的vertical-align属性无效(height属性无效)
CSS的三大特性
<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>
CSS的三大特性

CSS的三大特性

通过例子可以看出,我们对span设置的width和height属性并没有生效,margin-top和margin-bottom无效,padding-top和padding-bottom会改变元素范围(背景区域变大了),但并没有影响下面元素位置

css设置网页元素标签居中方式:

设置非块级标签的水平居中方式:设置其父标签的text-align:center;即可。

设置块级标签的水平居中方式:设置其自己的margin:0px auto 0px;即可。

设置垂直居中,两种标签的设置方式一样都是设置其行高属性(line-height)与其父节点一样。

css可以用于脱离标准流的布局(即,从上到下,从左到右)

(1)float属性(设置left,right,none),一旦设置这个属性, 标签变为inline-block类型;

一个父标签的子标签中有float的时候,要设置其(父标签)display:inline-block才有值。

(2)position属性(absolute, fixed, relative, static, inherit)

如果想要子标签相对父标签的位置进行定位,还需要设置父标签的position属性为relative。(自绝父相)

 
在css开发中,首先写如下代码,方便开发调试:
body, span, ul, li, h1, h2, h3, h4, input, label, a, button, div, button, img, p{
  margin:0px;
  border:0px;
  padding:0px;
}

a {
  text-decoration:none;
}

相关推荐