参考:CSS 教程
一、CSS简介
CSS 指层叠样式表 (Cascading Style Sheets)
样式定义如何显示 HTML 元素
样式通常存储在样式表中
二、CSS的使用
1.基本语法
CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明。多条声明由分号隔开。
2.使用方法
2.1 插入样式表的方法有三种
- (1)内联样式(行内样式,在 HTML 元素内部)
在相关的标签内使用样式(style)属性。Style 属性可以包含任何 CSS 属性。
请慎用这种方法,例如当样式仅需要在一个元素上应用一次时。
<p style="color:sienna;margin-left:20px">这是一个段落。</p>
- (2)内部样式表(页内样式,位于 head 标签内部)
使用<style>
标签在文档头部定义内部样式表
<head>
<style>
hr {color:sienna;}
p {margin-left:20px;}
body {background-image:url("images/back40.gif");}
</style>
</head>
- (3)外部样式表 (单独css文件,HTML使用需要用link标签)
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
注意:
- 不要在属性值与单位之间留有空格。假如你使用 “margin-left: 20 px” 而不是 “margin-left: 20px”
- 如果你使用了外部文件的样式在内部样式中也定义了该样式,则内部样式表会取代外部文件的样式。
2.2 优先级顺序
优先级逐级增加的选择器列表,其中数字 7 拥有最高的优先权:
(精确的覆盖不精确的)
1.通用选择器(*
)
2.元素(类型)选择器
3.类选择器(.
)
4.属性选择器(*[]
)
5.伪类
6.ID 选择器(#
)
7.内联样式
三、CSS选择器
1. 标签(元素/类型)选择器
例如:
html {color:black;}
p {color:gray;}
2. 类(class)选择器 (.)
.cls1 {color:black;}
3. ID选择器(#)
在JS更常用。
ID属性不要以数字开头,数字开头的ID在 Mozilla/Firefox 浏览器中不起作用。
ID不能重名。
ID选择器与类选择器的区别
ID:html不允许有相同id
类:可以为多个元素设置同一个类
- 相同点:可以应用于任何元素
- 不同点:
1、在一个HTML文档中,ID选择器只能使用一次,而且仅一次。而类选择器可以使用多次。
2、可以使用类选择器词列表方法(class=“ltd label”)为一个元素同时设置多个样式。我们可以为一个元素同时设多个样式,但只可以用类选择器的方法实现,ID选择器是不可以的(不能使用 ID 词列表)。
4. 属性选择器(*[])
可以根据元素的属性及属性值来选择元素。
例如:给含有type属性的标签边框加粗
主要:
*[属性名]{}
*[属性名=属性值]{}
标签名[属性名=属性值]{}
4.1 简单属性选择
- (1)给所有具有某属性的元素设置样式
*[title] {color:red;}
- (2)具体某个属性值设置样式
*[type=text] {color:red;}
- (3)对含有某属性的某类元素设置样式
某标签(a)使用某属性(title)的进行设置:
a[title] {color:red;}
- (4)对含有多个属性的元素设置样式
例如:既含有title又含有id
*[title] [id]{color:red;} 或 a[title][id] {color:red;}
4.2. 根据属性值选择
<a href="https://www.w3school.cn/" title="W3School">W3School</a>
<a href="https://www.w3cschool.cn/css/" title="CSS">CSS</a>
<a href="https://www.w3cschool.cn/html/" title="HTML">HTML</a>
(1)根据单个属性值设置元素样式
a[href="https://www.w3cschool.cn/css/"] {color: red;}
(2)可以按多个属性值设置元素样式
a[href="https://www.w3school.cn/"][title="W3School"] {color: red;}
(3)属性选择器参考手册
5. 后代选择器(空格)
后代选择器(descendant selector)又称为包含选择器。后代选择器可以选择作为某元素后代的元素。
例如:table后代中的所有td进行设置
table td {
padding: 20px;
border: solid 1px red;
}
6. 子元素选择器(>紧挨着)
与后代选择器相比,子元素选择器只能选择元素的直接子元素。(紧跟着的元素,不能被隔开)
比如:table > tr{} 或者tr > td{} ,但是不能table > tb
7. 相邻兄弟选择器(+)
<input id="btnSubmit" type="submit" value="注册" />
<input type="reset" value="取消" />
对取消按钮添加背景色:
#btnSubmit + input{
background-color: yellow;
}
8. 通用选择器(*)
四、样式
1. 背景
1.1 背景色(background-color)
table{background-color: pink;}
1.2 图片背景(background-image:url())
基本使用
body {background-image: url(/i/eg_bg_04.gif);}
这个图片过大只显示部分图片,图片过小多次显示,不是一张图片。
背景图全屏(background-size:100%;)
table{
background-image: url(../../img/HBuilder.png);
background-size: 100% 100%;
}
扩展:隐藏某个元素
- visibility(隐藏区域,不显示,但占据的位置还在)
visibility: hidden;
- display(位置也不显示,页面会变)
display:none;
背景重复(background-repeat)
默认值:在水平垂直方向上都平铺,就像以往背景图像的通常做法一样。
repeat-x :水平方向上重复
repeat-y :垂直方向上重复
no-repeat :不允许图像在任何方向上平铺。
- 默认
table{
background-color: gray;
background-image: url(../../img/HBuilder.png);
background-size: 20%;
}
- 横向平铺
background-size: 20%;
background-repeat: repeat-x;
- 纵向平铺
background-repeat: repeat-y; - 禁止平铺
background-repeat: no-repeat
背景定位(background-position)
background-image:url('../../img/HBuilder.png');
background-repeat:no-repeat;
background-position:center;
首先,可以使用一些关键字:top、bottom、left、right 和 center。通常,这些关键字会成对出现,不过也不总是这样。还可以使用长度值,如 100px 或 5cm,最后也可以使用百分数值。不同类型的值对于背景图像的放置稍有差异。
- 关键字
- 长度值
长度值:元素内边距区左上角的偏移。偏移点是图像的左上角。
例如:如果设置值为 30px 100px,图像的左上角将在元素内边距区左上角向右 30 像素、向下 100 像素的位置上:
background-position:30px 100px;
固定背景(background-attachment)
如果文档比较长,那么当文档向下滚动时,背景图像也会随之滚动。当文档滚动到超过图像的位置时,图像就会消失。
通过 background-attachment 属性防止这种滚动。
background-attachment: fixed;
2. 文本
2.1. 缩进(text-indent)
首行缩进(text-indent: 2em)
p {text-indent: 2em;}
悬挂缩进
第一行顶头,下面缩进
不过在为 text-indent 设置负值时要当心,如果对一个段落设置了负值,那么首行的某些文本可能会超出浏览器窗口的左边界。为了避免出现这种显示问题,建议针对负缩进再设置一个外边距或一些内边距:
p{
text-indent: -2em;
padding-left: 2em;
}
2.2. 水平对齐(text-align)
文本行之间的对齐方式。值 left、right 和 center 会导致元素中的文本分别左对齐、右对齐和居中。
除了最后一行的内容进行两端对齐:text-align: justify;
两端对齐:text-align-last: justify;
2.3. 字间隔(word-spcing:单词之前)
1em:一个字的大小。
p{word-spcing: 2em;}
2.4. 字母间隔(或汉字间隔:letter-spacing)
p{letter-spacing: 2em;}
2.5. 字符转换(大小写 text-transform)
none:对文本不做任何改动
uppercase:大写
lowercase:小写
capitalize:首字母大写
2.6. 文本装饰(text-decoration)
none
underline:下划线
overline :上划线
line-through:文本中间画一个贯穿线
blink:让文本闪烁(浏览器可能不支持)
2.7. 处理空白符(white-space)
可以用来显示代码块。
默认:空格 回车等会被压缩。
<p>This paragraph has many
spaces in it.</p>
- normal:丢掉多余的空白符。如果给定这个值,换行字符(回车)会转换为空格,一行中多个空格的序列也会转换为一个空格。
white-space: normal;
- pre:会注意额外的空格,甚至回车。
white-space: pre;
2.8. 文本方向(direction)
direction 属性有两个值:ltr 和 rtl。(和text-align功能差不多)
默认值是 ltr,显示从左到右的文本。
如果显示从右到左的文本,应使用值 rtl。
3. 字体
3.1. 字体系列(font-family)
font-family:“Microsoft YaHei”,“微软雅黑”,“SimHei”,“黑体”
3.2. 字体风格(font-style)
normal - 文本正常显示
italic - 文本斜体显示
3.3. 字体加粗(font-weight)
- 关键字
bold、normal - 数值
100 对应最细的字体变形,900 对应最粗的字体变形。
数字 400 等价于 normal,而 700 等价于 bold。
3.4. 字体大小(font-size)
p {font-size:14px;}
请始终使用正确的 HTML 标题,比如使用 <h1> - <h6>
来标记标题,使用 <p>
来标记段落。
4.链接
4.1 伪类(一种选择器 link hover visited active)
类似一种动态效果,点击不点击时的状态变化。
- a:link - 普通的、未被访问的链接
- a:visited - 用户已访问的链接(点击之后)
- a:hover - 鼠标指针位于链接的上方(鼠标悬浮时)
- a:active - 链接被点击的时刻(点击时一瞬间)
不仅仅可以用于超链接,任何元素(div、button等等)都可以
4.2 文本修饰(text-decoration多用于去掉、显示下划线)
text-decoration 属性大多用于去掉链接中的下划线。
a:link {
color: black;
/*没被访问时不显示下划线*/
text-decoration: none;
}
a:hover {
/*鼠标悬浮时字体变黄色,出现下划线*/
color: #C69500;
text-decoration: underline;
}
4.3. 背景色(background-color)
a:link {background-color:#B2FF99;}
a:hover {background-color:#FF704D;}
5. 列表(常用来做导航栏 ul li)
html中讲过列表包括:有序列表(ol li),无序列表(ul li),自定义列表(dl dt dd)
从某种意义上讲,不是描述性的文本的任何内容都可以认为是列表。人口普查、太阳系、家谱、参观菜单,甚至你的所有朋友都可以表示为一个列表或者是列表的列表。
5.1 列表类型(list-style-type 改变图标或者为none)
默认圆点,可以改成方块(square)
ul{list-style-type: square;}
5.2 列表项图像(list-style-image 用图形代替图标)
ul{
margin-left: 100px;
list-style-image: url(../../HelloHBuilder/img/HBuilder.png);
}
5.3 列表标志位置(list-style-position)
- outside:默认值。
保持标记位于文本的左侧。列表项目标记放置在文本以外,且环绕文本不根据标记对齐。默认:图标和文本不是在一块的
- inside:列表项目标记放置在文本以内,且环绕文本根据标记对齐。
ul{
list-style-type: square;
list-style-position: inside;
}
- inherit:规定应该从父元素继承 list-style-position 属性的值。
5.4 简写形式
li {list-style : url(example.gif) square inside}
6. 表格
6.1 合并表格边框(border-spacing、border-collapse)
给table和td加边框之后是双线,合并:
* border-spacing=0; 线重叠在一起
* 或者border-collapse: collapse; 单纯的一条线
通过CSS改变table元素的样式:
boder-spacing和内联样式的cellspacing作用一样。
6.2 表格文本对齐(text-align、vertical-align)
- text-align 属性设置水平对齐方式,比如左对齐、右对齐或者居中:
td{text-align:right;}
- vertical-align 属性设置垂直对齐方式,比如顶部对齐、底部对齐或居中对齐:
td {
height:50px;
vertical-align:bottom;
}
6.3 表格内边距(padding)
内容与边框的距离:
table td{
border: solid 1px black;
padding: 50px;
}