网站设计基础-CSS3基础
CSS概述
CSS简介
- 层叠样式表Cascading Style Sheets)。
- 也是一种标记语言。
- 主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局和外观显示样式。
- CSS让我们的网页更加丰富多彩,布局更加灵活自如。
- CSS最大价值: 由HTML专注去做结构呈现,样式交给CSS,即结构(HTML)与样式(CSS)相分离。
CSS规则
CSS规则由两个主要的部分构成:选择器和声明。
1 | <style type="text/css"> |
CSS书写规范
CSS书写顺序
- 位置属性(position, top, right, z-index, display, float等)
- 大小(width, height, padding, margin)
- 文字系列(font, line-height, letter-spacing, color- text-align等)
- 背景(background, border等)
- 其他(animation, transition等)
CSS语法
- 命名一般为小写英文字母。
- 为了代码的易读性,在每个声明块的左花括号前添加一个空格。
- 每条声明语句的
:
后应该插入一个空格。 - 所有声明语句都应当以分号结尾。最后一条声明语句后面的分号是可选的,但是,如果省略这个分号,你的代码可能更易出错。
- 对于属性值或颜色参数,省略小于 1 的小数前面的 0 (例如,
.5
代替0.5
;-.5px
代替-0.5px
)。 - 十六进制值应该全部小写,例如,
#fff
。 - 尽量使用简写形式的十六进制值,例如,用
#fff
代替#ffffff
。 - 长度为
0
时须省略单位。 (也只有长度单位可省)。 - 当数值为
0
-1
之间的小数时,省略整数部分的0
。 - 颜色值不允许使用命名色值,RGB颜色值必须使用十六进制记号形式
#rrggbb
。不允许使用rgb()
。
CSS简单选择器
标签选择器
- 标签选择器(元素选择器)是指用HTML标签名称作为选择器。
- 标签选择器可以把某一类标签全部选择出来。
- 能快速为页面中同类型的标签统一设置样式。
- 不能设计差异化样式,只能选择全部的当前标签。
1 | p { |
类选择器
如果想要差异化选择不同的标签,单独选一个或者某几个标签,可以使用类选择器。
语法:
.类名 {
属性1: 属性值1;
…
}
例如:
1 | .red { |
可以给一个标签指定多个类名。
<div class=“box red”>红色</div>
<div class=“box green”>绿色</div>
<div class=“box red”>红色</div>
- 各个类名中间用空格隔开。
- 简单理解:就是给某个标签添加了多个类,或者这个标签有多个名字。
多类名选择器在布局复杂的情况下较多使用。
使用场景
- 把一些标签元素相同的样式(共同的部分)放到一个类里面。
- 这些标签都可以调用这个公共的类,然后再调用自己独有的类。
- 从而节省CSS代码,统一修改也非常方便。
id选择器
语法:
#id名 {
属性1: 属性值1;
…
}
例如,将id为nav元素中的内容设置为红色。
1 | #nav { |
- id选择器和类选择器最大的不同在于使用次数上。
- 类选择器(class)好比人的名字,一个人可以有多个名字,同时一个名字也可以被多个人使用。
- id 选择器好比身份证号码,唯一的,不得重复。
- id选择器的优先级别要高于class选择器的优先级。
- id属性一般在一个页面中只可以使用一次,而class可以被多次引用。目前浏览器都能允许在同一个页面内出现多个相同属性值的id,一般情况下也能正常显示,不过当使用javascript通过id来控制元素时就会出现错误。
通配符选择器
使用"*"定义,它表示选取页面中所有标签。不需要调用, 自动就给所有的元素使用样式
语法:
* {
属性1: 属性值1;
…
}
例如,清除所有的元素标签的内外边距。
1 | * { |
CSS常用样式
字体
属性名 | 描述 |
---|---|
font-family | 字体系列 |
font-size | 字体大小 |
font-style | 字体样式 |
font-variant | 以小型大写字体或正常字体显示文本 |
font-weight | 字体粗细 |
font | 复合 |
font-family
- 例如:
1 | p { |
- 可以写多个字体名称,如果浏览器不支持第一个字体,则会尝试下一个。
1 | div { |
font-size
-
绝对值,不允许用户在浏览器中更改大小
xx-small、x-small、small、medium(默认)、large、x-large、xx-large -
相对值(父元素),允许在浏览器中更改大小
larger、smaller、80% -
具体值
12px、.8em; -
px(像素)大小是网页的最常用的单位。
-
大多浏览器默认的文字大小为16px(相当于小四)。
-
常见用法是使用px、em或百分比(%)来显示字体尺寸。1em=16px。
-
不同浏览器可能默认显示的字号大小不一致,尽量给一个明确值大小,不要默认大小。
font-style
取值 | 描述 |
---|---|
normal | 默认值 |
italic | 斜体的字体样式 |
oblique | 倾斜的字体样式,让没有斜体属性的文字倾斜(有的字体没有设计斜体) |
font-weight
取值 | 描述 |
---|---|
normal | 关键字 |
bold | 关键字 |
bolder | 相对粗细值,是相对于上级元素的继承值而言的 |
lighter | 相对粗细值,是相对于上级元素的继承值而言的 |
100-900 | 数字法,包括从“100”到“900”的9个数字序列(注意,只能是100、200之类的整百数)。数字400等价于normal,而700等价于bold。 |
font-variant
值 | 描述 |
---|---|
normal | 默认值 |
small-caps | 所有的小写字母均会被转换为大写,但是与其余文本相比,其字体尺寸更小 |
font
字体复合属性可以把以上文字样式综合来写, 这样可以更节约代码。
顺序:
- font-style
- font-weight
- font-size/line-height
- font-family;
- 使用时,必须按上面的顺序书写,不能更换顺序,并且各个属性间以空格隔开。
- 不需要设置的属性可以省略(取默认值),但必须保留font-size和font-family属性,否则font属性将不起作用。
例如:
1 | p { |
可以简写为:
1 | p { |
文本
属性名 | 描述 |
---|---|
color | 设置文本颜色 |
text-align | 对齐元素中的文本 |
text-decoration | 向文本添加修饰 |
text-indent | 缩进元素中文本的首行 |
text-transform | 控制元素中的字母 |
line-height | 设置行高 |
color
颜色表达方式
- 名称:pink, blue, brown, lightseagreen等,不区分大小写(不推荐使用)
- 十六进制: #ff0000、#c700c7
- RGB:rgb(255, 0, 51)
- RGBa:设定一个颜色的透明度。0=透明;1=不透明,rgba(255,0,0,0.7)
text-align
值 | 描述 |
---|---|
left | 左对齐(默认值) |
right | 右对齐 |
center | 水平居中 |
justify | 两端对齐(将拉伸每一行,以使每一行具有相等的宽度,并且左右边距是直的) |
text-decoration
值 | 描述 |
---|---|
none | 默认(定义标准的文本) |
underline | 下划线 |
overline | 上划线 |
line-through | 删除线 |
text-indent
- 是段落的首行缩进。可以设置为负值。
- 可以使用所有长度单位、百分比值。
- 百分数是相对于父元素而言。即缩进其父元素宽度的百分比。
例如:
1 | div { |
text-transform
值 | 描述 |
---|---|
none | 默认 |
capitalize | 每个单词以大写字母开头 |
uppercase | 仅有大写字母 |
lowercase | 仅有小写字母 |
line-height
- line-height属性用于设置行高,是指文本行基线间的垂直距离。
- 基线(base line)并不是汉字文字的下端沿,而是英文字母"x"的下端沿。
- 行距 = (line-height)—(font-size)
背景
属性名 | 描述 |
---|---|
background-color | 背景颜色 |
background-image | 背景图片 |
background-attachment | 背景图像是固定或者滚动 |
background-repeat | 背景图像是否及如何重复 |
background-position | 背景图像的起始位置 |
background | 复合 |
background-image
- 默认情况下,图片放置在元素的左上角,并重复垂直和水平方向。
- 建议设置背景颜色,假如图片不可用,可使其代替。
例如:
1 | div { |
background-attachment
值 | 描述 |
---|---|
scroll | 背景图片随着页面的滚动而滚动(默认值) |
fixed | 背景图片不会随着页面的滚动而滚动 |
background-repeat
值 | 描述 |
---|---|
repeat | 默认(背景图像将在垂直方向和水平方向重复) |
repeat-x | 背景图像将在水平方向重复 |
repeat-y | 背景图像将在垂直方向重复 |
no-repeat | 背景图像将仅显示一次 |
background-position
1 | background-position: 100 50; |
参数是精确单位 :第一个是x坐标,第二个是y坐标 。如果只指定一个数值,那该数值一定是x坐标,另一个默认垂直居中 。
1 | background-position: center top; |
参数是方位名词(center、left、right、top、bottom),两个值前后顺序无关。 如果只指定了一个方位名词,另一个值省略,则第二个值默认居中对齐。
1 | background-position: center 50; |
参数是精确单位和方位名词混合使用,则第一个值是x坐标,第二个值是y坐标 。
background
- 没有特定的书写顺序。
- 一般习惯约定
background: 背景颜色 背景图片 是否平铺 是否滚动 位置; - 例如:
1 | background: transparent url(image.jpg) repeat-y fixed top; |
CSS引入方式
行内样式
行内样式是在元素标签内部的 style 属性中设定CSS 样式。适合于修改简单样式。
1 | <div style="color: red; font-size: 12px;">星垂平野阔,月涌大江流</div> |
- 在双引号中间,写法要符合 CSS 规范。
- 不推荐大量使用,只有对当前元素添加简单样式的时候,可以考虑使用。
内部样式
内部样式表是写到html页面内部。将所有的CSS代码抽取出来,单独放到一个<style>标签中。<style>标签理论上可以放在HTML文档的任何地方,但一般会放在文档的<head>标签中。
1 | <style> |
- 代码结构清晰,没有实现结构与样式完全分离。
- 这种方式是练习时常用的方式。
外部样式
实际开发都是外部样式表,适合于样式比较多的情况。样式单独写到CSS文件中,之后把CSS文件引入到HTML页面中使用。引入外部样式表分为两步:
- 新建一个后缀名为.css的样式文件,把所有CSS代码都放入此文件中。
- 在 HTML 页面中,使用<link>标签引入这个文件。
1 | <link rel="stylesheet" href="css文件路径"> |
行内样式表、内嵌样式表、外部样式表各有优势,实际的开发中常常需要混合使用:
- 有关整个网站统一风格的样式代码,放置在独立的样式文件*.css,控制多个页面。
- 某些样式不同的页面,除了链接外部样式文件,还需定义内嵌样式,控制一个页面。
- 某张网页内,部分内容"与众不同",采用行内样式。
- 对于某个HTML标签,如果有多种样式:
- 如果规定的样式没有冲突,则叠加。
- 如果有冲突,则按行内样式、内部样式、外部样式优先级显示。
CSS复合选择器
后代选择器
后代选择器又称为包含选择器,可以选择父元素里面子元素。其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。
语法: 元素1 元素2 { 样式声明 }
例如: ul li { 样式声明 } /* 选择 ul 里面所有的 li标签元素 */
- 元素1是父级,元素2是子级,最终选择的是元素2。
- 元素2可以是儿子,也可以是孙子等,只要是元素1的后代即可。
- 元素1和元素2可以是任意基础选择器。
将下面的链接文字修改为红色:
1 | <div class="nav"> |
子选择器
子元素选择器(子选择器)只能选择作为某元素的最近一级子元素。元素1和元素2中间用大于号隔开。
语法:元素1 > 元素2 { 样式声明 }
例如:div > p { 样式声明 }
/* 选择 div 里面所有最近一级 p 标签元素 */
- 元素1是父级,元素2是子级,最终选择的是元素2。
- 元素2必须是亲儿子,其孙子、重孙之类都不归他管。也可以叫"亲儿子选择器"
将下面的计算机学院文字修改为红色:
1 | <div class="hot"> |
相邻兄弟选择器
相邻兄弟选择器匹配所有作为指定元素的相邻同级的元素。
兄弟(同级)元素必须具有相同的父元素,“相邻”的意思是“紧随其后”。
语法:元素1 + 元素2 { 样式声明 }
例如:div + p { 样式声明 }
/* 选择<div>元素之后的第一个<p>元素元素 */
将下面的段落2文字修改为红色:
1 | <div> |
并集选择器
并集选择器是各选择器通过英文逗号(,)连接而成,任何形式的选择器都可以作为并集选择器的一部分。
语法:元素1,元素2 { 样式声明 }
例如:ul,div { 样式声明 }
/* 选择 ul 和 div标签元素 */
- 并集选择器可以选择多组标签, 同时为他们定义相同的样式。
- 逗号可以理解为和的意思。
- 并集选择器通常用于集体声明。
把辛弃疾的词都改为红色:
1 | <div>醉里挑灯看剑</div> |
伪类选择器
伪类选择器用于向某些选择器添加特殊的效果,例如,它可以用于:
- 设置鼠标悬停在元素上时的样式
- 为已访问和未访问链接设置不同的样式
- 设置元素获得焦点时的样式
- …
伪类选择器书写最大的特点是用冒号(:)表示,比如:hover、:first-child。
链接伪类选择器
a:link {color: #FF0000} /* 未访问的链接 */
a:visited {color: #00FF00} /* 已访问的链接 */
a:hover {color: #FF00FF} /* 鼠标移动到链接上 */
a:active {color: #0000FF} /* 选定的链接 */
- 为了确保生效,请按照顺序声明 :link-:visited-:hover-:active。
- 因为a链接在浏览器中具有默认样式,所以实际工作中都需要给链接单独指定样式。
1 | <style> |
焦点伪类选择器
:focus 伪类选择器。
用于选取获得焦点的表单元素,主要针对于表单元素来说。
1 | input:focus { |
:first-child 伪类选择器
:first-child伪类选择器。
用于选取属于其父元素的首个子元素的指定选择器。
用法:
1 | E:first-child { |
只要E元素是它的父级的第一个子元素,就选中。它必须同时满足两个条件,一个是“第一个子元素”,另一个是“这个子元素刚好是E”。
同理,:last-child 选择器用于选取其父元素的最后一个子元素的指定选择器。
1 | <style> |
1 | <style> |
1 | <style> |
1 | <style> |
元素显示模式
元素显示模式就是元素(标签)以什么方式进行显示,比如<div>自己占一行,比如一行可以放多个<span>。
块元素
常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>标签是最典型的。
特点:
- 自己独占一行。
- 高度,宽度、外边距以及内边距都可以控制。
- 宽度默认是容器(父级宽度)的100%。
- 是一个容器及盒子,里面可以放行内或者块级元素。
注意:
- 文字类的元素内不能使用块级元素。
- <p>标签主要用于存放文字,因此<p>里面不能放块级元素,特别是不能放<div>。
- 同理,<h1>~<h6>等都是文字类块级标签,里面也不能放其他块级元素。
行内元素
常见的行内元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>标签是最典型的。
特点:
- 相邻行内元素在一行上可以显示多个。
- 高、宽直接设置是无效的。
- 宽度默认就是它本身内容的宽度。
- 行内元素只能容纳文本或其他行内元素。
- 链接里面不能再放链接,特殊情况<a>里面可以放块级元素,但是给<a>转换成块级模式最安全。
1 | span { |
行内块元素
<img/>、<input/>、<td>,它们同时具有块元素和行内元素的特点。
特点:
- 和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)。
- 高度,宽度、行高、外边距以及内边距都可以控制(块级元素特点)。
- 宽度默认就是它本身内容的宽度(行内元素特点)。
元素显示模式转换
特殊情况下,我们需要元素模式的转换,简单理解: 一个模式的元素需要另外一种模式的特性 。比如想要增加链接<a>的触发范围。
- 转换为块元素:display:block;
- 转换为行内元素:display:inline;
- 转换为行内块:display: inline-block;