CSS总结

一、css介绍

CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素,给HTML设置样式,让它更加美观。

当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染)

二、css语法

每个CSS样式由两个组成部分:选择器和声明。声明又包括属性和属性值。每个声明之后用分号结束。

h1{color:red;font-size:14px;}

h1——>选择器
color:red;——>声明
color——>属性
red——>值
font-size:14px;——>声明
font-size——>属性
14px——>值

/* 这是注释 */

三、css引入方式

行内样式

行内式是在标记的style属性中设定CSS样式。不推荐大规模使用。

<p style="color: red">Hello world.</p>

内部样式

嵌入式是将CSS样式集中写在网页的head标签对的style标签对中。格式如下:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{
            background-color: red;
        }
    </style>
</head>

外部样式

外部样式就是将css写在一个单独的文件中,然后在页面进行引入即可。

# 现在写的这个.css文件是和你的html是一个目录下,如果不是一个目录,href里面记得写上这个.css文件的路径

<link href="mystyle.css" rel="stylesheet" type="text/css"/>  

文件内容是 :

p {color:blue;}
/*注释*/

注释一般都使用来描述后面这段css代码是给页面上哪一个板块用的
/*标题样式*/
xxxxx

/*个人中心设置*/

四、css选择器

css选择器——>如何找到对应的标签

基本选择器

元素选择器:

div{
    color: red;
}

id选择器:id值不能重复

#bob{
    color:green;
}

<div id="bob">
    鲍勃
</div>

**类选择器: ** 类值可以重复

/* 所有标签里面含有class值为c1的标签 */
.c1{
    color: green;
}

/* div标签里面含有class值为c1的标签 */
div.c1{ 
    color: green;
}

<div id="bob" class="c1">
    鲍勃
</div>
<div id="xy" class="c1">
    小杨
</div>

通用选择器:找到所有的标签

*{ 
	color: green;
}

组合选择器

后代选择器:找到div标签后代里面的所有a标签

div a{   
	color:red;
}

儿子选择器:找到div的儿子标签这一代的a标签

div>a{ 
	color:red;
}

毗邻选择器:找到是紧挨着div标签的下一个a标签(是兄弟标签)

div+a{  
	 color: red;
}

弟弟选择器:找到的是同级的后面的所有兄弟 a 标签

div~a{  
	color: red;
}

属性选择器

通过属性名来查找:找到所有含有title属性的标签

[title]{
    color: red;
}

/* 含有title属性的div标签 */
div[title]{
    color: red;
}

通过属性名对应的值来查找:当属性值的值为数字的时候,数字要加上引号

[title=‘666‘]{
    color: red;
}

/* 含有type属性,并且type属性的值为text的input标签 */
input[type=text]{ 
		background-color: red;
}

分组选择器

多个选择器选择的标签设置相同css样式的时候,就可以用分组

div 选择器和 p 选择器共同设置相同的样式,可以逗号分隔

div,p{  
	color:red;
}

伪类选择器

a 标签自带的效果:未访问过的时候是蓝色的字体颜色,访问过之后是紫色的,自带下划线

/* 未访问的链接颜色 */
a:link {
  color: #FF0000
}

/* 已访问的链接颜色 */
a:visited {
  color: #00FF00
} 

/* 选定的链接,就是鼠标点下去还没有抬起来的那个瞬间,可以让它变颜色*/
a:active {
  color: #0000FF
}

input 输入框获取焦点时样式

input 默认的有个样式,鼠标点进去的时候,input 框会变浅蓝色的那个感觉

input:focus {
  background-color: red; /* 框里面的背景色 */
}

hover的用法

用法1:这个表示的是:当鼠标悬浮在a这个样式上的时候,a的背景颜色设置为黄色

a:hover{
    background-color:yellow;
}

用法2:使用 a 控制其他块的样式:

使用 a 控制 a 的子元素 b:

.a:hover .b {
    background-color:blue;
}

使用 a 控制 a 的兄弟元素 c (同级元素)

.a:hover + .c {
    color:red;
}

使用 a 控制 a 的就近元素 d :

.a:hover ~ .d {
    color:pink;
}

伪元素选择器

通过css来造标签,不推荐使用

first-letter:常用的给首字母设置特殊样式

/* 将p标签中的文本的第一个字变颜色变大小 */
p:first-letter { 
  font-size: 48px;
  color: red;
}

before:

/* 在每个<p>元素之前插入内容 */
p:before {
  content:"*";		——>插入的内容
  color:red;
}

after:

/* 在每个<p>元素之后插入内容 */
p:after {
  content:"[?]";	——>插入的内容
  color:blue;
} 

before和after多用于清除浮动。

选择器的优先级

优先级数字越大,越优先显示其效果,优先级相同的,显示后面定义的选择器对应的样式

important > 内敛样式 > id选择器 > 类选择器 > 元素选择器 > 继承选择器

/* id选择器优先级为100 */
#d1{
    color:deepskyblue;
}
/*--------------------------------------------------------------*/
/* 继承的优先级为0 */
body{
    color:red;
}
/*--------------------------------------------------------------*/
/* 类选择器的优先级是10 */
.c1{
    color: blue;
}
/*--------------------------------------------------------------*/
/* 元素选择器优先级是1 */
div{
    color: green;
}
/*--------------------------------------------------------------*/
/* 内敛样式优先级为1000 */
<p class="cc3" style="color: red;">我是cc3的p标签</p>
/*--------------------------------------------------------------*/
/* important优先级最高,最牛逼 */
.cc1 .cc3 {
    color: purple!important;
}

五、css属性相关

高度宽度设置,注意:只有块级标签能够设置高度宽度,内敛标签不能设置高度宽度,它的高度宽度是由内容决定的

div{
    width: 100px;  ——>宽度
    height: 100px; ——>高度
    background-color: pink;		——>背景颜色
}

字体属性

字体

.c1{
	font-family: ‘楷体‘,‘宋体‘,‘微软雅黑‘;
}

字体大小

.c1{
    font-size:14px; /* 默认字体大小为16px */
}

字体颜色

.c1{
    color: red;
}

子重,粗细

.c1{
    font-weight: bold;
    font-weight: 100;
}
        

值      	   描述
normal 		默认值,标准粗细
bold   		粗体
bolder 		更粗
lighter    	更细
100~900    	设置具体粗细,400等同于normal,而700等同于bold

颜色表示方式

p{
    color: red;                 
    color: #78FFC9;
    color: rgb(123,199,255);
    color: rgba(123,199,255,0.3);  /* 多了一个透明度的数字:0-1的一个数字 */
}

文字属性

文字对齐:text-align

div{
    width: 200px;
    height: 200px;
    background-color: yellow;
    text-align: center;
}

left	左边对齐 默认值
right	右对齐
center	居中对齐

文字装饰:text-decoration

div a{
    text-decoration: none;      /* 给a标签去除下划线 */
}


值	        	描述
none	        默认。定义标准的文本。
underline	    定义文本下的一条线。
overline	    定义文本上的一条线。
line-through	定义穿过文本下的一条线。

首行缩进

/* 首行缩进两个字符,因为一个字的默认大小为16px */

p {
  text-indent: 32px; 
}

背景属性

div{
    height: 600px;
    width: 600px;
    background-image: url("1.jpg");     /* 图片背景 */
    background-color: red;              /* 颜色背景 */
}

/* 背景重复 */
div{
    height: 600px;
    width: 600px;
    background-image: url("1.jpg");     /* 图片背景 */
    background-repeat: no-repeat;       /* 背景图片不平铺 */
}

repeat(默认): 背景图片沿着x轴和y轴重复平铺,铺满整个包裹它的标签
repeat-x: 背景图片只在水平方向上平铺
repeat-y: 背景图片只在垂直方向上平铺
no-repeat: 背景图片不平铺

/* 图片背景位置 */
div{
    height: 600px;
    width: 600px;
    background-image: url("1.jpg");         /* 图片背景 */
    background-repeat: no-repeat;           /* 背景图片不平铺 */
    background-position: center center;     /* 九宫格形式,正中间 */
}

|----------------------------------------------|
| left,top    | center,top    | right,top    |
|----------------------------------------------|
| left,center | center,center | right,center |
|----------------------------------------------|
| left,bottom | center,bottom | right,bottom |
|----------------------------------------------|

div{
    height: 600px;
    width: 600px;
    background-image: url("1.jpg");         /* 图片背景 */
    background-repeat: no-repeat;           /* 背景图片不平铺 */
    background-position: 100px 50px;        /* 相对于div标签的,距离左边100px,距离上面50px */
}

/* 简写方式 */
background:颜色/图片路径 是否平铺 图片位置

div{
    height: 600px;
    width: 600px;
    background: url("1.jpg") no-repeat center center;
}

六、边框

边框属性:

1、border-width 宽度

2、border-style 样式

3、border-color 颜色

div{
    height: 200px;
    width: 200px;
    border-width: 2px;
    border-style: solid;
    border-color: red;
}

/* 简写方式 */
div{
    height: 200px;
    width: 200px;
    border: 2px solid red;
}

边框样式:border-style

描述
none 无边框
dotted 点状虚线边框
dashed 矩形虚线边框
solid 实线边框

单独设置边框样式:

div{
    height: 200px;
    width: 200px;
    border-top-style: solid;    /* 单独设置上边框为实线 */
    border-top-color: red;      /* 单独设置上边框为红色 */

    border-bottom-style: dashed;    /* 单独设置下边框为虚线 */
    border-left-style: none;        /* 单独取消左边框 */
}

border-left:10px solid red;  	/* 单独设置左边框的简写方式 */

border-radius: 50%				/* 控制圆角 */

七、display属性

用于控制HTML元素的显示效果。

div{
    width: 100px;
    height: 100px;
    border: 1px solid red;
    display: inline;            /* 将标签设置为内敛标签 */
    display: inline-block;      /* 将标签设置为同时具备内敛和块级标签的一些特性,比如可以设置高度宽度,但是不独占一行 */
    display: none;              /* 隐藏标签 ,并且不占用自己之前的空间 */
    display: block;             /* 将内敛标签设置为块级标签 */
}

隐藏标签
visibility: hidden; 	/* 隐藏标签,但是标签还占用原来的空间 */
display: none;  		/* 隐藏标签 ,并且不占用自己之前的空间* */

意义
none HTML文档中元素存在,但是在浏览器中不显示。一般用于配合JavaScript代码使用。
block 默认占满整个页面宽度,如果设置了指定宽度,则会用margin填充剩下的部分。
inline 按行内元素显示,此时再设置元素的width、height、margin-top、margin-bottom和float属性都不会有什么影响。
inline-block 使元素同时具有行内元素和块级元素的特点。

八、css盒子模型

css里面,每个标签可以称为一个盒子模型:

1、content(内容):盒子的内容,显示文本和图像所占的空间

2、padding(内填充):内边距,用于控制内容与边框之间的距离

3、border(边框):围绕在内边距和内容的外边框宽度

4、margin(外边距):用于控制元素与元素之间的距离;margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。

border内边距
div{
    height: 100px;
    width: 100px;
    background-color: red;
    padding-left: 10px;			
    padding-right: 10px;
    padding-top: 20px;
    padding-bottom: 20px;
    /* 简写 */
    padding: 10px 20px;            /* 10px上下内边距 ,20px左右内边距 */
    padding: 10px 20px 5px 2px;    /* 对应上右下左 */
}

margin外边距
top			距离上面标签的距离
bottom		距离下面标签的距离
left 		距离左边标签的距离
rigth 		距离右边标签的距离

div.d1 {
    width: 200px;
    height: 100px;
    border: 2px solid deeppink;
    margin-bottom: 200px;
}
div.d2{
    width: 200px;
    height: 100px;
    margin-top: 100px;
    border: 2px solid blue;
/* 简写方式 */
margin: 10px 20px;
margin: 10px 5px 6px 3px;

两个情况:
		垂直方向如果上下两个标签都设置了margin外边距,那么取两者的最大的值
		水平方法,两个标签都设这外边距,取两者的边距之和

九、浮动float

浮动的两个特点:

1、浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。

2、浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。

三种取值:

left:向左浮动

right:向右浮动

none:默认值,不浮动

div.d1 {
    width: 200px;
    height: 100px;
    background-color: red;
    float: left;		/* 向左浮 */
}
div.d2{
    width: 200px;
    height: 100px;
    background-color: yellow;
    float: right;		/* 向右浮 */
}

浮动会造成父级标签塌陷问题
解决方法:
1 父级标签设置高度
2 伪元素选择器清除浮动,给父级标签加上类值

/* 方法1:*/
div.d1 {
    width: 200px;
    height: 100px;
    background-color: red;
    float: left;
}
div.d2{
    width: 200px;
    height: 100px;
    background-color: yellow;
    float: right;
}

div.d3{
    width: 100%;
    height: 150px;
    background-color: blue;
}

div.dd{
    height: 100px;		/* 设置父级标签高度 */
}


/* 方法2:*/
div.d1 {
    width: 200px;
    height: 100px;
    background-color: red;
    float: left;
}

div.d2{
    width: 200px;
    height: 100px;
    background-color: yellow;
    float: right;
}

div.d3{
    width: 100%;
    height: 150px;
    background-color: blue;
}

div.dd:after{
    content: ‘‘;      /* 结尾插入内容 */
    display: block;   /* 将内敛标签设置为块级标签 */
    clear: both;      /* 清除浮动 */
}

clear的值和描述        
	值		描述
	left	在左侧不允许浮动元素。
	right	在右侧不允许浮动元素。
	both	在左右两侧均不允许浮动元素。
---------------------------------------------------------
<div class="dd">

    <div class="d1">

    </div>
    <div class="d2">

    </div>
</div>

<div class="d3">

</div>

十、overflow溢出属性

描述
visible 默认值:内容不会被修剪,会呈现在元素框之外。
hidden 内容会被修剪,并且其余内容是不可见的。
scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit 规定应该从父元素继承 overflow 属性的值。

1 overflow(水平和垂直均设置)

2 overflow-x(设置水平方向,只出现x轴的滚动条)

3 overflow-y(设置垂直方向,只出现y轴的滚动条)

比如我们在一个标签里面写了一堆的文字,然后把标签的高度和宽度设置的比较小的时候,文字就溢出了:

div.d1{
    height: 50px;
    width: 100px;
    border: red solid 3px;
    overflow: auto;		/* 内容被修剪,显示滚动条 */
}


<div class="d1">
在茫茫的大海上,狂风卷记着乌云,在乌云和大海之间。
</div>

圆形头像示例

div.d1{
    width: 100px;
    height: 100px;
    border: red solid 2px;      /* 设置div的边框 */
    border-radius: 50%;         /* 设置边框圆角 */
    overflow: hidden;           /* 内容溢出隐藏 */
}
div.d1>img{
    max-width: 100%;    /* 让img标签按照外层div标签的宽度来显示 */
}


<div class="d1">
<img src="1.jpg">
</div>

总结一点:width宽度设置的时候,直接可以写100px,30%这种百分比的写法,它的宽度按照父级标签的宽度的百分比来计算。

十一、position定位

相对定位:relative 保留原来的空间位置,相对自己原来的位置移动,以左上角为基准

即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间。对象遵循正常文档流,所以不会出现像浮动那种父级标签塌陷的副作用

top:向下移动距离

bottom:向上移动距离

right:向左移动距离

left:向右移动距离

div.d2{
    height: 100px;
    width: 100px;
    background-color: yellow;
    position: relative;
    top: 100px;		/* 相对于自己原来的位置向下移动100px */
    left: 100px;	/* 在相对于自己原来的位置向右移动100px */
}

绝对定位:absolute 不保留自己原来的位置,按照父级标签或者祖先级标签,设置了position 为 relative 的标签的位置进行移动,如果一直找不到设置了设个属性的标签,那么按照浏览器界面来移动

div.d2{
    height: 100px;
    width: 100px;
    background-color: yellow;
    position: absolute;
    top: 100px;		/* 相对浏览器界面位置向下移动100px不保留原来的位置 */
    left: 100px;	/* 在相对浏览器界面位置向右移动100px不保留原来的位置 */
}

固定:fixed 不管页面怎么动,都在整个屏幕的某个位置

对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。

div.d2{
    height: 100px;
    width: 100px;
    background-color: yellow;
    position: fixed;
    top: 100px;		/* 相对浏览器界面位置向下移动100px */
    left: 100px;	/* 在相对浏览器界面位置向右移动100px */
}

十二、z-index控制层级

设置对象的层叠顺序。一般用在模态对话框上:

div.d2{
  z-index: 999;
}

1、z-index 值表示谁压着谁,数值大的压盖住数值小的,

2、只有定位了的元素,才能有z-index,也就是说,不管相对定位,绝对定位,固定定位,都可以使用z-index,而浮动元素float不能使用z-index

3、z-index值没有单位,就是一个正整数,默认的z-index值为0如果大家都没有z-index值,或者z-index值一样,那么谁写在HTML后面,谁在上面压着别人,定位了元素,永远压住没有定位的元素。

4、从父现象:父亲怂了,儿子再牛逼也没用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    
    <style>
        /* 最下面层 */
        div.d1 {
            height: 100px;
            width: 100px;
            background-color: red;
        }
		
        /* 中间层 */
        div.d2 {
            position: fixed;
            background-color: black;
            /* top\right\bottom\left都设置为0 */
            /* 意思就是全屏,这个标签把全屏都覆盖了 */
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            z-index: 99;
            opacity: 0.4; /* 设置透明度 */
        }
		
        /* 最上面层 */
        div.d3 {
            height: 400px;
            width: 300px;
            background-color: white;
            position: fixed;
            /* 设置了left:50% 和top:50%,你就会发现,
            你这个标签的左上角相对于页面的左面是50%,上面是50%,
            所以我们还要移动窗口,往左移动标签宽度的一半,
            往上移动高度的一半就行了。就是下面的margin设置 */
            left: 50%;
            top: 50%;
            /* 左下右上,别忘了,往左移动要负值,往上移动要负值,
            因为它的移动是按照自己标签的左上角来移动的。 */
            margin: -200px 0 0 -150px;
            z-index: 100;
        }
    </style>
</head>
<body>


<div class="d1">

</div>
<div class="d2">

</div>
<div class="d3">

</div>

</body>
</html>

十三、opacity透明度

用来定义透明效果。取值范围是0~1,0是完全透明,1是完全不透明。

方式一:针对背景透明度
div.d1{
    /* 背景颜色或者字体颜色等单独的透明度 */
    background-color: rgba(255,0,0,0.3); 
    height: 100px;
    width: 100px;
}

方式二:整个
div.d2{
    background-color: rgb(255,0,0);
    height: 100px;
    width: 100px;
    opacity: 0.3;  /* 整个标签透明度 */
}

CSS总结

上一篇:图的深度广度优先遍历 | JS


下一篇:CSS