css工作原理

html-css08

css工作原理,第1张

Normalize.css

是一种CSS reset的替代方案。它在默认的HTML元素样式上提供了跨浏览器的高度一致性。相比于传统的CSS reset,Normalize.css是一种现代的、为HTML5准备的优质替代方案。

知乎总结的html tags

html一共有114个标签,但html5有添加了一些标签,如nav、header、article、section、aside、footer等。

闭合标签的基本格式如下:

<标签名>文本内容</标签名>

可以给这个标签添加一些属性,比如:

<标签名 属性_1="属性值" 属性_2="属性值">文本内容</标签名>

标题、段落等文本元素都要求闭合标签,也就是要有一个开标签和一个闭标签,比如:

<标签名 属性_1="属性值" 属性_n="属性值" />

非文本内容是通过自闭合标签显示的。闭合标签与自闭合标签的区别在于,闭合标签包含的是会显示的实际内容,而自闭合标签只是给浏览器提供一个对要显示内容的引用。

<标签名 属性_1="属性值" 属性_n="属性值" />

** 块级元素盒子会扩展到与父元素同宽**

块级标签

行内元素盒子会“收缩包裹”其内容,并且会尽可能包紧。

行内标签:

CSS规则分两部分,即选择符和声明。声明又由两部分组成,即属性和值。声明包含在一对花括号内。

图中文字:selector:选择符;declaration:声明;property:属性;value:值;opening curly bracket:左花括号;closing curly bracket:右花括号。

对这个基本的结构,有三种方法可以进行扩展。

第一种方法:多个声明包含在一条规则里。

p {color:redfont-size:12pxfont-weight:bold}

这样,一条规则就可以把段落文本设置成红色,12像素大,粗体。

第二种方法:多个选择符组合在一起。如果想让h1、h2和h3的文本都变成蓝色,粗体,可以这样分别写:

但其实,把三个选择符组合在一起也可以,这样就能减少重复输入:

千万注意每个选择符之间要用逗号分隔(最后一个后面不用加)。

第三种方法:多条规则应用给一个选择符。 假设,你在写完前面那条规则后,又想只把h3变成斜体,那可以再为h3写一条规则:

用于选择特定元素的选择符又分三种。

上下文选择符的格式如下:

标签1 标签2 {声明}

上下文选择符,严格来讲(也就是CSS规范里),叫后代组合式选择符(descendant combinator selector),就是一组以空格分隔的标签名。用于选择作为指定祖先元素后代的标签。

article p {font-weight:bold}

这个例子中的上下文选择符表明,只有是article后代的p元素才会应用后面的样式。换句话说,上面这条规则的目标是位于article上下文中的p元素。

css class style 显示效果

多类选择符

<p class="specialtext featured">Here the span tag <span>may or may not</span>be styled.</p>

.specialtext .featured {font-size:120%}

多个类名,如这里的specialtext和featured,放在同一对引号里,用空格分隔。实际上,更准确的说法,就应该是HTML的class属性可以有多个空格分隔的值。要选择同时存在这两个类名的元素,可以这样写:

ID与类的写法相似,而且表示ID选择符的#(井号)的用法,也跟表示类选择符的.(句号)类似。

如果有一个段落像下面这样设定了ID属性

那么,相应的ID选择符就是这样的:

#specialtext {CSS样式声明}

ID的用途是在页面标记中唯一地标识一个特定的元素。它能够为我们编写CSS规则提供必要的上下文,排除无关的标记,而只选择该上下文中的标签。

相对来说,类是可以应用给任意多个页面中的任意多个HTML元素的公共标识符,以便我们为这些元素应用相同的CSS样式。而且,使用类也让为不同标签名的元素应用相同的样式成为可能。

规则一:包含ID的选择符胜过包含类的选择符,包含类的选择符胜过包含标签名的选择符。

规则二:如果几个不同来源都为同一个标签的同一个属性定义了样式,行内样式胜过嵌入样式,嵌入样式胜过链接样式。在链接的样式表中,具有相同特指度的样式,后声明的胜过先声明的。

规则三:设定的样式胜过继承的样式,此时不用考虑特指度(即显式设定优先)。

1、块级标签转换为行内标签:display:inline

2、行内标签转换为块级标签:display:block

3、转换为行内块标签:display:inline-block

通过对上面css的分析,我们可以初步理解class样式的设置以及对display属性的理解。

首先,我们画一个div,给div加上border,看看盒子模型本来的样子

梯形:

由此可见,css绘制的梯形并不是一个容器,只是容器的一条边。css把容器的其余三条边设置为透明的,只显示需要的一条边,就是一个梯形了。

直角梯形

三角形

盒子模型分为两种,一种是border-box,一种是center-box。低版本的ie中是border-box,在新的浏览器中,我们可以把容器的宽高设计为0或者特地设置box-sizing: border-box。

来看看border-box的效果:

由此可见,当设置为border-box时,border的大小包含在容器大小之内,我们可以通过显示某条边来制作三角形

border-box画直角三角形

center-box:

与border-box一样,可以根据控制border的width和方向来画出自己想要的三角形