CSS

本文全面介绍了CSS的使用方法,包括背景、字体、文本、链接、列表、表格、轮廓、框模型等样式属性,以及定位、选择器等核心概念,是前端开发者必备的CSS样式手册。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSS

一、CSS简介

1.CSS 概述

  • CSS 指层叠样式表 (Cascading Style Sheets)
  • 样式定义如何显示 HTML 元素,样式通常存储在样式表中
  • 外部样式表通常存储在 CSS 文件中,多个样式定义可层叠为一

2.样式表优先权

所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中内联样式拥有最高的优先权。

  1. 浏览器缺省设置
  2. 外部样式表
  3. 内部样式表(位于 < head> 标签内部)
  4. 内联样式(在 HTML 元素内部)

其他样式按照从上到下顺序覆盖

3.CSS语法

  • CSS 规则由两个主要的部分构成:选择器,声明
  • 选择器通常是您需要改变样式的 HTML 元素,每条声明由一个属性和一个值组成,每个属性有一个值
  • 属性和值被冒号分开
  • 如果值为若干单词,则要给值加引号
  • 如果多重声明,则需要用分号将每个声明分开
  • 选择器的分组用逗号分开,被分组的选择器就可以分享相同的声明

4.插入样式表

外部样式表
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
  • 样式需要应用于很多页面时,应使用外部样式表
  • 外部样式表可以在任何文本编辑器中进行编辑
  • 文件不能包含任何的 html 标签
  • 样式表以 .css 扩展名进行保存
  • 属性值与单位之间不能留有空格
内部样式表
<head>
<style type="text/css">
  hr {color: sienna;}
  p {margin-left: 20px;}
  body {background-image: url("images/back40.gif");}
</style>
</head>

单个文档需要特殊的样式时,应使用内部样式表

内联样式
<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>

**提示:**如果要定义不止一个声明,则需要用分号将每个声明分开。

由于要将表现和内容混杂在一起,内联样式会损失掉样式表的许多优势,慎用

二、CSS样式

1.CSS背景(Background)

属性描述
background在一个声明中设置所有的背景属性
background-color设置元素的背景颜色
background-image设置元素的背景图像
background-repeat设置是否、如何重复背景图像
background-position设置背景图像的开始位置
background-attachment设置背景图像是否固定或者随着页面其余部分滚动
background-clip规定背景图像的绘制区域
background-origin规定背景图片的定位区域
background-size规定背景图片的尺寸
background-color
描述举例
color_name规定颜色值为颜色名称的背景颜色red
hex_number规定颜色值为十六进制的背景颜色#ff0000
rgb_numner规定颜色为rgb代码的背景颜色rgb(255,0,0)
transparent默认,背景颜色为透明transparent
inherit规定应从父元素继承此属性的设置inherit
background-image
描述举例
url(URL)指向图像的路径url(/i/eg03.gif)
none默认值,不显示背景图像none
inherit规定应从父元素继承此属性的设置inherit
background-repeat
描述举例
repeat默认,背景图像在垂直和水平方向重复repeat
repeat-x背景图像在水平方向重复repeat-x
repeat-y背景图像在垂直方向重复repeat-y
no-repeat背景图像只显示一次,不重复no-repeat
inherit规定应从父元素继承此属性的设置inherit
background-position
描述举例
(top center bottom) (center left right)(垂直方向位置)(水平方向位置) 如果仅规定了一个关键词,那么第二个值默认是"center"top
x% y%默认值:0% 0%,左上角。第一个值水平位置,第二个值是垂直位置。如果仅规定一个值,另一个值默认为50%35% 40%
xpos ypos左上角:0 0。第一个值是水平位置,第二个值是垂直位置。如果只规定了一个值,另一个值将是50%5px 20px
background-attachment
描述举例
scroll默认值。背景图像会跟随页面其余部分滚动而滚动scroll
fixed当页面的其余部位滚动时,背景图像不会移动fixed
inherit规定应从父元素继承此属性的设置inherit
background-clip
描述举例
border-box背景被裁剪到边框盒border-box
padding-box背景被裁剪到内边距框padding-box
content-box背景被裁剪到内容框content-box
background-origin
描述举例
border-box背景图像相对于边框盒来定位border-box
padding-box背景图像相对于内边距框来定位padding-box
content-box背景图像相对于内容来定位content-box
background-size
描述举例
length设置背景图像的高度和宽度。第一个值设置宽度,第二个值设置高度。如果只设置一个值,则第二个值默认设置为 “auto”50px
percentage以父元素的百分比来设置背景图像的宽度和高度。第一个值设置宽度,第二个值设置高度。如果只设置一个值,则第二个值默认设置为 “auto”30%
cover把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法显示在背景定位区域中。
contain把图像扩展至最大尺寸,以使宽度和高度完全适应内容区域contain
注意
  • background-position可以混合使用 % 和 position 值。
  • 像素为0时,不写单位。
  • IE浏览器不支持inherit,综合考虑拒绝用IE浏览器。
  • 浏览器整个页面尺寸

2.CSS字体(Font)

属性描述
font在一个声明中设置所有字体属性
font-family规定文本的字体系列
font-style规定文本的字体样式
font-weight规定字体的粗细
font-size规定文本的字体尺寸
font-size-adjust为元素规定aspect值
font-stretch收缩或拉伸当前的字体系列
font-variant规定是否以小型大写字母的字体显示文本
font-family
描述举例
family-name generic-family用于某个元素的字体族名称或/及类族名称的一个优先表。默认值:取决于浏览器。Times New Roman
inherit规定应该从父元素继承字体系列inherit
font-style
描述举例
normal默认值。浏览器显示一个标准的字体样式normal
italic浏览器会显示一个斜体的字体样式italic
oblique浏览器会显示一个倾斜的字体样式oblique
inherit规定应该从父元素继承字体样式inherit
font-weight
描述举例
normal默认值。定义标准的字符normol
bold定义粗体字符bold
bolder定义更粗的字符bolder
lighter定义更细的字符lighter
100-900定义由粗到细的字符。400 等同于 normal,而 700 等同于 bold200
inherit规定应该从父元素继承字体的粗细inherit
font-size
描述举例
xx-small x-small small medium large x-large xx-large把字体的尺寸设置为不同的尺寸,从 xx-small 到 xx-large。默认值:mediumsmall
smaller把字体尺寸设置为比父类更小的尺寸smaller
larger把字体尺寸设置为比父类更大的尺寸larger
length把字体尺寸设置为固定值20px\2em
%把字体尺寸设置为父类的一个百分比值50%
inherit规定应该从父元素继承字体尺寸inherit
font-size-adjust
描述举例
none默认。如果此字体不可用,则不保持此字体的 x-heightnone
number定义字体的 aspect 值比率
font-stretch
描述举例
normal默认值。把缩放比例设置为标准normol
wider把伸展比例设置为更进一步的伸展值wider
narrower把收缩比例设置为更进一步的收缩值narrower
ultra-condensed extra-condensed condensed semi-condensed semi-expanded expanded extra-expanded ultra-expanded设置 font-family 的缩放比例。“ultra-condensed” 是最宽的值,而 “ultra-expanded” 是最窄的值expanded
font-variant
描述举例
normal默认值。浏览器会显示一个标准的字体normal
small-caps浏览器会显示小型大写字母的字体small-caps
inherit规定应该从父元素继承此属性的值inherit
注意
  • 斜体(italic)是一种简单的字体风格,对每个字母的结构有一些小改动,来反映变化的外观。与此不同,倾斜(oblique)文本则是正常竖直文本的一个倾斜版本。
  • 字体默认为微软雅黑,可以同时设置多个字体,只要前面的字体浏览器不支持,就用它后面的字体。
  • 字体大小单位
    • px:谷歌浏览器默认字体大小为16px,最小是12px。
    • rem:16px*n
    • em:父级字体*n
    • %:父级字体*%
  • W3C 推荐文本使用 em 尺寸单位,1em 等于当前的字体尺寸。

3.CSS文本(Text)

属性描述
color设置文本的颜色
direction规定文本的方向 / 书写方向
line-height设置行高,文字位于中间
text-align规定文本的水平对齐方式
text-decoration规定添加到文本的装饰效果
text-indent规定文本块首行的缩进
text-transform控制文本的大小写
white-space规定如何处理元素中的空白
letter-spacing设置字符间距
word-spacing设置单词间距
color
描述举例
color_name规定颜色值为颜色名称的颜色red
hex_number规定颜色值为十六进制的颜色#ff0000
rgb_numner规定颜色为rgb代码的颜色rgb(255,0,0)
inherit规定应从父元素继承此属性的设置inherit
direction
描述举例
ltr默认。文本方向从左到右ltr
rtl文本方向从右到左rtl
inherit规定应该从父元素继承此属性的值inherit
line-height
描述举例
normal默认。设置合理的行间距normal
number设置数字,此数字会与当前的字体尺寸相乘来设置行间距2
length设置固定的行间距20px/2em
%基于当前字体尺寸的百分比行间距50%
inherit规定应该从父元素继承此属性的值。inherit
text-align
描述举例
left把文本排列到左边。默认值:由浏览器决定left
right把文本排列到右边right
center把文本排列到中间center
justify实现两端对齐文本效果justify
inherit规定应该从父元素继承 text-align 属性的值inherit
text-decoration
描述举例
none默认。定义标准的文本none
underline定义文本下的一条线underline
overline定义文本上的一条线overline
line-through定义穿过文本下的一条线line-through
blink定义闪烁的文本blink
inherit规定应该从父元素继承此属性的值inherit
text-indent
描述举例
length定义固定的缩进。默认值:02em\15px
%定义基于父元素宽度的百分比缩进%50
inherit规定应该从父元素继承此属性的值inherit
text-transform
描述举例
none默认。定义带有大写和小写字母的标准文本none
capitalize文本中的每个单词以大写字母开头capitalize
uppercase定义仅有大写字母uppercase
lowercase定义仅有小写字母lowercase
inherit规定应该从父元素继承此属性的值inherit
white-space
描述举例
normal默认。空白会被浏览器忽略normal
pre空白会被浏览器保留pre
nowrap文本不会换行,文本会在在同一行上继续,直到遇到 < br> 标签为止nowrap
pre-warp保留空白符序列,但是正常地进行换行pre-warp
pre-line合并空白符序列,但是保留换行符pre-line
inherit规定应该从父元素继承此属性的值inherit
letter-spacing
描述举例
normal默认。规定字符间没有额外的空间normal
length定义字符间的固定空间(允许使用负值)10px\2em
inherit规定应该从父元素继承此属性的值inherit
word-spacing
描述举例
normal默认。定义单词间的标准空间normal
length定义单词间的固定空间length
inherit规定应该从父元素继承此属性的值inherit
注意
  • 出现…省略号:

    div{
        white-space:nowrap;		/*换行方式:不换行*/
        overflow:hidden;		/*超出部分隐藏*/
        text-overflow:ellipsis;	/*文字超出部分用...显示*/
    }
    

4.CSS链接

链接的状态描述
a:link普通的、未被访问的链接
a:visited用户已经访问的链接
a:hover鼠标指针位于链接的上方
a:active链接被点击的时刻

当为链接的不同状态设置样式时,按照爱恨原则次序,顺序不可颠倒,即lovehate (lvha)

链接的样式很多,常用的有背景颜色,字体颜色,文字装饰

5.CSS列表(List)

属性描述
list-style在一个声明中设置所有的列表属性
list-style-image将图象设置为列表项标记
list-style-position设置列表项标记的放置位置
list-style-type设置列表项标记的类型
list-style-image
描述举例
url(‘URL’)图像的路径url(’/i/eg_arrow.gif’)
none默认。无图形被显示none
inherit规定应该从父元素继承此 属性的值inherit
list-style-position
描述
inside列表项目标记放置在文本以内,且环绕文本根据标记对齐。inside
outside默认值,保持标记位于文本的左侧。列表项目标记放置在文本以外,且环绕文本不根据标记对齐。outside
inherit规定应该从父元素继承此属性的值inherit
list-style-type
描述
none无标记
disc默认。标记是实心圆
circle标记是空心圆
square标记是实心方块
decimal标记是数字
decimal-leading-zero0开头的数字标记(01, 02, 03, 等)
lower-roman小写罗马数字(i, ii, iii, iv, v, 等)
upper-roman大写罗马数字(I, II, III, IV, V, 等)
lower-alpha小写英文字母The marker is lower-alpha (a, b, c, d, e, 等)
upper-alpha大写英文字母The marker is upper-alpha (A, B, C, D, E, 等)
lower-greek小写希腊字母(alpha, beta, gamma, 等)
lower-latin小写拉丁字母(a, b, c, d, e, 等)
upper-latin大写拉丁字母(A, B, C, D, E, 等)
hebrew传统的希伯来编号方式
armenian传统的亚美尼亚编号方式
georgian传统的乔治亚编号方式(an, ban, gan, 等)
cjk-ideographic简单的表意数字
hiragana标记是:a, i, u, e, o, ka, ki, 等。(日文片假名)
katakana标记是:A, I, U, E, O, KA, KI, 等。(日文片假名)
hiragana-iroha标记是:i, ro, ha, ni, ho, he, to, 等。(日文片假名)
katakana-iroha标记是:I, RO, HA, NI, HO, HE, TO, 等。(日文片假名)

6.CSS表格(Table)

属性描述
border-collapse规定是否合并表格边框
border-spacing规定相邻单元格边框之间的距离
caption-side规定表格标题的位置
empty-cells规定是否显示表格中的空单元格上的边框和背景
table-layout设置用于表格的布局算法
border-collapse
描述举例
separate默认值,边框会被分开。不会忽略 border-spacing 和 empty-cells 属性separate
collapse如果可能,边框会合并为一个单一的边框。会忽略 border-spacing 和 empty-cells 属性。collapse
inherit规定应该从父元素继承此属性的值inherit
border-spacing
描述举例
length length规定相邻单元的边框之间的距离,使用 px、cm 等单位。不允许使用负值。如果定义一个 length 参数,那么定义的是水平和垂直间距。如果定义两个 length 参数,那么第一个设置水平间距,而第二个设置垂直间距。50px
inherit规定应该从父元素继承此属性的值。inherit
caption-side
描述举例
top默认值。把表格标题定位在表格之上top
bottom把表格标题定位在表格之下bottom
inherit规定应该从父元素继承此属性的值inherit
empty-cells
描述举例
hide不在空单元格周围绘制边框。hide
show在空单元格周围绘制边框。默认。show
inherit规定应该从父元素继承此属性的值inherit
table-layout
描述举例
automatic默认。列宽度由单元格内容设定automatic
fixed列宽由表格宽度和列宽度设定fixed
inherit规定应该从父元素继承此属性的值inherit

7.CSS轮廓 (Outline)

属性描述
outline在一个声明中设置所有的轮廓属性
outline-color设置轮廓的颜色
outline-style设置轮廓的样式
outline-width设置轮廓的宽度
outline-color
描述举例
color_name规定颜色值为颜色名称的轮廓颜色red
hex_number规定颜色值为十六进制值的轮廓颜色#ff0000
rgb_number规定颜色值为 rgb 代码的轮廓颜色rgb(255,0,0)
invert默认。执行颜色反转(逆向的颜色)。可使轮廓在不同的背景颜色中都是可见invert
inherit规定应该从父元素继承轮廓颜色的设置inherit
outline-style
描述
none默认。定义无轮廓
dotted定义点状的轮廓
dashed定义虚线轮廓
solid定义实线轮廓
double定义双线轮廓。双线的宽度等同于 outline-width 的值
groove定义 3D 凹槽轮廓。此效果取决于 outline-color 值
ridge定义 3D 凸槽轮廓。此效果取决于 outline-color 值
inset定义 3D 凹边轮廓。此效果取决于 outline-color 值
outset定义 3D 凸边轮廓。此效果取决于 outline-color 值
inherit规定应该从父元素继承轮廓样式的设置
outline-width
描述举例
thin规定细轮廓thin
medium默认。规定中等的轮廓medium
thick规定粗的轮廓thick
length规定轮廓粗细的值10px
inherit规定应该从父元素继承轮廓宽度的设置inherit

三、CSS框模型(盒子)

CSS 框模型 (Box Model) 规定了元素框处理元素内容、内边距、边框和外边距的方式。

  • element : 元素。
  • padding : 内边距,填充。
  • border : 边框。
  • margin : 外边距,空白或空白边。

边框内的空白是内边距,边框外的空白是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素。

背景应用于由内容和内边距、边框组成的区域。

内边距不能为负值,外边距可以是负值,而且在很多情况下都要使用负值的外边距。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OZiaQnnN-1573100493857)(C:\Users\lenovo\Desktop\web前端\Web前端笔记\ct_boxmodel.gif)]

1.reset CSS

浏览器在解析某些标签的时候,本身就自带了一些样式,可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式

* {
  margin: 0;
  padding: 0;
}

2.边框(Border)

每个边框有 3 个方面:宽度、样式、颜色

属性描述
border简写属性,用于把针对四个边的属性设置在一个声明
border-style用于设置元素所有边框的样式,或者单独地为各边设置边框样式
border-width简写属性,用于为元素的所有边框设置宽度,或者单独地为各边边框设置宽度
border-color简写属性,设置元素的所有边框中可见部分的颜色,或为 4 个边分别设置颜色
border-bottom简写属性,用于把下边框的所有属性设置到一个声明中
border-bottom-color设置元素的下边框的颜色
border-bottom-style设置元素的下边框的样式
border-bottom-width设置元素的下边框的宽度
border-left简写属性,用于把左边框的所有属性设置到一个声明中
border-left-color设置元素的左边框的颜色
border-left-style设置元素的左边框的样式
border-left-width设置元素的左边框的宽度
border-right简写属性,用于把右边框的所有属性设置到一个声明中
border-right-color设置元素的右边框的颜色
border-right-style设置元素的右边框的样式
border-right-width设置元素的右边框的宽度
border-top简写属性,用于把上边框的所有属性设置到一个声明中
border-top-color设置元素的上边框的颜色
border-top-style设置元素的上边框的样式
border-top-width设置元素的上边框的宽度
border-style
描述
none定义无边框
hidden与 “none” 相同。不过应用于表时除外,对于表,hidden 用于解决边框冲突
dotted定义点状边框。在大多数浏览器中呈现为实线
dashed定义虚线。在大多数浏览器中呈现为实线
solid定义实线
double定义双线。双线的宽度等于 border-width 的值
groove定义 3D 凹槽边框。其效果取决于 border-color 的值
ridge定义 3D 垄状边框。其效果取决于 border-color 的值
inset定义 3D inset 边框。其效果取决于 border-color 的值
outset定义 3D outset 边框。其效果取决于 border-color 的值
inherit规定应该从父元素继承边框样式
border-width
描述
thin定义细的边框
medium默认。定义中等的边框
thick定义粗的边框
length允许您自定义边框的宽度
inherit规定应该从父元素继承边框宽度
border-color
描述
color_name规定颜色值为颜色名称的边框颜色(比如 red)
hex_number规定颜色值为十六进制值的边框颜色(比如 #ff0000)
rgb_number规定颜色值为 rgb 代码的边框颜色(比如 rgb(255,0,0))
transparent默认值。边框颜色为透明
inherit规定应该从父元素继承边框颜色

3.内边距(Padding)

属性描述
padding简写属性。作用是在一个声明中设置元素的所内边距属性
padding-bottom设置元素的下内边距
padding-left设置元素的左内边距
padding-right设置元素的右内边距
padding-top设置元素的上内边距
padding
描述举例
auto浏览器计算内边距auto
length规定以具体单位计的内边距值,比如像素、厘米等。默认值是 01cm
%规定基于父元素的宽度的百分比的内边距10%
inherit规定应该从父元素继承内边距inherit
padding-bottom、padding-left、padding-right、padding-top
描述举例
length规定以具体单位计的固定的(上下左右)内边距值,比如像素、厘米等。默认值是 01px
%定义基于父元素宽度的百分比(上下左右)内边距。此值不会如预期地那样工作于所有的浏览器中20%
inherit规定应该从父元素继承下内边距inherit

4.外边距(Margin)

属性描述
margin简写属性。在一个声明中设置所有外边距属性
margin-bottom设置元素的下外边距
margin-left设置元素的左外边距
margin-right设置元素的右外边距
margin-top设置元素的上外边距
margin
描述
auto浏览器计算外边距
length规定以具体单位计的外边距值,比如像素、厘米等。默认值是 0px
%规定基于父元素的宽度的百分比的外边距
inherit规定应该从父元素继承外边距
margin-bottom、margin-left、margin-right、margin-top

同上

外边距合并
  • 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。
  • 合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。
  • 只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。

5.补充:值复制

top,right,bottom,left

  • 如果缺少左外边距的值,则使用右外边距的值。
  • 如果缺少下外边距的值,则使用上外边距的值。
  • 如果缺少右外边距的值,则使用上外边距的值。

  • 4个属性值: 上 右 下 左
  • 3个属性值: 上 (右左) 下
  • 2个属性值: (上下) (左右)
  • 1个属性值: (上右下左)

6.注意

  • 盒子标签:div标签
  • div居中:margin:0 auto;
  • margin调整内部div外边距;
  • padding调整外部div内边距,它调整的是自身大小,所以如果不希望破坏外观,则尽量使用margin布局(padding有可能撑大外盒子,但如果是margin过大,则盒子内容会被挤出,但不会改变盒子本身大小);
  • border内部div和外部div定位时需要找到边界,外部div如没有设置border,则内部div的margin设置时会一直往上找,直到找到边界位置。
  • 内部相邻div间的margin,取值为两个div各自设置margin的最大值,而不是相加值。

四、CSS定位(父相子绝)

1.CSS定位属性(Positioning)

属性描述
position规定元素的定位类型,把元素放置到一个静态的、相对的、绝对的、或固定的位置中
bottom设置定位元素下外边距边界与其包含块下边界之间的偏移
top设置定位元素的上外边距边界与其包含块上边界之间的偏移
right设置定位元素右外边距边界与其包含块右边界之间的偏移
left设置定位元素左外边距边界与其包含块左边界之间的偏移
overflow规定当内容溢出元素框时发生的事情
clip剪裁绝对定位元素,元素被剪入这个形状之中,然后显示出来
vertical-align设置元素的垂直对齐方式(适用于inline、inline-block、img)
z-index设置元素的堆叠顺序
display规定元素应该生成的框的类型
clear规定元素的哪一侧不允许其他浮动元素
cursor规定要显示的光标的类型(形状)
float规定框是否应该浮动
visibility规定元素是否可见
position
描述
absolute生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定
fixed生成固对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定
relative生成相对定位的元素,相对于其正常位置进行定位。因此,“left:20” 会向元素的 LEFT 位置添加 20 像素
static默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)
inherit规定应该从父元素继承 position 属性的值
top、bottom、right、left
描述
auto默认值。通过浏览器计算底部的位置
%设置以包含元素的百分比计的底边位置。可使用负值
length使用 px、cm 等单位设置元素的底边位置。可使用负值
inherit规定应该从父元素继承此属性的值
overflow
描述
visible默认值。内容不会被修剪,会呈现在元素框之外
hidden内容会被修剪,并且其余内容是不可见的
scroll内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容
auto如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容
inherit规定应该从父元素继承 overflow 属性的值
clip
描述
shape设置元素的形状。唯一合法的形状值是:rect (top, right, bottom, left)
auto默认值。不应用任何剪裁
inherit规定应该从父元素继承 clip 属性的值
vertical-align
描述
baseline默认。元素放置在父元素的基线上
sub垂直对齐文本的下标
super垂直对齐文本的上标
top把元素的顶端与行中最高元素的顶端对齐
text-top把元素的顶端与父元素字体的顶端对齐
middle把此元素放置在父元素的中部
bottom把元素的顶端与行中最低的元素的顶端对齐
text-bottom把元素的底端与父元素字体的底端对齐
length
%使用 “line-height” 属性的百分比值来排列此元素。允许使用负值
inherit规定应该从父元素继承 vertical-align 属性的值
z-index

按照装饰、布局、内容的堆叠顺序

描述
auto默认,number:0。堆叠顺序与父元素相等
number设置元素的堆叠顺序。可以为负,默认为0
inherit规定应该从父元素继承 z-index 属性的值
display
描述
none此元素不会被显示
block此元素将显示为块级元素,此元素前后会带有换行符,可设置宽高
inline默认。此元素会被显示为内联元素,元素前后没有换行符,不能设置宽高
inline-block行内块元素。元素在一行内显示,可设置宽高
list-item此元素会作为列表显示
run-in此元素会根据上下文作为块级元素或内联元素显示
table此元素会作为块级表格来显示(类似 < table>),表格前后带有换行符
inline-table此元素会作为内联表格来显示(类似 < table>),表格前后没有换行符
table-row-group此元素会作为一个或多个行的分组来显示(类似 < tbody>)
table-header-group此元素会作为一个或多个行的分组来显示(类似 < thead>)
table-footer-group此元素会作为一个或多个行的分组来显示(类似 < tfoot>)
table-row此元素会作为一个表格行显示(类似 < tr>)
table-column-group此元素会作为一个或多个列的分组来显示(类似 < colgroup>)
table-column此元素会作为一个单元格列显示(类似 < col>)
table-cell此元素会作为一个表格单元格显示(类似 < td> 和 < th>)
table-caption此元素会作为一个表格标题显示(类似 < caption>)
inherit规定应该从父元素继承 display 属性的值
clear
描述
left在左侧不允许浮动元素
right在右侧不允许浮动元素
both在左右两侧均不允许浮动元素
none默认值。允许浮动元素出现在两侧
inherit规定应该从父元素继承 clear 属性的值
cursor
描述
url需使用的自定义光标的 URL。注释:请在此列表的末端始终定义一种普通的光标,以防没有由 URL 定义的可用光标
default默认光标(通常是一个箭头)
auto默认。浏览器设置的光标
crosshair光标呈现为十字线
pointer光标呈现为指示链接的指针(一只手)
move此光标指示某对象可被移动
e-resize此光标指示矩形框的边缘可被向右(东)移动
ne-resize此光标指示矩形框的边缘可被向上及向右移动(北/东)。
nw-resize此光标指示矩形框的边缘可被向上及向左移动(北/西)
n-resize此光标指示矩形框的边缘可被向上(北)移动
se-resize此光标指示矩形框的边缘可被向下及向右移动(南/东)
sw-resize此光标指示矩形框的边缘可被向下及向左移动(南/西)
s-resize此光标指示矩形框的边缘可被向下移动(南)
w-resize此光标指示矩形框的边缘可被向左移动(西)
text此光标指示文本
wait此光标指示程序正忙(通常是一只表或沙漏)
help此光标指示可用的帮助(通常是一个问号或一个气球)
float
描述
left元素向左浮动
right元素向右浮动
none默认值。元素不浮动,并会显示在其在文本中出现的位置
inherit规定应该从父元素继承 float 属性的值
visibility
描述
visible默认值。元素是可见的
hidden元素是不可见的
collapse当在表格元素中使用时,此值可删除一行或一列,但是它不会影响表格的布局。被行或列占据的空间会留给其他内容使用。如果此值被用在其他的元素上,会呈现为 “hidden”
inherit规定应该从父元素继承 visibility 属性的值

2.固定定位(fixed)

相对于浏览器窗口定位,随着内容一起滚动,脱离文档流

3.相对定位(relative)

相对定位是“相对于”元素在文档中的初始位置发生位置改变

关键词: left / top / right / bottom 来改变位置

特性:

  1. 相对定位元素不脱离文档流
  2. 相对定位元素不影响元素本身特性
  3. 如果没有关键词来改变位置,元素本身不会发生任何变化
  4. 位置改变,原来的位置一直占据着

4.绝对定位(absolute)

相对于已经定位的上级元素来发生位置改变,定位上级包括:fixed relative absolute,没有上级定位元素参考,相对于body

关键词: left / top / right / bottom

特性:

  1. 完全脱离文档流
  2. 行内元素支持宽高
  3. margin:auto;无效

绝对定位使元素的位置与文档流无关,因此不占据空间,所以它们可以覆盖页面上的其它元素,可以通过设置 z-index 属性来控制这些框的堆放次序。

5.浮动(float)

浮动定义:使元素不完全脱离文档流,按照指定方向发生移动,遇到父级边界或相邻浮动元素就停下来

  • 浮动几种情况

    一个元素浮动,碰到父级边界就停止

    浮动元素父级宽度不够,浮动元素掉下来

    浮动元素往下掉,前面的浮动元素高出普通元素,就会被卡住

  • 清除浮动

    • 给浮动元素父级添加高度

      缺点:只适合固定高度布局

    • 浮动元素最后面添加一个空标签,并清除浮动clear:both;

      缺点:浮动布局多的情况下,空标签增多

    • 父级定义overflow:hidden;

      缺点:不能和定位一起使用,定位超出父级盒子会被隐藏

    • 父级添加伪元素:after常用方法

      .clearfix::after{
          display: block;
          clear:both;
          content:"";
          }
      
      <div class="box clearfix">
          <div class="left"></div>
          <div class="right"></div>
      </div>
      
  • 浮动与行内快的区别

    inline-block会出现间隙

    垂直对齐方式不同

五、CSS选择器

权重:id > class > tag

1.元素选择器

元素选择器是最基本的选择器,又称类型选择器

类型选择器匹配文档语言元素类型的名称,匹配文档树中该元素类型的每一个实例

html {color:black;}
h1 {color:blue;}
h2 {color:silver;}

选择器分组

h1,h2,p {color:gray;}

2.类选择器

类选择器

类选择器以一个点号显示,类名的第一个字符不能使用数字

.center {text-align: center}

类选择器允许以一种独立于文档元素的方式来指定样式,该选择器可以单独使用,也可以与其他元素结合使用

为了将类选择器的样式与元素关联,必须将 class 指定为一个适当的值

<h1 class="important">
This heading is very important.
</h1>
结合元素选择器使用

选择器会匹配 class 属性包含 important 的所有 p 元素,其他任何类型的元素都不匹配

p.important {color:red;}
CSS 多类选择器

在 HTML 中,一个 class 值中可以包含一个词列表,各个词之间用空格分隔,两个词的顺序无关紧要

.important {font-weight:bold;}
.warning {font-style:italic;}
.important.warning {background:silver;}

通过把两个类选择器链接在一起,仅可以选择同时包含这些类名的元素(类名的顺序不限),以下p标签包含三个属性

<p class="important warning">
This paragraph is a very important warning.
</p>

如果一个多类选择器包含类名列表中没有的一个类名,匹配就会失败,以下p没有属性

<html>
<head>
<style type="text/css">
.important {font-weight:bold;}
.warning {font-style:italic;}
.important.warning {background:silver;}
</style>
</head>

<body>
<p class="important urgent warning">This paragraph is a very important warning.</p>
</body>
</html>

3.ID选择器

id选择器

id 选择器以 “#” 来定义,id 属性只能在每个 HTML 文档中出现一次

#intro {font-weight:bold;}
<p id="intro">This is a paragraph of introduction.</p>
类选择器与id选择器
  • 与类不同,在一个 HTML 文档中,ID 选择器会使用一次,而且仅一次
  • 不同于类选择器,ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表
  • ID 能包含更多含义
类选择器和 ID 选择器区分大小写
#intro {font-weight:bold;}
<p id="Intro">This is a paragraph of introduction.</p>

以上p没有匹配到intro

4.属性选择器

属性选择器可以根据元素的属性及属性值来选择元素

选择器描述
[attribute]用于选取带有指定属性的元素
[attribute=value]用于选取带有指定属性和值的元素
[attribute~=value]用于选取属性值中包含指定词汇的元素
[attribute|=value]用于选取带有以指定值开头的属性值的元素,该值必须是整个单词
[attribute^=value]匹配属性值以指定值开头的每个元素
[attribute$=value]匹配属性值以指定值结尾的每个元素
[attribute=value]匹配属性值中包含指定值的每个元素
简单属性选择

1.包含标题(title)的所有元素变为红色

*[title] {color:red;}

2.只对有 href 属性的锚(a 元素)应用样式

a[href] {color:red;}

3.将同时有 href 和 title 属性的a元素设置为红色

a[href][title] {color:red;}
具体属性值选择

1.将指向 Web 服务器上某个指定文档的超链接变成红色

a[href="http://www.w3school.com.cn/about_us.asp"] {color: red;}

2.把多个属性-值选择器链接在一起来选择一个文档

a[href="http://www.w3school.com.cn/"][title="W3School"] {color: red;}

注意:属性与属性值必须完全匹配,如果属性值包含用空格分隔的值列表,匹配就可能出问题

部分属性值选择

根据属性值中的词列表的某个词进行选择,则需要使用波浪号(~)

<html>
<head>
<style type="text/css">
p[class~="important"]{color: red;}
</style>
</head>

<body>
<h1>可以应用样式:</h1>
<p class="important warning">This is a paragraph.</a>
<p class="important">This is a paragraph.</a>
<hr />
<h1>无法应用样式:</h1>
<p class="warning">This is a paragraph.</a>
</body>
</html>

部分值属性选择器与点号类名记法的区别:

p.important 和 p[class=“important”] 应用到 HTML 文档时是等价的,但是"~=" 属性选择器,能用于任何属性,而不只是class

<html>
<head>
<style type="text/css">
img[title~="Figure"]{border: 1px solid gray;}
</style>
</head>

<body>
<h1>可以应用样式:</h1>
<img title="Figure 1" src="/i/figure-1.gif" />
<hr />
<h1>无法应用样式:</h1>
<img src="/i/figure-1.gif" />
</body>
</html>
子串匹配属性选择器
类型描述
[abc^=“def”]选择 abc 属性值以 “def” 开头的所有元素
[abc$=“def”]选择 abc 属性值以 “def” 结尾的所有元素
[abc*=“def”]选择 abc 属性值中包含子串 “def” 的所有元素

对指向 W3School 的所有链接应用样式

a[href*="w3school.com.cn"] {color: red;}
特定属性选择类型
<html>
<head>
<style type="text/css">
*[lang|="en"] {color: blue;}{color: red;}
</style>
</head>

<body>
<h1>可以应用样式:</h1>
<p lang="en">Hello!</p>
<p lang="en-us">Greetings!</p>
<hr />
<h1>无法应用样式:</h1>
<p lang="fr">Bonjour!</p>
<p lang="cy-en">Jrooana!</p>
</body>
</html>

5.后代选择器

后代选择器又称为包含选择器,选择作为某元素后代的元素,两个元素之间的层次间隔可以是无限的

只对 h1 元素中的 em 元素应用样式

h1 em {color:red;}

h1 em 选择器解释为 “作为 h1 元素后代的任何 em 元素”

6.子元素选择器

子元素选择器只能选择作为某元素子元素的元素

选择器使用了大于号(子结合符),子结合符两边可以有空白符,不影响使用

h1 > strong {color:red;}

选择器 h1 > strong 解释为“选择作为 h1 元素子元素的所有 strong 元素”

7.相邻兄弟选择器

相邻兄弟选择器选择紧接在另一元素后的元素,且二者有相同父元素

相邻兄弟选择器使用了加号(即相邻兄弟结合符),子结合符两边可以有空白符,不影响使用

h1 + p {margin-top:50px;}

此选择器读作:“选择紧接在 h1 元素后出现的段落,h1 和 p 元素拥有共同的父元素”

<html>
<head>
<style type="text/css">
li + li {font-weight:bold;}
</style>
</head>

<body>
<div>
  <ul>
    <li>List item 1</li>
    <li>List item 2</li>	<!--加粗了-->
    <li>List item 3</li>	<!--加粗了-->
  </ul>
  <ol>
    <li>List item 1</li>
    <li>List item 2</li>	<!--加粗了-->
    <li>List item 3</li>	<!--加粗了-->
  </ol>
</div>
</body>
</html>

8.伪类

CSS 伪类用于向某些选择器添加特殊的效果

属性描述
:active向被激活的元素添加样式
:focus向拥有键盘输入焦点的元素添加样式
:hover当鼠标悬浮在元素上方时,向元素添加样式
:link向未被访问的链接添加样式
:visited向已被访问的链接添加样式
:first-child向元素的第一个子元素添加样式
:lang向带有指定 lang 属性的元素添加样式

语法:

selector : pseudo-class {property: value} 		/*selector:选择器名*/
selector.class : pseudo-class {property: value}		/*class:类名*/
伪类与 CSS 类结合

伪类可以与 CSS 类配合使用:

a.red : visited {color: #FF0000}
<a class="red" href="css_syntax.asp">CSS Syntax</a>
锚伪类
a:link {color: #FF0000}		/* 未访问的链接 */
a:visited {color: #00FF00}	/* 已访问的链接 */
a:hover {color: #FF00FF}	/* 鼠标移动到链接上 */
a:active {color: #0000FF}	/* 选定的链接 */
:first-child 伪类

:first-child 伪类向元素的第一个子元素添加样式

例1:匹配第一个 < p> 元素

p:first-child {color: red;} 

例2:匹配所有 < p> 元素中的第一个 < i> 元素

p > i:first-child {color: red;}

例3:匹配所有作为第一个子元素的 < p> 元素中的所有 < i> 元素

p:first-child i {color: red;}
:lang 伪类

:lang 伪类向带有指定 lang 属性的元素添加样式

:lang 伪类根据元素的语言编码匹配元素,这种语言信息必须包含在文档中,或者与文档关联,不能从 CSS 指定

:lang 的处理与 |= 选择器相同

<html>
<head>
<style type="text/css">
q:lang(no)
{
quotes: "~" "~"
}
</style>
</head>
<body>
<p>:lang 伪类允许您为不同的语言定义特殊的规则。在下面的例子中,在下面的例子中,:lang 类为带有值为 "no" 的 lang 属性的 q 元素定义引号的类型:</p>

<p>一些文本 <q lang="no">段落中的引用</q> 一些文本。</p>
</body>

</html>
:focus 伪类

:focus 伪类在元素获得焦点时向元素添加特殊的样式

<html>
<head>
<style type="text/css">
input:focus
{
background-color:yellow;
}
</style>
</head>

<body>
<form action="form_action.asp" method="get">
First name: <input type="text" name="fname" /><br />
Last name: <input type="text" name="lname" /><br />
<input type="submit" value="Submit" />
</form>
</body>
</html>

9.伪元素

CSS 伪元素用于向某些选择器设置特殊效果

属性描述
:first-letter向文本的第一个字母添加特殊样式。
:first-line向文本的首行添加特殊样式。
:before在元素之前添加内容。
:after在元素之后添加内容。

伪元素的语法:

selector:pseudo-element {property:value;}		/*pseudo-element:伪元素*/
selector.class:pseudo-element {property:value;}	
:first-line 伪元素

“first-line” 伪元素用于向文本的首行设置特殊样式

根据 “first-line” 伪元素中的样式对 p 元素的第一行文本进行格式化

p:first-line{color:red;}
:first-letter 伪元素

“first-letter” 伪元素用于向文本的首字母设置特殊样式

p:first-letter{color:red;}
before 伪元素

“:before” 伪元素可以在元素的内容前面插入新内容

下面的例子在每个 < h1> 元素前面插入一幅图片:

h1:before{content:url(logo.gif);}
:after 伪元素

“:after” 伪元素可以在元素的内容之后插入新内容。

下面的例子在每个 < h1> 元素后面插入一幅图片:

h1:after{content:url(logo.gif);}
伪元素与CSS类结合
p.article:first-letter{color: #FF0000;}

伪类在元素获得焦点时向元素添加特殊的样式

<html>
<head>
<style type="text/css">
input:focus
{
background-color:yellow;
}
</style>
</head>

<body>
<form action="form_action.asp" method="get">
First name: <input type="text" name="fname" /><br />
Last name: <input type="text" name="lname" /><br />
<input type="submit" value="Submit" />
</form>
</body>
</html>

9.伪元素

CSS 伪元素用于向某些选择器设置特殊效果

属性描述
:first-letter向文本的第一个字母添加特殊样式。
:first-line向文本的首行添加特殊样式。
:before在元素之前添加内容。
:after在元素之后添加内容。

伪元素的语法:

selector:pseudo-element {property:value;}		/*pseudo-element:伪元素*/
selector.class:pseudo-element {property:value;}	
:first-line 伪元素

“first-line” 伪元素用于向文本的首行设置特殊样式

根据 “first-line” 伪元素中的样式对 p 元素的第一行文本进行格式化

p:first-line{color:red;}
:first-letter 伪元素

“first-letter” 伪元素用于向文本的首字母设置特殊样式

p:first-letter{color:red;}
before 伪元素

“:before” 伪元素可以在元素的内容前面插入新内容

下面的例子在每个 < h1> 元素前面插入一幅图片:

h1:before{content:url(logo.gif);}
:after 伪元素

“:after” 伪元素可以在元素的内容之后插入新内容。

下面的例子在每个 < h1> 元素后面插入一幅图片:

h1:after{content:url(logo.gif);}
伪元素与CSS类结合
p.article:first-letter{color: #FF0000;}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值