css怎么理解啊??

html-css09

css怎么理解啊??,第1张

CSS之入门篇——推荐新手

关于CSS样式表

一.在学习css之前你应该掌握哪些基础知识

1.什么是网页,什么是超文本语言(html)。

2.会使用Dreamweaver等常用的网页编辑器。

Dreamweaver是现今最好的网站编辑工具之一,而Dreamweaver8增加的对CSS的支持更是你容易得来使用CSS,用它来给制作网页的CSS样式表会更简单、更方便。本教程教你如何利用Dreamweaver8在页面中加入CSS,你不用死记硬背的记代码标记,也不用去看很厚的CSS手册,你就可以轻松自如的在网页中运用CSS。不过首先你要对CSS有一定的了解。因此,本教程的前面4章为CSS理论知识,主要是对CSS的全面介绍,希望读者看后对CSS的语法、结构、应用有一个全面的了解;后面4章为DW实战,主要是教你如何利用Dreamweaver8灵活运用CSS在网页中。阅读此文前,你需要对HTML有一定的了解,并会使用Dreamweaver。

二.认识CSS

CSS就是Cascading Style Sheets,中文翻译为“层叠样式表”,简称样式表,它是一种制作网页的新技术。

网页设计最初是用HTML标记来定义页面文档及格式,例如标题<h1>、段落<p>、表格<table>、链接<a>等,但这些标记不能满足更多的文档样式需求,为了解决这个问题,在1997年W3C(The World Wide Web Consortium)颁布HTML4标准的同时也公布了有关样式表的第一个标准CSS1, 自CSS1的版本之后,又在1998年5月发布了CSS2版本,样式表得到了更多的充实。W3C把DHTML(Dynamic HTML)分为三个部分来实现:脚本语言(包括JavaScript、Vbscript等)、支持动态效果的浏览器(包括Internet Explorer、Netscape Navigator等)和CSS样式表。

注意:CSS需要IE4(Internet Explorer 4.0)和NC4(Netscape 4.0)以上的浏览器支持,有些效果需要更高版本的浏览器支持。

三.怎样使用CSS

如果你使用的是Dreamweaver MX 2004以上的版本,在定义文字字体、颜色、大小等属性的时候,查看一下代码你会发现有这样的一部分在head区域:

<style type="text/css">

<!--

.STYLE2 {

font-size: 16pt

font-family: "Courier New", Courier, monospace

font-weight: bold

color: #FF3300

}

-->

</style>

那么恭喜你,你已经使用了CSS设计网页。

那么除了这种调用CSS的方法外,还有别的吗?回答是“当然有了”,下面是系统介绍

标记加注法(in-line):

如果只有一个HTML标记需要设定样式,则可在该标记内,加上属性

style=" "

以个别修订样式。

页面内嵌法:

<style type="text/css"><!-- body { background : white color : black } --></style>

外部调用法:

<link rel="stylesheet" rev="stylesheet" href="css/style.css" type="text/css" media="all" />

<link rel="stylesheet" rev="stylesheet" href="css/style.css" type="text/css" media="all" />

双表法调用样式表:

<link rel="stylesheet" rev="stylesheet" href="css/style.css" type="text/css" media="all" />

<style type="text/css" media="all">@import url( css/style01.css )</style>

1. 基本语法

CSS的定义是由三个部分构成:选择符(selector),属性(properties)和属性的取值(value)。

基本格式如下:

selector {property: value}

(选择符 {属性:值})

选择符是可以是多种形式,一般是你要定义样式的HTML标记,例如BODY、P、TABLE……,你可以通过此方法定义它的属性和值,属性和值要用冒号隔开:

body {color: black}

选择符body是指页面主体部分,color是控制文字颜色的属性,black是颜色的值,此例的效果是使页面中的文字为黑色。

如果属性的值是多个单词组成,必须在值上加引号,比如字体的名称经常是几个单词的组合:

p {font-family: "sans serif"}

(定义段落字体为sans serif)

作者: 嘉年水木 封 2006-11-5 14:17 回复此发言 删除

--------------------------------------------------------------------------------

2 CSS之入门篇——推荐新手

如果需要对一个选择符指定多个属性时,我们使用分号将所有的属性和值分开:

p {text-align: centercolor: red}

(段落居中排列;并且段落中的文字为红色)

为了使你定义的样式表方便阅读,你可以采用分行的书写格式:

p

{

text-align: center

color: black

font-family: arial

}

(段落排列居中,段落中文字为黑色,字体是arial)

2. 选择符组

你可以把相同属性和值的选择符组合起来书写,用逗号将选择符分开,这样可以减少样式重复定义:

h1, h2, h3, h4, h5, h6 { color: green }

(这个组里包括所有的标题元素,每个标题元素的文字都为绿色)

p, table{ font-size: 9pt }

(段落和表格里的文字尺寸为9号字)

效果完全等效于:

p { font-size: 9pt }

table { font-size: 9pt }

3. 类选择符

用类选择符你能够把相同的元素分类定义不同的样式,定义类选择符时,在自定类的名称前面加一个点号。假如你想要两个不同的段落,一个段落向右对齐,一个段落居中,你可以先定义两个类:

p.right {text-align: right}

p.center {text-align: center}

然后用不在不同的段落里,只要在HTML标记里加入你定义的class参数:

<p class="right">这个段落向右对齐的

</p>

<p class="center">

这个段落是居中排列的

</p>

<p class="right">这个段落向右对齐的

</p>

<p class="center">

这个段落是居中排列的

</p>

注意:类的名称可以是任意英文单词或以英文开头与数字的组合,一般以其功能和效果简要命名。

类选择符还有一种用法,在选择符中省略HTML标记名,这样可以把几个不同的元素定义成相同的样式:

.center {text-align: center}

(定义.center的类选择符为文字居中排列)

这样的类可以被应用到任何元素上。下面我们使h1元素(标题1)和p元素(段落)都归为“center”类,这使两个元素的样式都跟随“.center”这个类选择符:

<h1 class="center">

这个标题是居中排列的

</h1>

<p class="center">

这个段落也是居中排列的

</p>

注意:这种省略HTML标记的类选择符是我们经后最常用的CSS方法,使用这种方法,我们可以很方便的在任意元素上套用预先定义好的类样式。

4. ID选择符

在HTML页面中ID参数指定了某个单一元素,ID选择符是用来对这个单一元素定义单独的样式。

ID选择符的应用和类选择符类似,只要把CLASS换成ID即可。将上例中类用ID替代:

<p id="intro">

这个段落向右对齐

</p>

定义ID选择符要在ID名称前加上一个“#”号。和类选择符相同,定义ID选择符的属性也有两种方法。下面这个例子,ID属性将匹配所有id="intro"的元素:

#intro

{

font-size:110%

font-weight:bold

color:#0000ff

background-color:transparent

}

(字体尺寸为默认尺寸的110%;粗体;蓝色;背景颜色透明)

下面这个例子,ID属性只匹配id="intro"的段落元素:

p#intro

{

font-size:110%

font-weight:bold

color:#0000ff

background-color:transparent

}

注意:ID选择符局限性很大,只能单独定义某个元素的样式,一般只在特殊情况下使用。

5. 包含选择符

可以单独对某种元素包含关系定义的样式表,元素1里包含元素2,这种方式只对在元素1里的元素2定义,对单独的元素1或元素2无定义,例如:

table a

{

font-size: 12px

}

在表格内的链接改变了样式,文字大小为12象素,而表格外的链接的文字仍为默认大小。

6. 样式表的层叠性

层叠性就是继承性,样式表的继承规则是外部的元素样式会保留下来继承给这个元素所包含的其他元素。事实上,所有在元素中嵌套的元素都会继承外层元素指定的属性值,有时会把很多层嵌套的样式叠加在一起,除非另外更改。例如在DIV标记中嵌套P标记:

作者: 嘉年水木 封 2006-11-5 14:17 回复此发言 删除

--------------------------------------------------------------------------------

3 CSS之入门篇——推荐新手

div { color: redfont-size:9pt}

……

<div>

<p>

这个段落的文字为红色9号字

</p>

</div>

(P元素里的内容会继承DIV定义的属性)

注意:有些情况下内部选择符不继承周围选择符的值,但理论上这些都是特殊的。例如,上边界属性值是不会继承的,直觉上,一个段落不会同文档BODY一样的上边界值。

另外,当样式表继承遇到冲突时,总是以最后定义的样式为准。如果上例中定义了P的颜色:

div { color: redfont-size:9pt}

p {color: blue}

……

<div>

<p>

这个段落的文字为蓝色9号字

</p>

</div>

我们可以看到段落里的文字大小为9号字是继承div属性的,而color属性则依照最后定义的。

不同的选择符定义相同的元素时,要考虑到不同的选择符之间的优先级。ID选择符,类选择符和HTML标记选择符,因为ID选择符是最后加上元素上的,所以优先级最高,其次是类选择符。如果想超越这三者之间的关系,可以用!important提升样式表的优先权,例如:

p { color: #FF0000!important }

.blue { color: #0000FF}

#id1 { color: #FFFF00}

我们同时对页面中的一个段落加上这三种样式,它最后会依照被!important申明的HTML标记选择符样式为红色文字。如果去掉!important,则依照优先权最高的ID选择符为黄色文字。

7. 注释

你可以在CSS中插入注释来说明你代码的意思,注释有利于你或别人以后编辑和更改代码时理解代码的含义。在浏览器中,注释是不显示的。CSS注释以"/*" 开头,以"*/" 结尾,如下:

/* 定义段落样式表 */

p

{

text-align: center/* 文本居中排列 */

color: black/* 文字为黑色 */

font-family: arial /* 字体为arial */

}

/* 定义段落样式表 */

p

{

text-align: center/* 文本居中排列 */

color: black/* 文字为黑色 */

font-family: arial /* 字体为arial */

}

前面我们了解了CSS的语法,但要想在浏览器中显示出效果,就要让浏览器识别并调用。当浏览器读取样式表时,要依照文本格式来读,这里介绍四种在页面中插入样式表的方法:[u]链入外部样式表[/u]、[u]内部样式表[/u]、[u]导入外表样式表[/u]和[u]内嵌样式[/u]。

1. 链入外部样式表

链入外部样式表是把样式表保存为一个样式表文件,然后在页面中用<link>标记链接到这个样式表文件,这个<link>标记必须放到页面的<head>区内,如下:

<head>

……

<link href="mystyle.css" rel="stylesheet" type="text/css" media="all">

……

</head>

上面这个例子表示浏览器从mystyle.css文件中以文档格式读出定义的样式表。rel=”stylesheet”是指在页面中使用这个外部的样式表。type=”text/css”是指文件的类型是样式表文本。href=”mystyle.css”是文件所在的位置。media是选择媒体类型,这些媒体包括:屏幕,纸张,语音合成设备,盲文阅读设备等。

一个外部样式表文件可以应用于多个页面。当你改变这个样式表文件时,所有页面的样式都随之而改变。在制作大量相同样式页面的网站时,非常有用,不仅减少了重复的工作量,而且有利于以后的修改、编辑,浏览时也减少了重复下载代码。

样式表文件可以用任何文本编辑器(例如:记事本)打开并编辑,一般样式表文件扩展名为.css。内容是定义的样式表,不包含HTML标记,mystyle.css这个文件的内容如下:

hr {color: sienna}

p {margin-left: 20px}

body {background-image: url("images/back40.gif")}

/*定义水平线的颜色为土黄;段落左边的空白边距为20象素;页面的背景图片为images目录下的back40.gif文件*/

2. 内部样式表

内部样式表是把样式表放到页面的<head>区里,这些定义的样式就应用到页面中了,样式表是用<style>标记插入的,从下例中可以看出<style>标记的用法:

<head>

……

<style type="text/css">

作者: 嘉年水木 封 2006-11-5 14:17 回复此发言 删除

--------------------------------------------------------------------

4 CSS之入门篇——推荐新手

hr {color: sienna}

p {margin-left: 20px}

body {background-image: url("images/back40.gif")}

</style>

……

</head>

注意:有些低版本的浏览器不能识别style标记,这意味着低版本的浏览器会忽略style标记里的内容,并把style标记里的内容以文本直接显示到页面上。为了避免这样的情况发生,我们用加HTML注释的方式(<!-- 注释 -->)隐藏内容而不让它显示:

<head>

……

<style type="text/css">

<!--

hr {color: sienna}

p {margin-left: 20px}

body {background-image: url("images/back40.gif")}

-->

</style>

……

</head>

3. 导入外部样式表

导入外部样式表是指在内部样式表的<style>里导入一个外部样式表,导入时用@import,看下面这个实例:

<head>

……

<style type=”text/css”>

<!--

@import “mystyle.css”

其他样式表的声明

-->

</style>

……

</head>

例中@import “mystyle.css”表示导入mystyle.css样式表,注意使用时外部样式表的路径。方法和链入样式表的方法很相似,但导入外部样式表输入方式更有优势。实质上它相当于存在内部样式表中的。

注意:导入外部样式表必须在样式表的开始部分,在其他内部样式表上面。

4. 内嵌样式

内嵌样式是混合在HTML标记里使用的,用这种方法,可以很简单的对某个元素单独定义样式。内嵌样式的使用是直接将在HTML标记里加入style参数。而style参数的内容就是CSS的属性和值,如下例:

<p style="color: siennamargin-left: 20px">

这是一个段落

</p>

<!--这个段落颜色为土黄,左边距为20象素-->

在style参数后面的引号里的内容相当于在样式表大括号里的内容。

注意:style参数可以应用于任意BODY内的元素(包括BODY本身),除了BASEFONT、PARAM和SCRIPT。

5. 多重样式表的叠加

上一章里我们已经提到样式表的层叠顺序,这里我们讨论插入样式表的这几种方法的叠加,如果在同一个选择器上使用几个不同的样式表时,这个属性值将会叠加几个样式表,遇到冲突的地方会以最后定义的为准。例如,我们首先链入一个外部样式表,其中定义了h3选择符的color 、text-alig和font-size属性:

h3

{

color: red

text-align: left

font-size: 8pt

}

/*标题3的文字颜色为红色;向左对齐;文字尺寸为8号字*/

然后在内部样式表里也定义了h3选择符的text-align和font-size属性:

h3

{

text-align: right

font-size: 20pt

}

/*标题3文字向右对齐;尺寸为20号字*/

那么这个页面叠加后的样式就是:

color: red

text-align: right

font-size: 20pt

/*文字颜色为红色;向右对齐;尺寸为20号字*/

字体颜色从外部样式表里保留下来,而对齐方式和字体尺寸都有定义时,按照后定义的优先而依照内部样式表。

注意:依照后定义的优先,所以优先级最高的是[s]内嵌样式[/s],[s]内部样式表[/s]高于[s]导入外部样式表[/s],[s]链入的外部样式表[/s]和[s]内部样式表[/s]之间是最后定义的优先级高。

<link rel="stylesheet" rev="stylesheet" href="css/style.css" type="text/css" media="all" />

<style type="text/css" media="all">@import url( css/style01.css )</style>

] 属性选择器

1) 语法:

[属性名 ]

[属性名 =”属性值” ]  

[属性名^=”属性值里的内容”]找以该值开头

[属性名$=”属性值里的内容”]找以该值结尾

[属性名*=”属性值里的内容”]找包含该值,只要包含就显示

[属性名=”属性值i”]不区分大小写

、 伪元素:

1)语法:选择器 ::before.......

2)  ::before 表示元素开头的位置添加元素和样式

<div class="box1">我是一个div</div>

::after表示元素结尾的位置添加元素和样式

::first-letter表示首字母之前添加元素和样式

::first-line首行添加样式

::selection对选中的内容添加样式

继承

---就像生活中后代会继承祖先财产一样,在网页中后代元素也会继承到祖先元素上的样式  --- 为祖先元素所设置样式,也会同时应用到其后代元素上

---继承的存在大大的简化了样式的编写

---可以只为祖先元素设置样式,即可让所有后代元素都同时具有该样式

---在开发中可以将一些公共的样式,统一设置到祖先元素上,这样即可让所有的元素都具有该样式

---并不是所有的样式都会被继承,比如 背景相关的样式 都不会继承,还有 布局相关.. .

[if !supportLists]3、[endif] 选择器权重(不选同元,同样不值)

1)当我们使用不同的选择器选择了相同的元素,而又为其同一个样式设置了不同的值,此时就发生了样式的冲突。

2)发生样式冲突时,显示那个样式,由选择器的权重决定,权重高的优先显示,这其中内联样式的优先级是最高的,一旦设置则无法在样式表中修改

3)如果为一个样式添加了 !important 则该样式会获得最高的优先级,将会优先于所有的样式显示。(慎用)

4)         !Important  ( 慎用 )

内联样式1000(1,0,0,0)

id选择器 100 (0,1,0,0)

类和伪类10 (0,0,1,0)

元素1 (0,0,0,1)

通配选择器0 (0,0,0,0)

继承来的样式,没有优先级

5)对于 复合选择器 来说,需要将所有的选择器的优先级相加然后在比较,

优先级计算时不会超过其最大的数量级, 分组选择器 中的优先级是独立计算的。

[if !supportLists]6)[endif]如果两个选择器的优先级相同,则使用靠下的样式。

[if !supportLists]7)[endif]不会跨数量级比较。例如:类只能和类比较,不能跨到Id内联选择器

[if !supportLists]4、[endif] 单位

1 )CSS像素 :在控制台显示的,不随屏幕放大而改变。

物理像素 :随屏幕放大而放大

长度单位:     1 px(像素)

-显示器上的图像是由一个一个发光的小点点构成,

这个一个小点就是一个像素

-分辨率 1366 x 768

- CSS像素,物理像素

-默认情况下,在pc中CSS像素和物理像素是相同的

-在不同的显示器下,像素的大小也不尽相同

有的显示器像素点大

有的显示器像素点小

点越小越清晰

 - 一些高清屏,会将像素放大,使一个css像素可以对应多个物理像素

例如:把屏幕放大到150%-------一个CSS 像素对应1.5倍的物理像素。

2) 百分比

2)颜色单位

CTRL+E:颜色

rgb( )

            rgba( )

            #xxxxxx

            hsl( )

            hsla( )

1.可是用颜色名来直接设置颜色 :  color: red green blue yellow orange ...

2.

1)可以使用RGB值来表示颜色

RGB值(Red Green Blue)

RGB值可以通过三种颜色不同的浓度来调配出其他的颜色

                  语法:rgb(红色,绿色,蓝色)

值的范围是0-255

[if !supportLists]2) [endif]rgba()

3、使用十六进制的rgb值

语法:#红色绿色蓝色

需要使用两位十六进制的数字来表示每种颜色的浓度

范围00 - ff

4、1)

hsl()也可以用来表示颜色

h表示色相 0 - 360

s表示饱和度 0% - 100% (值越大色越正,值越小色越灰)

l表示亮度 0% - 100%

2)hsla( )  

Fn+f12--------打开控制台

[if !supportLists]5、[endif] 盒子模型(框模型box model)  

        -浏览器在渲染页面时,它会将页面中的每一个元素都想象成是一个矩形的盒子。

-想象成盒子以后,对于页面的布局就变成了如何摆放盒子

        - 每一个盒子从内到外都有以下几个部分组成

内容区(content)

内容区决定这个盒子能装多少东西(子元素)

内边距(padding)

内容区和边框之间的距离

边框(border)

盒子的边框

外边距(margin)

盒子距离其他盒子的距离

[if !supportLists]1) [endif] 边框: 是盒子的边界,出了边框就是盒子外部的

边框相关的三个样式:

border-color边框的颜色

border-style边框的样式

border-width边框的宽度

边框会影响到盒子的可见框大小

[if !supportLists]1> [endif]border-width表示边框的宽度

-可以通过该属性分别制定边框四个方向的宽度

                    border-width: 10px 20px 30px 40px

如果我们指定了四个宽度,则会分别设置上右下左四个方向的边框的宽度

                    border-width: 10px 20px 30px

三个值:上左右下

                   border-width: 10px 20px

两个值:上下左右

                    border-width: 10px

一个值:上下左右

2>border-color边框的颜色,可以分别指定四个边的颜色

规则和border-width一样

3>border-style指定边框的样式

solid实线

dotted点状虚线

dashed虚线

double双线

不指定border-width,边框也会有一个默认宽度 一般3px

不指定颜色,不指定会默认使用字体颜色

border-style的默认值是none*/

4>边框的简写属性 border, 通过该属性可以同时设置四个方向边框的宽度、颜色、样式。并且没有顺序要求

除了border还有四个

                border-top

                border-right

                border-bottom

                border-left

5>要求只设置三条边,-------先设置四条边,在去掉一条边None。

2)内边距

边框和内容区之间的距离叫做内边距(padding)

一共有四个方向的内边距

                padding-top

                padding-right

                padding-bottom

                padding-left

还可以通过padding来同时设置四个方向的内边距,规则和border-width一样

3)外边距: 当前盒子和其他盒子之间的距离称为外边距,

1>外边距不会影响盒子的可见框的大小,会影响到盒子实际占地的大小,影响盒子的位置

2>四个方向的外边距:

                margin-top

                margin-right

                margin-bottom

                margin-left

3>由于在浏览器中默认情况下,元素是靠左靠上排列的,

                所以我们设置上左外边距时,会移动元素自身

而设置下和右外边距时,会移动其他元素

   外边距可以使负值,如果是负值则元素会向相反方向移动

简写属性,margin可以同时设置四个方向的外边距

规则和paddingyiy

4)水平布局:

子元素在父元素的位置是父元素的内容区

子元素在父元素中的水平方向的布局,必须满足如下等式:

margin-left + border-left + padding-left + width + padding-right + border-right + margin-right =父元素的width

        500

        0 0 0 100 0 0 0(400)

        0 0 0 510 0 0 0(-10)

        0 0 0 auto(500) 0 0 0

        100 0 0 auto(400) 0 0 0

        auto 0 0 100 0 0 0

        auto 0 0 100 0 0 auto

在水平方向,有三个值可以设置auto,分别是 margin-left  、 width  、 margin-right

设置为auto以后,浏览器会自动计算该属性的值

-如果七个值的和相加不等于父元素的宽度,则属于过度约束,则浏览器会自动调整右外边距的值, 所以在下边的元素即使右边有位置,也不会移上去到右边。

-如果将margin-left 或 margin-right 的一侧设置为auto, 则另一侧会设置尽量大的值

   - 如果left和right都设置auto,则会将两侧外边距设置相等的值,从而导致子元素在父元素中水平居中   margin: 0  auto

 4>上左动自己,下右挤别人

5) 默认情况下,width和height指定的是盒子内容区的大小

可以通过box-sizing来修改盒子大小的计算的方式

可选值:

content-box默认值,内容盒子(width和height指定的是内容区的大小)

border-box   width和height指定的是整个盒子的大小