p { color: red; } p 是选择器(selector),选择所有 <p> 元素,color 是属性(property),red 是属性值(property value),color 和 red 整体是声明(declaration),而整个部分是一个规则集元素选择器:也称作标签或类型选择器,应用于所有指定类型的 HTML 元素,p{} 选择所有 p 元素
ID 选择器:具有特定 ID 的元素。单一 HTML 页面中,每个 ID 只对应一个元素,一个元素只对应一个 ID,#my-id{} 选择 <p id="my-id"> 或 <a id="my-id">
类选择器:具有特定类的元素。单一页面中,一个类可以有多个实例,类名的第一个字符不能使用数字, .my-class{} 选择 <p class="my-class"> 和 <a class="my-class">
属性选择器: 拥有特定属性的元素,img[src]{} 选择 <img src="myimage.png"> 但不是 <img>
伪类选择器:特定状态下的特定元素(比如鼠标指针悬停于链接之上),a:hover 选择仅在鼠标指针悬停在链接上时的 <a> 元素
分组选择器:具有相同样式的元素。h1,h2,p {color:green;}
嵌套选择器:
p{ }: 为所有 p 元素指定一个样式。.marked{ }: 为所有 class="marked" 的元素指定一个样式。.marked p{ }: 为所有 class="marked" 元素内的 p 元素指定一个样式。p.marked{ }: 为所有 class="marked" 的 p 元素指定一个样式。后代选择器(以空格 分隔) div p{} 选取所有 div 元素中的 p 元素:
子元素选择器(以大于 > 号分隔)div>p{} 选取所有 div 元素中直接一级的 p 元素
相邻兄弟选择器(以加号 + 分隔) div+p{} div 元素后的第一个 p 元素
普通兄弟选择器(以波浪号 ~ 分隔)div~p{} 所有 div 元素之后的所有相邻兄弟元素 p
[title]{color:blue;} 把包含标题(title)属性的所有元素变为蓝色(属性选择器)
[title=runoob]{color:blue;} 把 title='runoob 的所有元素变为蓝色
CSS 伪类 selector:pseudo-class {property:value;} selector.class:pseudo-class {property:value;}
p:first-child{} 任何元素的第一个子元素的 p 元素p > i:first-child{} 匹配所有 p 元素中的第一个 i 元素p:first-child i{} 匹配所有作为第一个子元素的 p 元素中的所有 i 元素
所有伪类元素 CSS 伪元素:用来添加一些选择器的特殊效果。
selector:pseudo-element {property:value;} selector.class:pseudo-element {property:value;}
p:first-line {} 向 p 元素文本的首行设置特殊样式,"first-line" 伪元素只能用于块级元素。
p:first-letter{} 伪元素用于向文本的首字母设置特殊样式
h1:before 伪元素可以在元素的内容前面插入新内容。
h1:after 伪元素可以在元素的内容之后插入新内容。
<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">这是一个段落。</p>!important 规则用于增加样式的权重。!important 与优先级无关,但它与最终的结果直接相关,使用一个 !important 规则时,此声明将覆盖任何其他声明。!important 使用建议:!important!important!important!important如果外部样式放在内部样式的后面,则外部样式将覆盖内部样式
<head>
<!-- 设置:h3{color:blue;} -->
<style type="text/css">
/* 内部样式 */
h3{color:green;}
</style>
<!-- 外部样式 style.css -->
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<h3>显示蓝色,是外部样式</h3>
</body>
background-color 元素的背景颜色
#ff0000rgb(255,0,0)redbackground-image 元素的背景图像,默认情况下,背景图像进行平铺重复显示,以覆盖整个元素实体
background-repeat 控制图像平铺
background-repeat:repeat-x/y; 控制平铺方向,x 水平,y 垂直background-repeat:no-repeat; 不平铺background-attachment 背景图像是否固定或者随着页面的其余部分滚动
scroll 背景图片随着页面的滚动而滚动,这是默认的。fixed 背景图片不会随着页面的滚动而滚动。local 背景图片会随着元素内容的滚动而滚动。initial 设置该属性的默认值。 阅读关于 initial 内容inherit 指定 background-attachment 的设置应该从父元素继承。 阅读关于 inherit 内容background-position 改变图像在背景中的位置:
简写属性:body {background:#ffffff url('img_tree.png') no-repeat right top;}
color:设置文字的颜色。十六进制,RGB 或颜色名称text-align 文本的水平对齐方式h1 {text-align:center;} 居中对齐
p.date {text-align:right;} 右对齐
p.main {text-align:justify;} 两端对齐
text-decoration 文本修饰属性, 主要是用来删除链接的下划线:a {text-decoration:none;}h1 {text-decoration:overline;} 上划线
h2 {text-decoration:line-through;} 删除线
h3 {text-decoration:underline;} 下划线
text-transform 文本转换属性是用来指定在一个文本中的大写和小写字母p.uppercase {text-transform:uppercase;} 大写
p.lowercase {text-transform:lowercase;} 小写
p.capitalize {text-transform:capitalize;} 单词开首字母大写
text-indent:50px; 文本缩进属性是用来指定文本的第一行的缩进。direction 设置文本方向。letter-spacing 设置字符间距line-height 设置行高text-shadow 设置文本阴影vertical-align 设置元素的垂直对齐word-spacing 设置字间距white-space 设置元素中空白的处理方式serif 和 sans-serif 字体之间的区别: 有衬线和无衬线,Monospace:等宽字体
font-family 属性设置文本的字体系列。应该设置几个字体名称作为一种"后备"机制,如果浏览器不支持第一种字体,他将尝试下一种字体。如果字体系列的名称超过一个字,它必须用引号,如Font Family:"宋体"。
多个字体系列是用一个逗号分隔指明:p{font-family:"Times New Roman", Times, serif;}
font-style 字体样式, 主要是用于指定斜体文字的字体样式属性,italicfont-size 属性设置文本的大小。默认 16 像素(16px=1em)。font-weight 指定字体的粗细。filter 属性用为元素添加可视效果,使用空格分隔多个滤镜。filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url();none 默认值,没有效果。blur(px) 给图像设置高斯模糊。值越大越模糊brightness(%) 给图片应用一种线性乘法,使其看起来更亮或更暗。contrast(%) 调整图像的对比度drop-shadow(h-shadow v-shadow blur spread color) 给图像设置一个阴影效果。阴影是合成在图像下面,可以有模糊度的,可以以特定颜色画出的遮罩图的偏移版本。grayscale(%) 将图像转换为灰度图像。hue-rotate(deg) 给图像应用色相旋转。"angle"一值设定图像会被调整的色环角度值invert(%) 反转输入图像。opacity(%) 转化图像的透明程度。saturate(%) 转换图像饱和度。sepia(%) 将图像转换为深褐色。url() URL函数接受一个XML文件,该文件设置了一个SVG滤镜,且可以包含一个锚点来指定一个具体的滤镜元素。例如:filter: url(svg-url#element-id)initial 设置属性为默认值inherit 从父元素继承该属性a:link - 正常,未访问过的链接a:visited - 用户已访问过的链接a:hover - 当用户鼠标放在链接上时a:active - 链接被点击的那一刻/* 只有鼠标在连接上才有下划线 */
a:link {text-decoration:none;}
a:visited {text-decoration:none;}
a:hover {text-decoration:underline;}
a:active {text-decoration:underline;}
/* 指定链接背景色 */
a:link {background-color:#B2FF99;}
a:visited {background-color:#FFFF85;}
a:hover {background-color:#FF704D;}
a:active {background-color:#FF704D;}
list-style-type 属性指定列表项标记的类型:ul.a {list-style-type: circle;} 圆圈
ul.b {list-style-type: square;} 方块
ol.c {list-style-type: upper-roman;} 大写罗马数字
ol.d {list-style-type: lower-alpha;} 小写字母
list-style-image: url('sqpurple.gif'); 指定列表项标记的图像list-style: square url("sqpurple.gif"); 列表 - 简写属性list-style-type:none 属性可以用于移除小标记。默认情况下列表 ul 或 ol 还设置了内边距和外边距,可使用 margin:0 和 padding:0 来移除:
table, th, td {
border: 1px solid black;
text-align:right;
}
/* 例子中的表格有双边框。这是因为表和th/td元素有独立的边界
为了显示一个表的单个边框,使用 border-collapse (折叠边框)属性。 */
table {
border-collapse:collapse;
width:100%;
height:50px;
}

border-width 属性为边框指定宽度。border-style 属性用来定义边框的样式,可选的属性值:none: 默认无边框dotted: 定义一个点线边框dashed: 定义一个虚线边框solid: 定义实线边框double: 定义两个边框。 两个边框的宽度和 border-width 的值相同groove: 定义3D沟槽边框。效果取决于边框的颜色值ridge: 定义3D脊边框。效果取决于边框的颜色值inset:定义一个3D的嵌入边框。效果取决于边框的颜色值outset: 定义一个3D突出边框。 效果取决于边框的颜色值border-color 属性用于设置边框的颜色border-color 单独使用是不起作用的,必须得先使用 border-style 来设置边框样式。
border-top|right|bottom|left-syle 设置单个边框样式border:5px solid red; 边框简写属性:宽度,样式,颜色outline-color|style|widthmargin-top|right|bottom|leftauto 设置浏览器边距。这样做的结果会依赖于浏览器length px|em 定义一个固定的margin(使用像素,pt,em等)% 定义一个使用百分比的边距padding-top|right|bottom|leftlength px|em 定义一个固定的margin(使用像素,pt,em等)% 定义一个使用百分比的边距height 设置元素的高度。
line-height 设置行高。
max-height 设置元素的最大高度。
max-width 设置元素的最大宽度。
min-height 设置元素的最小高度。
min-width 设置元素的最小宽度。
width 设置元素的宽度。
box-sizing 属性在一个元素的 width 和 height 中包含 padding(内边距) 和 border(边框)。
设置了 box-sizing: border-box; 则 padding(内边距) 和 border(边框) 也包含在 width 和 height 中
display 属性设置一个元素应如何显示,visibility 属性指定一个元素应可见还是隐藏。display:none 或 visibility:hiddenvisibility:hidden 可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。display:none 可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。<h1> <p> <div><span> <a>display:inline; display:block;static,fixed,absolute 定位与文档里无关
position 属性指定了元素的定位类型。position 属性的五个值:
static
top, bottom, left, right 影响。relative
fixed
absolute
html使用 position 属性且取值不为 static 的元素才是已定位元素
sticky
position: sticky; 基于用户的滚动位置来定位。粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。重叠的元素:元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素
z-index 属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)一个元素可以有正数或负数的堆叠顺序:
top right bottom left 定义外边距与包含块边界之间的偏移(距离),可以为负值
overflow 属性可以控制内容溢出元素框时在对应的元素区间内添加滚动条。overflow 属性只工作于指定高度的块元素上visible 默认值。内容不会被修剪,会呈现在元素框之外。hidden 内容会被修剪,并且其余内容是不可见的。scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。inherit 规定应该从父元素继承 overflow 属性的值。float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。Float(浮动),往往是用于图像,但它在布局时一样非常有用。float:left|right;clear:both 属性指定元素两侧不能出现浮动元素。margin: auto;注意: 如果没有设置 width 属性(或者设置 100%),居中对齐将不起作用
text-align: center;margin: auto; 并将它放到 块 元素中:position: absolute; left|right: 0pxfloat: left|rightoverflow: auto; 来解决子元素溢出的问题<div style="overflow: auto; border: 3px solid #4CAF50; padding: 5px;">
<img style="float: right;" src="pineapple.jpg" alt="Pineapple" width="170" height="170">
菜鸟教程 - 学的不仅是技术,更是梦想!!!
</div>
padding: 70px 0; 上下相同内边距padding: 70px 0; text-align: center;position: absolute; transform: translate(-50%, -50%);flex-direction 属性指定了弹性子元素在父容器中的位置。
flex-direction的值有:
row:横向从左到右排列(左对齐),默认的排列方式。row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面。column:纵向排列。column-reverse:反转纵向排列,从后往前排,最后一项排在最上面。justify-content 内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐。
justify-content 语法如下:justify-content: flex-start | flex-end | center | space-between | space-around
各个值解析:
flex-start:弹性项目向行头紧挨着填充。这个是默认值。第一个弹性项的 main-start 外边距边线被放置在该行的 main-start 边线,而后续弹性项依次平齐摆放。flex-end:弹性项目向行尾紧挨着填充。最后一个弹性项的 main-end 外边距边线被放置在该行的 main-end 边线,而后续弹性项依次平齐摆放。center:弹性项目居中紧挨着填充。(如果剩余的自由空间是负的,则弹性项目将在两个方向上同时溢出)。space-between:弹性项目平均分布在该行上。如果剩余空间为负或者只有一个弹性项,则该值等同于 flex-start。否则,第1个弹性项的外边距和行的 main-start 边线对齐,而最后1个弹性项的外边距和行的 main-end 边线对齐,然后剩余的弹性项分布在该行上,相邻项目的间隔相等。space-around:弹性项目平均分布在该行上,两边留有一半的间隔空间。如果剩余空间为负或者只有一个弹性项,则该值等同于 center。否则,弹性项目沿该行分布,且彼此间隔相等(比如是20px),同时首尾两边和弹性容器之间留有一半的间隔(1/2*20px=10px)。各种值的效果图

align-items 属性设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式。
语法:align-items: flex-start | flex-end | center | baseline | stretch
各个值解析:
flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。(贴近侧轴起始边界,上对齐)flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。(贴近侧轴结束边界,下对齐)center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。(侧轴方向居中,垂直居中)baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。(元素在侧轴方向撑满)flex-wrap 属性用于指定弹性盒子的子元素换行方式。
语法 flex-wrap: nowrap|wrap|wrap-reverse|initial|inherit;
各个值解析:
nowrap - 默认, 弹性容器为单行。该情况下弹性子项可能会溢出容器。wrap - 弹性容器为多行。该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行wrap-reverse -反转 wrap 排列。多出的放在上方新的一行align-content 属性用于修改 flex-wrap 属性的行为。类似于 align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐。
语法 align-content: flex-start | flex-end | center | space-between | space-around | stretch
各个值解析:
stretch - 默认。各行将会伸展以占用剩余的空间。flex-start - 各行向弹性盒容器的起始位置堆叠。flex-end - 各行向弹性盒容器的结束位置堆叠。center -各行向弹性盒容器的中间位置堆叠。space-between -各行在弹性盒容器中平均分布。space-around - 各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。弹性子元素属性
order: n 属性设置弹性容器内弹性子元素的属性,用整数值来定义排列顺序,数值小的排在前面。可以为负值。margin: auto,自动获取弹性容器中剩余的空间。所以设置垂直方向margin值为"auto",可以使弹性子元素在弹性容器的两上轴方向都完全居中。align-self 属性用于设置弹性元素自身在侧轴(纵轴)方向上的对齐方式。
语法 align-self: auto | flex-start | flex-end | center | baseline | stretch
各个值解析:
auto:如果 align-self 的值为 auto,则其计算值为元素的父元素的 align-items 值,如果其没有父元素,则计算值为 stretch。flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与 flex-start 等效。其它情况下,该值将参与基线对齐。stretch:如果指定侧轴大小的属性值为 auto,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照 min/max-width/height 属性的限制。flex 属性用于指定弹性子元素如何分配空间。
语法 flex: auto | initial | none | inherit | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]
各个值解析:
auto: 计算值为 1 1 autoinitial: 计算值为 0 1 autonone:计算值为 0 0 autoinherit:从父元素继承[ flex-grow ]:定义弹性盒子元素的扩展比率。[ flex-shrink ]:定义弹性盒子元素的收缩比率。[ flex-basis ]:定义弹性盒子元素的默认基准值。