css工作原理

html-css016

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属性的理解。

box-shadow:none|shadow

它的值包括 6 个参数:阴影类型,X轴位移,Y轴位移,阴影大小,阴影扩展和阴影颜色。此 6 个参数可以有选择地省略。

浏览器兼容性

Webkit支持:-webkit-box-shadow

Mozilla支持:-moz-box-shadow

IE9支持:box-shadow

IE8及以前:不支持

实用实例

简单效果:

img{

height:300px

-moz-box-shadow:5px 5px

-webkit-box-shadow:5px 5px

box-shadow:5px 5px

}

虚阴影效果:

img{

height:300px

-moz-box-shadow:2px 2px 10px #06c

-webkit-box-shadow:2px 2px 10px #06c

box-shadow:2px 2px 10px #06c

}

渐变阴影效果:

img{

height:300px

-moz-box-shadow:0 0 10px #06c

-webkit-box-shadow:0 0 10px #06c

box-shadow:0 0 10px #06c

}

带光晕效果

img{

height:300px

-moz-box-shadow:0 0 10px 10px #06c

-webkit-box-shadow:0 0 10px 10px #06c

box-shadow:0 0 10px 10px #06c

}

内阴影效果

img{

height:300px

-moz-box-shadow:inset 5px 5px 10px #06c

-webkit-box-shadow: inset 5px 5px 10px #06c

box-shadow: inset 5px 5px 10px #06c

}

彩色阴影

img{

height:300px

-moz-box-shadow:0 0 10px red,

2px 2px 10px 10px yellow,

4px 4px 12px 12px green

-webkit-box-shadow:0 0 10px red,

2px 2px 10px 10px yellow,

4px 4px 12px 12px green

box-shadow:0 0 10px red,

2px 2px 10px 10px yellow,

4px 4px 12px 12px green

}

在“CSS盒子模型”理论中,所有页面中的元素都可以看成一个盒子,并且占据着一定的页面空间。

一个页面由很多这样的盒子组成,这些盒子之间会互相影响,因此掌握盒子模型需要从两个方面来理解:一是理解单独一个盒子的内部结构,二是理解多个盒子之间的相互关系。

每个元素都看成一个盒子,盒子模型是由content(内容)、padding(内边距)、margin(外边距)和border(边框)这四个属性组成的。此外,在盒子模型中,还有宽度width和高度height两大辅助性属性。

记住,是所有的元素都可以看出一个盒子!

下图为一个CSS盒子模型的内部结构: