层叠样式表CSS(Cascading Style Sheets)
与HTML
搭配使用,共同构建前端页面。HTML
负责内容,CSS
负责显示,达到了样式与内容的分离。
HTML引入CSS
三种方式引入CSS
,W3C的文章说的很清楚。
外部样式表
当样式需要被应用到很多页面的时候,外部样式表将是理想的选择。使用外部样式表,你就可以通过更改一个文件来改变整个站点的外观。
1
2
3<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>内部样式表
当单个文件需要特别样式时,就可以使用内部样式表。你可以在 head 部分通过
<style>
标签定义内部样式表。1
2
3
4
5
6
7<head>
<style type="text/css">
body {background-color: red}
p {margin-left: 20px}
</style>
</head>内联样式
当特殊的样式需要应用到个别元素时,就可以使用内联样式。 使用内联样式的方法是在相关的标签中使用样式属性。样式属性可以包含任何 CSS 属性。以下实例显示出如何改变段落的颜色和左外边距。
1
2
3<p style="color: red; margin-left: 20px">
This is a paragraph
</p>
学习过程中,使用内联样式进行效果演示。
背景样式
背景颜色,默认的颜色是transparent
颜色的表示方式有三种:
- 文字
1 | <body style="background-color:gray;"> |
- RGB,红绿蓝三原色。用两个字节来表示,红色
#FF0000
。
1 | <body style="background-color:#FF0000;"> |
- 另一种是数值
rgb(255, 255, 255)
1 | <body style="background-color:rgb(255,0,0);"> |
CSS3
引入了新的一种方式rgba
,最后一个参数α
可以简单理解为透明度。
1 | <body style="background-color:rgba(255,0,0,0.5);"> |
背景图片
背景是图片加上上文的rgba
, 可以做出内层的标记浮在背景图片上的效果。
1 | <body style="background-image:url(timg1440x900.jpg);"> |
对于背景图片background-image
属性,当使用的图片较小时有一些特点:
- 会自动复制进行填充当前页面,
- 也可以不重复。
- 可以在
x
和y
方向进行重复repeat-x
,repeat-y
1 | <body style="background-image:url(timg213x160.jpg); |
当设定为no-repeat
时,可以对位置background-position
进行设定:
center left top right
- 绝对位置
100px 100px
1 | <body style="background-image:url(timg213x160.jpg); |
默认是让背景图片随着文字一起滚动,可以设定background-attanchment
为fixed
,即背景则不会随着页面一起滚动。
1 | <body style="background-image:url(timg213x160.jpg); |
小结:学习了背景颜色,背景图片一些样式表写法。
文本样式
段落
段落文字的颜色color
1 | <body> |
段落的缩进text-indent
单位可以em(em-quads)
和10%
这种相对单位。也有px
,pt
(印刷上的单位=1/72inch
),cm
,mm
和in
这种绝对的单位。
1 | <body> |
有趣的一点是,缩进设定为负值。下面的例子是这种可以实现悬挂缩进效果
1 | <body> |
段落的行高line-height
1 | <body> |
段落对齐方式text-align
对齐方式有align,left,right,center,justify(两端对齐)
1 | <body> |
段落中空格的宽度word-spacing
, 字符间的宽度letter-spacing
1 | <body> |
段落中文字的大小写转换,text-transform
可以设置为:uppercase(英文转大写), lowercase(英文转小写), capitalize(英文转首字母大写)
1 | <body> |
文字装饰text-decoration
可以是underline上划线,overline下划线,line-through中横线
1 | <body> |
对空白字符的处理white-space
pre
(有多少回车有多少空格全都生效,且不会做自动的卷绕),
pre-wrap
(有多少回车有多少空格全都生效,做自动的卷绕),
nowrap
不卷绕,
pre-line
合并空格,保留换行
字体
字体的样式font-family
可以指定通用字体的大类,也可以指定具体的字体名称
通用字体大类
- serif 大多数的英文字体都是serif,矢量字体,有点类似花体,竖线的上有小横线
- sans-serif,竖线上没有小横线
- monospace 等宽字体,用于程序代码和终端输出
- cursive 类似手写的字体,草书
- fantansy 无法归类的字体
一般的做法是,指定保险的做法是,指定特定的字体,再指定某个通用字体的大类。
1 | <p style="font-family: Times, TimeNR, serif"></p> |
字体常用属性
font-style
: 可设为normal
,italic(是使用字体的斜体)
,oblique(是让没有斜体属性的字体倾斜)
font-variant
: 可以变为大小写small-caps
font-weight
: 笔画宽度,可以设为bold
粗体或者数值
font-size
: 字体大小,可以设为px em
,推荐还是用em
文字效果
就像以前用word做艺术字的感觉,只不过是换成了代码的方式表达。
文字阴影效果text-shadow
三个参数,第一个是向右,第二个是向下,第三个是发散的宽度
1 | <p style="text-shadow:3px 4px 5px rgba(0,255,0,1)"></p> |
雕刻的效果
1 | <p style="text-shadow:0px -1px 0px #000000, 0px 1px 3px #606060; color:#606060">INSET</p> |
边框outline-style
可以设为:dashed短划线 dotted点线 double双线 groove 凹槽 outset凸的边 inset凹的边
1 | <p style="outline-color:red;outline-style:solid;outline-width:thin">INSET</p> |
列表
就是前面那个小黑圆可以换成其他的样式。disc,circle,squre
1 | <body> |
可以使用自定义的图片
1 | <body> |
小圆点是不是属于文字的一部分,inside属于,outside不属于。只有文字换行时才能看出区别。
1 | <body> |
表格
表格的样式,border
可以设为实线solid
border-collapse
当设为 collapse
效果为当有多余的线的时候,合并为一条线。separate
则为一条线
1 | <body> |
表格可以设置大小
1 | <th style="width:100;height:50px"> |
表格中的文字可以规定排版方式
1 | <th style="vertical-align:top;text-align:right"> |
padding
可以指定和边线之间的距离,框模型中可以深刻理解一下。
1 | <th style="vertical-align:top;text-align:right;width:100px;height:50px;padding:20px"> |
对于表格的标题的位置,可以指定caption-side
1 | <table style="caption-side:bottom;"> |
table-layout
设为automatic
对于大表就会有点慢,也会不断变化。fixed
由第一行来指定表格的大小显示,可以很快地显示出来。
框模型
框模型又叫盒模型
CSS 框模型 (Box Model) 规定了元素框处理。看这篇W3C的解释文章,可以加深理解。
简而言之,元素内容、内边距、边框和外边距这四者之间的关系。
padding
就是内边距,margin
就是外边距。每一个元素都是一个框框。
可以指定四边的边距padding-top:10
,也可以分别指定边距padding:10 20 30 40
, 不是上下左右,而是上右下左(顺时针方向)
1 | <p style="margin:10px 20px 30px 40px">一个段落,和上右下左其他的元素都隔开10,20,30,40</p> |
padding
不能设为负值,margin
是允许负值的。当两个相邻的元素的margin
一起,则是取二者大的那个值
CSS 定位
HTML是一种流式的排版格式,所有的元素是从左往右,从上往下流式地填满,以前的定位是通过表格来实现的。CSS定位,就是将某一个块状的元素放置到某个固定的位置。CSS1就已经提出元素是浮动的。如果要对CSS元素定位,方式有三种方式的定位:相对定位,绝对定位
浮动定位。
- 相对定位
不管margin
的事实,会在元素该有的地方,进行偏移。原来的第二行的位置不会受影响
1 | <body> |
- 绝对定位
会把元素从原有的流式定位上去掉。然后第一段的定位是从不断找父元素,div
未定位,body
定位了,则显示在body
的位置上。第二段则会因为第一段从流式定位的去除,则到第一位上。
1 | <body> |
浮动定位
会将某个元素永远定在一个地方。压缩页面,它会挤占原来的元素,CSDN那种讨厌的广告应该就是这个原理。
1 | <body> |
div
是一种块状元素。span
是一种行内的块状元素。h5
出现了很多的不同名字的div
,比如slide
,header
,foot
等,这些块状元素就用来结合定位技术使用。
CSS选择器
选择器就是选定某些标记,对其的样式进行管理。
元素选择器最后呈现的效果是叠加的
1 | <head> |
类选择器
*.important
的意思是所有类名class
为important
的元素
1 | <head> |
p.important
则是所有id
为important
的p
#important
则是指id选择器,用#
而不是用.
来进行选择
1 | <head> |
有title
这个属性的标记。
1 | <head> |
子元素选择器
p em
这种情况是子选择器,p>em
则p标签一定是em的上级标签。h1+p
则对p标签相邻的em标签
1 | <head> |
超链接所涉及到的伪类
1 | a:link {color:#FF0000} 点击时 |
1 | <head> |
总结
了解一些CSS
常见用法。知道了HTML
如何引入CSS
,背景样式,段落样式,文字样式,表格样式,CSS
框模型,CSS
选择器。