CSS基础
1. 概述
CSS 主要是用于定义 HTML 内容在浏览器内的显示样式,如文字大小、颜色、字体和粗细等。使用 CSS 的好处是通过定义某个样式,可以让网页上不同位置的文字有着统一的字体。
例题如:
-
将段落中的文字大小改为
20px并加粗,同时颜色设为红色。p{
font-size:20px;
color:red;
font-weight:bold;
} -
将一个段落中某些不连续的内容设置为同一格式(字体颜色为红色)。
span{
color:red;
}
2. 语法
-
语法概述
CSS 样式由选择符和声明组成,其中声明又由属性和值组成。如在 CSS 语句p{color:red}中,p是选择符,{color:red;}是声明,声明又由属性color和值red组成。
声明中的属性和值组成的键值对的个数可以有多个。
如:p{
cont-size:12px;
color:red; # 声明中的最后一个属性可以没有分号,但是为了以后修改方便一般也加上分号
} -
注释语句
和 HTML 代码一样,CSS 中也有注释语句,在 CSS 中用
/*content*/来为代码注释。
3. CSS 样式基本知识
CSS 样式可以写在 HTML 标签中,也可以写在 HTML 文件中,还可以写在外部的 CSS 文件中,根据 CSS 存放的位置我们可以将其划分为 内联式、嵌入式和外部式三种。
-
内联式 CSS,直接写在现有的 HTML 标签中
如:
HelloWorld
-
嵌入式 CSS,写在 HTML 页面中
当一个 HTML 页面中的多个地方需要设置相同的格式,我们可以在 HTML 页面中另外设置一个
<style>标签,并在该标签内定义 CSS 样式,同时在需要使用该样式的内容中引用该样式即可。
如:
HelloWolrd
-
外部式 CSS,写在单独的 CSS 文件中
外部式 CSS 可以将各种样式的定义都写在一个 CSS 文件中,并且在需要引用的 HTML 文件中通过
<link>标签引用该样式。
如:
<link href='base.css' rel='stylesheet' type='text/css'/>,其中,rel='stylesheet' type='text/css'是固定写法不可变。
<link>标签一般写在<head>标签之内。base.css
span{
font-size:12px;
color:red;
}index.html
外部式css样式
Hello,World
-
三种方法的优先级
结论先摆出来:
内联式 > 嵌入式 > 外部式,实际上也是秉承一个"就近原则"。
4. 选择器
-
什么是选择器
选择器就是标识每个样式的字符串组合,如:
body{
color:red;
font-size:12px;
}中,
body就是选择器。 -
标签选择器
标签选择器,其实就是用 HTML 代码中的标签作为选择器。如:
p{
font-size:12px;
}
h1{
color:red;
font-weight:normal;
} -
类选择器
类选择器在 CSS 样式编码中是最常用到的,其语法为:
.类选择器名{css样式代码}
注意是以英文圆点开头,类选择器名可以随便起,但不能起中文名。
如:/* 定义样式 */
.question-id{
font-size:12px;
color:red;
}/* 引用样式 */
我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。
-
ID 选择器
ID 选择器的作用在大多数情况下都类似于类选择器,不过与类选择器存在如下差别:
1.定义时要用#开头而不是英文圆点
2.引用时要指定id=id_name而不是class=class_name
如:/* 定义样式 */
#setGreen{
color:green;
}/* 引用样式 */
我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。
-
类选择器和 ID 选择器的区别
相同点:可以应用于任何元素
不同点:
① ID 选择器只能在一个 HTML 文档中使用 1 次,类选择器可以使用多次
② 类选择器可以词列表方法为一个元素同时设置多个样式,如<p class="font-big color-red"></p>而 ID 选择器不可以。 -
子选择器
子选择器是作用于让某个类选择器下的第一级指定标签,用
>号指定,如:.food>li{
border:1px solid red;
}的作用是,让引用了
food类的标签下的第一级<li>标签呈现样式所定义的效果。 -
包含选择器
在子选择器的基础之上,不仅对一级指定标签生效,还对所有指定标签生效,用空格指定而不是
>号指定。如:.food li{
border:1px solid red;
}的作用是,让引用了
food类的标签下所有的<li>标签呈现样式所定义的效果。 -
通用选择符
通用选择器的作用是匹配 HTML 中所有的标签元素,如
* {color:red}该代码会将 HTML 中所有的标签内元素都设置为红色。 -
伪类选择符
伪类选择器为 HTML 中标签下不存在的状态(如鼠标滑过的状态)设置样式,如:给 HTML 中的一个标签设置鼠标滑过时的样式应该这么写
a:hover{color:red},该代码为<a>标签处于鼠标滑过状态设置颜色为红色的样式。到目前为止,可以兼容所有浏览器的伪类选择符只有
a:hover,当然还有其他一些伪类选择符也可以兼容部分浏览器和标签。 -
分组选择符
当你想为 HTML 中的多个标签使用同一种样式时,可以使用分组选择符,如下所示:
h1,a,p,span{
color:red;
}中间用
,号隔开,即可为h1apspan标签同时设置color:red;样式。
5. 继承、层叠和特殊性
-
继承
CSS 的某些样式是具有继承特性的,即该样式不仅作用于指定标签(或者引用了该样式的标签),还作用于该标签下的子标签,如:
p{color:red}
我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。
定义的样式
p{color:red}不仅作用于<p>标签本身,还作用于<p>标签下的<span>标签。
但是,不是所有的样式都具备继承性,如border:1px solid red就不具备继承性。 -
层叠
层叠就是在 HTML 文件中对于同一个元素,当定义了多个权重相同的样式时,会根据这些样式的前后顺序来决定使用的样式,如:
p{color:red;}
p{color:green;}我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。
那么,段落
<p>则会被设置为绿色,可以理解为后面定义的会把前面定义的样式覆盖掉,所以也是就近原则吧。这里再复习一下各种样式的优先级:内联式 > 嵌入式 > 外部式。 -
特殊性
有时候我们为同一个元素设置了不同的 CSS 样式,那么该元素究竟用哪一个样式呢?如下所示:
p{color:red}
.first{color:green}我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。
实际上,该元素采用的 CSS 样式根据定义的权值而定,权值高的被采用。权值规则如下所示:
p{color:red;} /权值为1/
p span{color:green;} /权值为1+1=2/
.warning{color:white;} /权值为10/
p span.warning{color:purple;} /权值为1+1+10=12/
#footer .note p{color:yellow;} /权值为100+10+1=111/此外,继承也有权值但是很低,有的文献提出它只有 0.1 。
-
重要样式
在设计网页时,有时候需要对定义的某些样式设置最高权值,怎么办?可以使用
important关键字来解决。如下:p{color:red!important;}
p{color:green}我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。
6. 格式化排版
6.1 文字排版
我们可以利用 CSS 样式为网页中的文字设置字体、字号、颜色等样式属性。
-
设置字体
body{font-family:"宋体";}
body{font-family:"Microsoft-Yahei";}
body{font-family:"微软雅黑";}其中,用英文兼容性比中文要好一点。
注意:不建议设置不常用字体,因为如果浏览器上没有安装你设置的字体,那么就会显示默认字体。 -
设置字号和颜色
p{
font-size:20px;
color:#666;
} -
斜体加粗下划删除线s
p span{
font-weight:bold; /* 加粗 /
font-style:italic; / 斜体 /
text-decoration:underline; / 下划线 /
text-decoration:line-through; / 删除线 */
}
6.2 段落排版
-
缩进
p{text-indent:2em;}
菲茨杰拉德,二十世纪美国文学巨擘之一,兼具作家和编剧双重身份。他以诗人的敏感和戏剧家的想象为"爵士乐时代"吟唱华丽挽歌,其诗人和梦想家的气质亦为那个奢靡年代的不二注解。
菲茨杰拉德,二十世纪美国文学巨擘之一,兼具作家和编剧双重身份。他以诗人的敏感和戏剧家的想象为"爵士乐时代"吟唱华丽挽歌,其诗人和梦想家的气质亦为那个奢靡年代的不二注解。
-
行间距(行高)
p{line-height:1.5em;}
菲茨杰拉德,二十世纪美国文学巨擘之一,兼具作家和编剧双重身份。他以诗人的敏感和戏剧家的想象为"爵士乐时代"吟唱华丽挽歌,其诗人和梦想家的气质亦为那个奢靡年代的不二注解。
-
汉字和字母间距
h1{
letter-spacing:20px; /* 字(母)间距 /
word-spacing:20px; / 单词间距 */
}汉字和字母间距用
letter-spacing,单词间距用word-spacing。 -
对齐
为块状元素(后面会介绍到)中的文字、图片设置对齐方式(左右对齐或居中),可以使用
text-align来指定:p{
text-align:center; /* 居中 /
text-align:left; / 左对齐 /
text-align:right; / 右对齐 */
}
7. 盒模型
7.1 元素介绍
在讲盒模型之前,先介绍一下 HTML 的标签元素大概分为 3 类:块状元素、内联元素(行内元素)和内联块状元素。
-
常见元素
常见的块状元素有:
<div> <p> <h1>...<h6> <ol> <ul> <dl> <table> <address> <blockquote> <form>。常见的内联元素有:
<a> <span> <br> <i> <em> <strong> <label> <q> <var> <cite> <code>。常见的内联块状元素有:
<img> <input> -
块状元素
特点:
① 每个块级元素都从新的一行开始,其后的元素也另占一行;
② 元素的高度、宽度、行高以及顶和底部边距都可设置;
③ 元素宽度在不设置的情况下,默认为其父容器的 100% 。将元素设置为块级元素:使用
display:block关键字可以将元素设为块级元素,如下所示:a{
display:block;
}可将内联元素
<a>设置为块级元素。 -
内联元素
特点:
① 和其他元素在同一行上;
② 元素的高度、宽度、顶部和底部的边距不可设置;
③ 元素的宽度就是他包含的文字或图片的宽度,不可改变。将元素设置为内联元素:使用
display:inline关键字可以将元素设为内联元素,如下所示:div{
display:inline;
}可将块级元素
<div>设置为内联元素。 -
内联块状元素
特点:
① 和其他元素都在一行上;
② 元素的高度、宽度、行高以及顶和底部边距都可设置;将元素设置为内联块状元素:使用
display:inline-block关键字可以将元素设为内敛块状元素,如下所示:a{
display:inline-block; /设置为内敛块状元素/
width:50px; /在默认情况下宽度不起作用/
height:50px; /在默认情况下高度不起作用/
background:pink; /设置背景颜色为粉色/
text-align:center; /设置文本居中显示/
}
7.2 盒子模型
-
概述
盒内边距用
padding,盒间边距用margin,盒边框用border表示。其中,
padding和margin还细分为pading-toppadding-bottompading-leftpadding-right和margin-topmargin-bottommargin-leftmargin-right四个填充。一般的块级标签都具备盒子模型的特征。
-
边框(完全)
盒子模型的边框就是围绕着内容的线,这条线你可以设置它的粗细、样式和颜色。如下:
/* 可以合并写 /
div{
border:2px solid red;
}
/ 还可以分开写 */
div{
border-width:2px;
border-style:solid;
border-color:red;
}其中,
border代表边框,2px代表粗细,solid代表样式,red代表颜色。①
border-width中的宽度可以设置为thinmediumthick,但最常用的还是px
②border-style中的样式可以设置为dashed(虚线)dotted(点线)和solid(实线)
③border-color:#666还可以设置为十六进制颜色,但不要忘记加#号。 -
边框(非完全)
如果想要为盒子单独设置下边框而不是完全的边框,可以指定
border的作用位置,如:p{border-bottom:2px dotted red}。
其他三边可以如下设置:p{
border-top:2px dashed #666;
border-left:1px solid #9b9b9b;
border-right:3px dotted blue;
} -
宽和高
一个元素的实际宽度(盒子的宽度) = 左边界 + 左边框 + 左填充 + 内容宽度 + 右填充 + 右边框 + 右边界。
元素的高度也是同理。如下图代码:/* CSS 代码 */
div{
width:200px;
padding:20px;
border:1px solid red;
margin:10px;
}/* HTML 代码 */
文本内容
查看元素模型如下图所示:
![盒子元素]()
-
填充(padding)
元素的内容与边框之间的距离是可以设置的,称为填充,填充也可分为上右下左(顺时针)。如:
div{padding:20px 10px 15px 30px},注意顺序不要搞乱。同样的,以上代码也可以分开写:
div{
padding-top:20px;
padding-right:10px;
padding-bottom:15px;
padding-left:30px;
}如果上下左右都为
10px还可以这么写:div{padding:10px;};
如果上下为10px左右为20px可以这么写:div{padding:10px 20px;} -
边界(margin)
元素与元素之间的距离可以使用边界(margin)来设置,边界也可以分为
上右下左。如:div{margin:20px 10px 15px 30px;}同样的,以上代码也可以分开写:
div{
margin-top:20px;
margin-right:10px;
margin-bottom:15px;
margin-left:30px;
}如果上下左右都为
10px还可以这么写:div{margin:10px;};
如果上下为10px左右为20px可以这么写:div{margin:10px 20px;}
8. CSS 布局
CSS 中关于布局模型一共有 3 种,分别是 flow(流动型) float(浮动型) 和 layer(层型)。那么这三个模型到底是什么样的呢?
-
流动模型(flow)
流动模型是默认的网页布局模式。其具有 2 个比较典型的特征:
① 块状元素默认占据一行,就算该块状元素只有一个文字,也会占据整行内容,多个块状一起的时候,会按顺序垂直向下;
② 内联元素不像块状元素那样霸道,可以多个元素共存于一行。总的来说就是:块状元素独占一行,内联元素共存一行。
-
浮动模型(float)
上面提到,块状元素独占一行。但是如果希望两个块状元素并排显示,可以设置元素浮动。任何元素在默认情况下是不能浮动的,但是可以用 CSS 定义为浮动。如下所示:
div{
width:20px;
height:20px;
border:1px solid red;
float:left;
}以上 CSS 代码的效果是:两个
div标签并排显示。若有div1和div2标签,可以利用一下代码实现一左一右显示:div{
width:20px;
height:20px;
border:1px red solid;
}div1
div2
以上代码可以显示挨在一块的
div1和div2两标签并排并一左一右显示。 -
层模型(layer)
类似 Photoshop 中非常流行的图层编辑功能,层模型可以实现将元素显示在网页上的任何位置,CSS 定义了一组定位属性来支持元素的层模型精准定位。
层模型一共有 3 种形式:
① 绝对定位(position:absolute)
② 相对定位(position:relative)
③ 固定定位(position:fixed)其中:
绝对定位:可以将元素从文档流中拖出来,然后使用leftrighttopbottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果没有这样的包含块,则相对于body元素,即浏览器窗口。如下定义:div{
width:200px;
height:200px;
border:1px solid red;
position:absolute;
left:100px;
top:50px;
}/* 将 div 标签定义为宽高都是200px且距离父元素左边距100px上边距50px的元素 */
相对定位:实际上是相对于以前的位置进行重新定位。absolute表里如一,移动了就是移动了。relative只是表面显示移动了,但实际还在文档流中原有位置,别的元素无法占据。
固定定位:在浏览器的固定位置,不会随着浏览器窗口滚动条的滚动而变化。


浙公网安备 33010602011771号