Hello,大家好!
小女来更博啦!CSS福利送上~~~
首先给大家介绍一下CSS到底是什么?
一、CSS概念
W3C规范中,要求有三条:一 为“两个分离”,二 为语言遵循语义化,三 为代码书写规范性。其中要求的第一条“两个分离”指的是内容与表现分离以及内容与行为分离,而其中的“表现”指的就是CSS。CSS全称Cascading Style Sheets,中文名为层叠样式表,是一种用来表现HTML等文件样式的计算机语言,可以给HTML带来更多更精彩的表现形式。
二、CSS引入的三种方式
1、行内样式表
直接在HTML标签中,使用style=""的方式引用;
eg. <div style="height: 30px;"></div>
优点:优先级最高;使用灵活。 缺点:不符合W3C关于内容与表现分离的要求,不利于样式复用;
2、内部样式表
在 <head></head>标签中,使用style标签包裹CSS代码。
<head>
<style type="text/css" >
</style>
</head>
特点:一定程度上实现了HTML与CSS的分离。但是分离不够彻底,没办法实现多页面共用样式。
3、外部样式表:
将css单独写入css文件中,并与HTML文件关联。
【导入CSS文件的两种方式】
① 在head标签中,使用link链接。
eg. <link rel="stylesheet" type="text/css" href="http://www.mamicode.com/css/01-CSS.css" />
② 在style标签中,使用@import 导入。
eg. @import url("css/02-CSS导入方式和优先级");
优点:彻底实现HTML与CSS 的分离,符合W3C的规范,有利于多页面复用,统一样式。常用link方式引入。
三、CSS常用选择器
<1> 通用选择器
1.写法:*{}
2.优先级:最低
<2> 标签选择器
1.写法:标签名{}
2.作用:根据选择器名称,选中页面中所有的HTML标签。
<3> 类选择器(class选择器)
1.写法:.class名{}
调用:在HTML标签中,使用class="class名称"调用选择器;
2.优先级: class选择器 > 标签选择器;
<4> ID选择器
1.写法:#ID名{}
调用:在HTML标签中,使用id="id名"调用选择器;
2.优先级:ID > class > 标签选择器 ;
3.同名id只能有一个;
<style type="text/css" >
*{
color: pink;
background-color: darkgrey;
}
li{
color: red;
}
.li01{
color: blue;
}
#first{
color: green;
}
</style>
<5> 交集选择器
1.写法:选择器1选择器2选择器3......{}
多个选择器之间紧挨着,没有任何分隔;
2.生效规则:一个标签要满足交集选择器,则必须满足交集选择器中出现的所有选择器;
<6> 并集选择器
1.写法:选择器1,选择器2,选择器3,...,选择器n{}
选择器之间,用 逗号 分割
2.生效规则:只要满足并集选择器中的任何一个,就能生效。
<7> 后代选择器
1.写法: 选择器1 选择器2 ... 选择器n{}
选择器之间,用 空格 分割
2.生效规则:必须满足后一个选择器是前一个选择器的后代,才会生效。
<8> 子代选择器
1.写法:选择器1>选择器2>...选择器n{}
选择器之间,用 > 分割
2.必须满足后一个选择器是前一个选择器的直接子代,才会生效。不能隔代,即中间包含其他标签,不会生效。
#first.li01{
color: deepskyblue;
}
#first,.li01{
color: deeppink;
}
ul li{
color: darkorange;
}
div>ul>.li01{
background-color: deepskyblue;
}
<9> 选择器的命名规则
① 只能由字母、数字、下划线、减号组成;
② 开头不能是数字;减号也不能单个独立存在,多个减号可以。
<10> 选择器的优先级
1. 第一原则:近者优先。作用于最里层的选择器,生效;
2. 当作用于同一层时,
每一种选择器所占优先级,可以进行运算获得:
标签选择器占权重为1
class选择器占比重为10
id选择器占比重为100
行内样式表 style=""占权重为1000
eg. .div1 #div2 div .div4 #li{} //221
.div1 .div2 #div #div4 #li{} //320
【注】只有交集、后代、子代选择器才参与权重的累加!而并集选择器相当于写了多个选择器,没有总优先级!
eg. #div,.div{} 并集选择器相当于两个选择器,分别是10,100
3. 如果计算出的优先级完全相同,则后写的选择器生效;
eg. #div.div{}
.div#div{}
两者的优先级都是110,所有后写的选择器生效。
四、 CSS常用文本属性
1. 字体、字号类
font-style: 设置斜体; italic倾斜 normal正常;
font-weight: 字体粗细; bold加粗、normal正常、lighter变细;也可以通过100~900数值设置;
font-size: 字体大小; 可以使用像素(px)、 百分比(%)或者 em,其中浏览器默认16px;
字号: 200% 表示 浏览器默认大小(16px)的两倍= 32px
font-family: "微软雅黑" ,"幼圆", "隶书" ,"宋体", "黑体" ,sans-serif;
设置字体,多个字体之间用逗号分隔。
font-variant: small-caps; 大写变大,小写变小。
<style type="text/css">
.div{
width: 500px;height: 500px;
color: #000000;
background-color: rgba(255,0,222,0.3);
}
.div{
font-weight: lighter;
font-style: italic;
font-size: 30px;
font-family:"宋体","黑体","微软雅黑","幼圆","隶书",sans-serif;
font-variant: small-caps;
font:75%/1.5 arial "微软雅黑",sans-serif;
}
</style>
2. 字体颜色类
(1) color:字体颜色;
(2) opacity:透明度,可选值0-1;1-不透明。0-全透明。
【CSS中的颜色单位】
① 使用颜色英文表示:red/green/blue 红绿蓝
② 使用十六进制表示:#ffffff #000 #000000 黑色
③ 使用rgb(255,255,0)三个数值分别表示red、green、blue,范围是0~255
rgba 第四位表示透明度,范围0~1 其中0-全透明;1-不透明
【rgba和opacity的区别】
rgba本身可以设置颜色,而opacity必须配合其他颜色属性使用
rgba 仅仅让当前元素设置的颜色透明;而opacity会让当前元素里面的所有文字、背景、子元素都透明。
3、行距、对齐类
(1)line-height:行高;可以写px单位、可以直接写数字(表示默认行距的几倍)、可以写%(表示默认行距的百分比);
行高的作用:让单行文字在div中垂直居中,设置行高=div的高度,可以使单行文字垂直居中;
(2)text-align:设置区域内的行级元素的水平对齐方式(left、right和center)
(3)letter-spacing:字符间距,字与字之间的距离。
(4)text-decoration: 下划线
去掉超链接的下划线: text-decoration: none;
(5)overflow: 设置超出区域的文字显示方式;
(6)text-overflow: 设置行末多余文字的显示方式 (不能单独用)需配合 white-space: nowrap; (文字不断行)一起使用!
(7)white-space: nowrap; 设置中文行末,不断行显示。
(8)text-indent: 首行缩进
(9)-webkit-text-stroke: 1px; 文字描边
【注】-webkit :表示只有webkit内核浏览器上 才能生效。如chrome;
(10) text-shadow 阴影 text-shadow:5px 10px 0px yellow ;
五、CSS 常用背景属性
1、background-color:背景色
2、background-image:背景图 两者同时存在。背景图覆盖背景色。
3、background-repeat: repeat:平铺; no-repeat:不平铺; repeat-x:x轴 平铺(一行) repeat-y:y轴 平铺(一列)
4、background-size:背景图大小;
【指定宽度高度】 可以写px,也可以写%(父容器宽高的百分比)当写两个属性时:表示宽和高当写一个属性时:表示宽度,高度将会等比缩放。
5、background-position: right bottom; 背景图片偏移量
eg. background-position: right bottom;
eg. background-position: 50px 50px; /*与左上角位置比较, 图片向右移50px/向下移50px*/ 左负右正、上负下正
eg.background-position: 30%; 水平方向去掉图片宽度,剩余区域 左边:右边 = 3:7
六、CSS盒模型
<1> margin: 200px;外边距
① 只写一个值:表示四周外边距均为指定值。
② 写两个值:第一个数上下外边距,第二个数左右外边距。
③ 写三个值:表示上右下,左边默认等于右边。
④ 写四个值:表示上右下左四条边顺时针方向。
⑤ margin:0 auto;设置块级元素在父容器中水平居中。
【区别】text-align: center; 是将块级div中的文字关于该块级div标签水平居中。
<2> padding: 100px; 内边距 设置方式与margin完全相同。
【注】但是,使用内边距会把div区域撑大,使用时必须注意div实际宽高为多大!
<3> border: 10px solid #0000FF;边框 dotted - 虚线 solid - 实线
① 设置边框需要三个属性:原则上三个属性缺一不可,顺序不可随意修改
② 可以使用top、right、bottom、left分别设置四个边!
<4> border-radius 圆角 eg. border-radius: 20px 50px 20px 50px/20px 50px 20px 50px;
<5> border-image 图片边框 eg. -webkit-border-image: url(img/008.png) 27/27px stretch; 拉伸
【注意】第二个值图片的切片宽度写的时候不能带px单位!第三个值边框的宽度写的时候必须带px单位,与切片宽度用 / 分隔!类似于 font-size/line-height
<6> box-shadow 盒子阴影 eg. box-shadow:20px 20px 20px 10px red inset ; 内阴影
<7> outline 外围线 显示在border外面, 并且不会占据空间。可能会覆盖四周内容。
<8> 手动设置盒子类型
box-sizing: border-box; 怪异(IE)盒子[
设置的宽度和高度,包含content+padding+border
];
box-sizing: content-box; 标准盒子[设置的宽度和高度,仅仅包含content部分]; 默认效果。
七、CSS定位
<1> 相对定位
1、使用position: relative ;设置元素为相对定位元素
使用top right bottom left调整元素的位置
2、当left 和right同时存在时,left生效; 当top 和bottom同时存在时,top生效 。
<head>
<meta charset="UTF-8">
<title>CSS 定位</title>
<style type="text/css">
#div1-1{
width: 200px;
height: 200px;
background-color: red;
position: relative ;
top: 100px; /*距离原来位置的上边100px top生效*/
bottom: 200px;
right: 200px;
left: 100px; /*距离原来位置的左边100px left生效*/
z-index: -1;
}
#div1-2{
width: 200px;
height: 200px;
background-color: yellow;
position: relative;
z-index: 0;
}
</style>
</head>
3、定位机制:
① 相对定位是相对于自己原来的位置定位,当top等属性不指定时,元素位置不发生改变;
② 相对定位不会释放元素在原有文档流中的位置,也不会影响其他文档流元素位置。
4、关于元素z轴重叠:
① 定位元素,默认的z轴高于普通文档流元素。
② 同为定位元素,后来者居上,即后面盖住前面。
③ 使用 z-index 手动调节定位元素的上下层z轴顺序。z-index 默认0,而且只能作用于定位元素
<2> 绝对定位
1、使用 position: absolute; 设置元素为绝对定位
2、定位机制:
① 相对于第一个使用了relative、absolute、fixed(进行了定位的)定位的祖先元素进行定位
② 如果所有的祖先元素都未定位,则相对于浏览器左上角进行定位。
③ 使用absolute的元素,会从文档类中完全删除,原有空间会被释放。
#div2{
width: 500px;
height: 500px;
background-color: blue;
margin: 0 auto;
position: relative; /* 目的:将绝对定位div2-1的位置限制于div2中*/
}
#div2-1{
width: 200px;
height: 200px;
background-color: red;
position: absolute;
left: 100px;
top: 100px;
}
<3> 固定定位
1、固定定位使用 position=fixed; 设置固定位置
2、固定定位,是一种特殊的绝对定位!只是祖先元素无法使用定位锁住;
3、定位机制: 永远相对于浏览器左上角进行定位,而且不随滚动条的滚动而滚动。
<4> z-index 属性
1、作用:根据其设置的数值,决定元素在z轴方向上的层叠次序;
2、使用要求:
(1)z-index 只能给 定位元素(relative、absolute、fixed)调整层叠次序;
(2)z-index 要考虑父容器的 z-index 的约束,
① 如果父容器设置的 z-index 的属性,则子容器的所有元素,将不能脱离父容器层次的约束。(即,父容器设置了z-index,则子容器只能以父容器的数值为准; 再给子容器设置z-index,只能调整子容器在父容器之内的层叠顺序)
② 如果父容器没有设置z-index,或者设置为z-index:auto;则子容器调整z-index将不受父容器层次约束。
3、【 z-index:auto;和z-index:0;异同 】
① z-index: auto;是默认值,与 z-index: 0;处于同一平面;
② z-index: 0;会约束子元素必须与父元素在同一平面;z-index: auto; 不会约束子元素层次。
#div3{
width: 200px;
height: 200px;
background-color: red;
position: relative;
top: 150px;
left: 100px;
/*z-index: auto; */ /*设置 auto与设置为数值的区别*/
z-index: 0;
}
#div3-1{
width: 100px;
height: 100px;
background-color: yellow;
position: relative;
z-index: 10;
}
#div3-2{
width: 150px;
height: 150px;
background-color: blue;
position: relative;
}
效果图附上
<5> clip 属性
1、作用:用于裁切图片标签,显示图片指定区域;
2、使用要求: 只能作用于有 absolute 或 fixed 定位的图片标签上;
3、clip属性,接受一个rect()函数,函数传入四个值,分别表示上右下左四条切线位置;
【注意】 与其他属性不同的是,rect中的四个值,上下两个值的距离都是从上边量取的,左右两个值的距离都是从左边量取的
<6> CSS 负边距的使用
1、实现块级元素在父容器中水平垂直居中 【如何实现定位元素居中】
① 设置子容器为定位元素;
② left: 50%; margin-left: -width/2;
top: 50%; margin-top:-height/2;
2、使用负边距增大元素宽度
① 子容器的宽度,不指定;只指定高度、或者有内容撑开高度;
② margin: 0px -50px;可以使左右两边超出父容器50px。
八、后记
今天的CSS内容就更新到这里了~~~这些都是CSS最基础的内容~~~大家有需要可以收藏呦~
学起来 —— CSS 入门基础