CSS核心基础
CSS样式规则
选择器{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}
CSS代码结构中的特点
CSS样式中的选择器严格区分大小写,属性和值不区分大小写,按照书写习惯一般将“选择器、属性和值”都采用小写的方式。
多个属性之间必须用英文状态下的分号隔开,最后一个属性后的分号可以省略,但是,为了便于增加新样式最好保留。
如果属性的值由多个单词组成且中间包含空格,则必须为这个属性值加上英文状态下的引号。
在编写CSS代码时,为了提高代码的可读性,通常会加上CSS注释。
在CSS代码中空格是不被解析的,花括号以及分号前后的空格可有可无。
属性和属性值之间不允许出现空格,否则浏览器会报错
引入CSS样式表
优先级:
如果三种样式同时控制我们的内容:行内优先级最高
外部样式,内部样式:谁离着内容近,谁优先级高
1、行内式
行内式也称为内联样式,是通过标记的style属性来设置元素的样式
<标记名 style="属性1:属性值1; 属性2:属性值2; 属性3:属性值3;"> 内容 </标记名>
style是标记的属性,实际上任何HTML标记都拥有style属性,用来设置行内式。其中属性和值的书写规范与CSS样式规则相同,行内式只对其所在的标记及嵌套在其中的子标记起作用。
2、内嵌式
内嵌式是将CSS代码集中写在HTML文档的<head>头部标记中,并且用<style>标记定义
<style>标记定义,其基本语法格式如下:
<head>
<style type="text/css">
选择器 {属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}
</style>
</head>
<style>标记一般位于<head>标记中<title>标记之后,也可以把他放在HTML文档的任何地方。
3、链入式
链入式是将所有的样式放在一个或多个以.css为扩展名的外部样式表文件中,通过<link />标记将外部样式表文件链接到HTML文档中
<head>
<link href="CSS文件的路径" type="text/css" rel="stylesheet" />
</head>
<link />标记需要放在<head>头部标记中,并且必须指定<link />标记的三个属性
href:定义所链接外部样式表文件的URL,可以是相对路径,也可以是绝对路径。
type:定义所链接文档的类型,在这里需要指定为“text/css”,表示链接的外部文件为CSS样式表。
rel:定义当前文档与被链接文档之间的关系,在这里需要指定为“stylesheet”,表示被链接的文档是一个样式表文件。
4、导入式
导入式与链入式相同,都是针对外部样式表文件的。对HTML头部文档应用style标记,并在<style>标记内的开头处使用@import语句,即可导入外部样式表文件
<style type="text/css" >
@import url(css文件路径);或 @import "css文件路径";
/* 在此还可以存放其他CSS样式*/
</style>
style标记内还可以存放其他的内嵌样式,@import语句需要位于其他内嵌样式的上面。
CSS基础选择器
概述
要想将CSS样式应用于特定的HTML元素,首先需要找到目标元素
在CSS中执行这一任务的样式规则部分被称为选择器
1、标记(元素)选择器
标签名{
}
是指用HTML标记名称作为选择器,按标记名称分类,为页面中某一类标记指定统一的CSS样式
标记名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
例如:p{ font-size:12px; color:#666; font-family:"微软雅黑";}
最大的优点是能快速为页面中同类型的标记统一样式,同时这也是他的缺点,不能设计差异化样式。
2、类选择器
前提:标签内有class
.class值{
}
类选择器使用“.”(英文点号)进行标识,后面紧跟class类名
.类名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
最大的优势是可以为元素对象定义单独或相同的样式
3、 id选择器
#id值{
}
使用“#”进行标识,后面紧跟id名
#id名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
id选择器和类选择器的值不能以数字开头;用字母开头 a12 12a(不行)
id名即为HTML元素的id属性值,大多数HTML元素都可以定义id属性,元素的id值是唯一的,只能对应于文档中某一个具体的元素。
4、通配符选择器
用“*”号表示,他是所有选择器中作用范围最广的,能匹配页面中所有的元素
*{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
使用通配符选择器定义CSS样式,清除所有HTML标记的默认边距
* {
margin: 0; /* 定义外边距*/
padding: 0; /* 定义内边距*/
}
属性选择器
标签名[标签属性='值'] {
}
概述
在标签后面使用中括号标记
是对“元素选择器”的扩展,对一组标签进一步过滤
语法格式
标签名[标签属性='标签属性值']{属性名:属性值;……}
包含选择器
外层标签 内层标签{
}
概述
两个标签之间使用空格,给指定父标签的后代标签设置样式,可以方便在区域内编写
语法格式
父标签 后代标签{属性名:属性值;……}
CSS文本样式
CSS字体样式属性
1、font-size:字号大小
用于设置字号,该属性的值可以使用相对长度单位,也可以使用绝对长度单位
相对长度单位比较常用,推荐使用像素单位px,绝对长度单位使用较少
em 相对于当前对象内文本的字体尺寸
px 像素,最常用,推荐使用
绝对长度单位 说明
in 英寸
cm 厘米
mm 毫米
pt 点
2、font-family:字体
用于设置字体。网页中常用的字体有宋体、微软雅黑、黑体等
将网页中所有段落文本的字体设置为微软雅黑
p{ font-family:"微软雅黑";}
可以同时指定多个字体,中间以逗号隔开,表示如果浏览器不支持第一个字体,则会尝试下一个
例如:body{font-family:"华文彩云","宋体","黑体";}
注意
各种字体之间必须使用英文状态下的逗号隔开。
中文字体需要加英文状态下的引号,英文字体一般不需要加引号。当需要设置英文字体时,英文字体名必须位于中文字体名之前。
如果字体名中包含空格、#、$等符号,则该字体必须加英文状态下的单引号或双引号,例如font-family: "Times New Roman";。
尽量使用系统默认字体,保证在任何用户的浏览器中都能正确显示。
3、font-weight:字体粗细
用于定义字体的粗细,其可用属性值:normal(默认)、bold(粗体)、bolder(更粗)、lighter(更细)、100~900(100的整数倍)【400等同于normal,700等同于bold】
4、font-variant:变体
用于设置变体(字体变化),一般用于定义小型大写字母,仅对英文字符有效
其可用属性值:
normal:默认值,浏览器会显示标准的字体。
small-caps:浏览器会显示小型大写的字体,即所有的小写字母均会转换为大写。但是所有使用小型大写字体的字母与其余文本相比,其字体尺寸更小。
5、font-style:字体风格
用于定义字体风格,如设置斜体、倾斜或正常字体,其可用属性值:
normal:默认值,浏览器会显示标准的字体样式。
italic:浏览器会显示斜体的字体样式。
oblique:浏览器会显示倾斜的字体样式。
6、font:综合设置字体样式
选择器{font: font-style font-variant font-weight font-size/line-height font-family;}
必须按上面语法格式中的顺序书写,各个属性以空格隔开。
其中不需要设置的属性可以省略(取默认值),但必须保留font-size和font-family属性,否则font属性将不起作用。
例如:
p{ font-family:Arial,"宋体"; font-size:30px; font-style:italic; font-weight:bold;
font-variant:small-caps; line-height:40px;}
等价于
p{ font:italic small-caps bold 30px/40px Arial,"宋体" ;}
CSS文本外观属性
1、color:文本颜色
预定义的颜色值,如red,green,blue等。
十六进制,如#FF0000,#FF6600,#29D794等。实际工作中,十六进制是最常用的定义颜色的方式。
RGB代码,如红色可以表示为rgb(255,0,0)或rgb(100%,0%,0%)。
需要注意的是,如果使用RGB代码的百分比颜色值,取值为0时也不能省略百分号,必须写为0%。
2、letter-spacing:字间距
所谓字间距就是字符与字符之间的空白。其属性值可为不同单位的数值,允许使用负值,默认为normal。
3、word-spacing:单词间距
用于定义英文单词之间的间距,对中文字符无效。和letter-spacing一样,其属性值可为不同单位的数值,允许使用负值,默认为normal。
word-spacing和letter-spacing均可对英文进行设置。不同的是letter-spacing定义的为字母之间的间距,而word-spacing定义的为英文单词之间的间距。
4、line-height:行间距
用于设置行间距,就是行与行之间的距离,即字符的垂直间距,一般称为行高
常用的属性值单位有三种,分别为像素px,相对值em和百分比%,实际工作中使用最多的是像素px。
5、text-transform:文本转换
用于控制英文字符的大小写,其可用属性值:
none:不转换(默认值)。
capitalize:首字母大写。
uppercase:全部字符转换为大写。
lowercase:全部字符转换为小写。
6、text-decoration:文本装饰
用于设置文本的下划线,上划线,删除线等装饰效果,其可用属性值如下:
none:没有装饰(正常文本默认值)。
underline:下划线。
overline:上划线。
line-through:删除线。
text-decoration后可以赋多个值,用于给文本添加多种显示效果,例如希望文字同时有下划线和删除线效果,就可以将underline和line-through同时赋给text-decoration。
7、text-align:水平对齐方式
用于设置文本内容的水平对齐,相当于html中的align对齐属性。其可用属性值如下:
left:左对齐(默认值)
right:右对齐
center:居中对齐
例如:h2{ text-align:center;}
8、text-indent:首行缩进
用于设置首行文本的缩进,其属性值可为不同单位的数值、em字符宽度的倍数、或相对于浏览器窗口宽度的百分比%,允许使用负值, 建议使用em作为设置单位。
9、white-space:空白符处理
其属性值如下:
normal:常规(默认值),文本中的空格、空行无效,满行(到达区域边界)后自动换行。
pre:预格式化,按文档的书写格式保留空格、空行原样显示。
nowrap:空格空行无效,强制文本不能换行,除非遇到换行标记<br />。内容超出元素的边界也不换行,若超出浏览器页面则会自动增加滚动条。
CSS高级特性
CSS复合选择器
复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的
1、标签指定式选择器
又称交集选择器,由两个选择器构成,其中第一个为标记选择器,第二个为class选择器或id选择器,两个选择器之间不能有空格,如h3.special或p#one。
2、后代选择器
用来选择元素或元素组的后代,其写法就是把外层标记写在前面,内层标记写在后面,中间用空格分隔。当标记发生嵌套时,内层标记就成为外层标记的后代。
3、并集选择器
是各个选择器通过逗号连接而成的,任何形式的选择器(包括标记选择器、class类选择器id选择器等),都可以作为并集选择器的一部分。如果某些选择器定义的样式完全相同,或部分相同,就可以利用并集选择器为它们定义相同的CSS样式。
层叠性
是指多种CSS样式的叠加。例如,当使用内嵌式CSS样式表定义<p>标记字号大小为12像素,链入式定义<p>标记颜色为红色,那么段落文本将显示为12像素红色,即这两种样式产生了叠加。
继承性
是指书写CSS样式表时,子标记会继承父标记的某些样式,如文本颜色和字号。想要设置一个可继承的属性,只需将它应用于父元素即可。
不具有继承性:边框、外边距、内边距、背景、定位、布局、元素宽高属性。
CSS优先级
定义CSS样式时,经常出现两个或更多规则应用在同一元素上,这时就会出现优先级的问题。
p{ color:red;} /*标记样式*/
.blue{ color:green;} /*class样式*/
#header{ color:blue;} /*id样式*/
对应的HTML结构为:
<p id="header" class="blue">
帮帮我,我到底显示什么颜色?
</p>
标记选择器具有权重1,类选择器具有权重10,id选择器具有权重100。因此文本显示为蓝色
继承样式的权重为0。即在嵌套结构中,不管父元素样式的权重多大,被子元素继承时,他的权重都为0,也就是说子元素定义的样式会覆盖继承来的样式。
strong{ color:red;}
#header{ color:green;}
对应的HTML结构为:
<p id="header" class="blue">
<strong>继承样式不如自己定义</strong>
</p>
虽然#header具有权重100,但被strong继承时权重为0,而strong选择器的权重虽然仅为1,但它大于继承样式的权重,所以页面中的文本显示为红色。
行内样式优先。应用style属性的元素,其行内样式的权重非常高,可以理解为远大于100。总之,他拥有比上面提高的选择器都大的优先级。
权重相同时,CSS遵循就近原则。也就是说靠近元素的样式具有最大的优先级,或者说排在最后的样式优先级最大
CSS定义了一个!important命令,该命令被赋予最大的优先级。也就是说不管权重如何以及样式位置的远近,!important都具有最大优先级。