您现在的位置:首页 >> 前端 >> 内容

前端层叠、继承和CSS单位代码讲解

时间:2017/11/16 9:30:21 点击:

  核心提示:选择器的特异度(specificity):内联id(伪)类个数标签个数选择器的特异度(Specificity)用途:如果和一个class差不多,属性的覆盖可以让其覆盖一部分属性。先写通用的属性,再写特...

选择器的特异度(specificity):

内联>id>(伪)类个数>标签个数

选择器的特异度(Specificity)

用途:

如果和一个class差不多,属性的覆盖可以让其覆盖一部分属性。

先写通用的属性,再写特殊属性,可以节省代码。

选择器 内联? id个数    (伪)类个数  标签个数    特异度
#nav .list li a:link    0   1   2   2   0122
.hd ul.links a  0   0   2   2   0022

Level 0: *
Level 1: 标签选择器、伪元素
Level 2: 类、伪类、属性
Level 3: id
Level 4: 内联

important

//是无法覆盖的

//除非覆盖的时候再加一个important

.btn {
    display: inline-block;
    padding: .36em .8em;
    margin-right: .5em;
    line-height: 1.5;
    text-align: center;
    cursor: pointer;
    border-radius: .3em;
    border: none;
    background: #e6e6e6;
    color: #333 !important;
  }
  .btn.btn-primary {
    color: #fff;
    background: #218de6;
  }

用途: 用于嵌入到别的网站的时候,不被覆盖掉的属性(微博等)

cascading

CSS 样式的来源:

页面开发者

用户设置//浏览器可以指定一个本地 CSS 文件,打开所有页面时自动加载。

浏览器预设

//Mozilla Firefox 预设样式

Google Chrome 预设样式

Internet Explorer 预设样式

哪条声明起作用?

1.找出匹配到的该属性所有声明

2.根据规则来源,优先级从低到高:

浏览器预设

用户设置

网页样式

3.同一来源中,按照特异度排序,越特殊优先级越高

特异度一样时,按照样式书写顺序,后面的优先级高

有 !important 时的变化

找出匹配到的该属性所有声明

根据规则来源,优先级从低到高:

浏览器预设

用户设置

网页样式

含 !important 的网页样式

含 !important 的用户设置样式

同一来源中,按照特异度排序,越特殊优先级越高

特异度一样时,按照样式书写顺序,后面的优先级高

默认值策略 Defaulting

继承

某些属性会自动继承其父元素的计算值,除非显式指定一个值

显式继承

* {
  box-sizing: inherit;//box-sizing是不继承的,但是可以这样写,将不能继承的属性写成可以继承的属性
}
html {
  box-sizing: border-box;
}
.some-widget {
  box-sizing: content-box;
}

初始值

CSS 中,每个属性都有一个初始值

background-color 的初始值为 transparent

margin-left 的初始值为 0

可以显式重置为初始值,比如 background-color: initial

CSS 求值过程

Dom&样式表–>filtering(声明值)–>cascading(层叠值)–>defaulting(指定值)—>resolving(计算值)–>formatting(使用值)—>constraining(实际值)

继承的一般是计算值。js里面获取value是实际值。

HTML规范

HTML Document

属性值

关键字:font-size:initial、box-sizing:inherit、color:red 等
字符串:content:"abc"
URL:background-image:url(/resources/img/logo.png)
长度:font-size:2em、height:100px、width:50vw
百分数:width: 50%、font-size: 200%
整数:z-index: 9
浮点数:line-height: 1.8
颜色:color: #f00、color:rgba(0,0,0,0.5)
时间:transition-duration: 0.3s
角度:transform: rorateX(deg)
函数:content: attr(title)、height: calc(100vh - 100px)

长度单位

绝对单位
px:像素,对应显示器的一个像素点
in:英寸
英寸cm:厘米
厘米mm:毫米
毫米pt:磅 (1 pt 等于 1/72 英寸)
英寸pc:1pc 等于 12pt

相对单位
em:相对于该元素的一个 font-size
rem:相对于 html 元素的 font-size
vh:浏览器窗口高度的 1%
vw:浏览器窗口宽度的 1%
vmin:vh 和 vw 中的较小者
vmax:vh 和 vw 中的较大者

颜色

关键字
Hex
RGB & RGBA//RGBA中A是透明度
HSL & HSLA//使用 Hue、Saturation、Lightness 三个数字来表示颜色

Hue 色相

Hue: 色相(H)是色彩的基本属性,就是平常所说的颜色

名称,如红色、黄色等。取值范围是0-360。

HSL 和 HSLA

Saturation: 饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰。取值范围0-100%。

Lightness: 越高颜色越亮。取值范围是0-100%。

例如:hsl(0, 50%, 50%)、hsla(120, 50%, 30%, 0.5)

作者:网络 来源:sparkleyn的