菜鸟赵赵今天学什么?学CSS3

前言

嗨,老伙计们,你们好吗?我是lucky赵赵,请大家多多指教呀!

菜鸟赵赵重走前端之路,今天学CSS3!

不喜勿喷,不喜勿喷,接受任何善意的指教 ^ _ ^

CSS3

(一)定义及作用

CSS3是CSS最新的标准 本人浅显的觉得,这两者其实并没有很大的区别,毕竟CSS3向前兼容,它俩归根究底也就是样式而已 以下对一些新特性进行介绍

(二)边框圆角

减少网站的维护工作量、提高网站性能、增加了视觉美观性

1.样式名

border-radius复合写法

2.取值

可以取px单位的具体值,也可以取%

取1个值,四个角都一样,取多个值按照上左、上右、下右、下左的顺序顺时针取值,没有的和对角一样

取值中带有/符号表示单独设置圆角的x轴和y轴角度的复合写法

javascript 复制代码
eg:
/前的表示四个角的x轴值,/后的表示四个角的y轴值
border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;

3、注意

①正方形设置圆角时,设置为宽高的一半就可以形成一个圆,一旦形成一个圆就不能再变小了

②长方形设置圆角时,只能设置百分比才能形成一个椭圆,如果设置px会形成一个囊形,一旦形成一个囊型圆就不能再变小了

③设置圆角并不一定要有border属性,例如有背景颜色或者img一样可以设置圆角

④在单独设置圆角的x轴和y轴值时,需要注意,想要图形变长需改大y轴值,变宽需改大x轴值,变矮改小y轴值,变瘦改小x轴值

(三)盒子阴影

1.样式名

box-shadow

2.取值

按顺序写,水平和垂直阴影必写,选写的根据需要写

box-shadow:水平 垂直 模糊 尺寸 颜色 内外(默认为outset外阴影,inset内阴影)

3、注意

①模糊不能设负值

②水平和垂直指的是阴影的位置,水平负值是左边,垂直负值是上边

③内外指的是阴影在盒子的内还是外

(四)文本阴影

1.样式名

text-shadow

2.取值

按顺序写,水平和垂直阴影必写,选写的根据需要写

box-shadow:水平 垂直 模糊 颜色

制作3D字体时,可以采用书写多个阴影,只需要在后面加逗号接着写

css 复制代码
text-shadow:1px 1px rgba(197,233,248,0.8),
			2px 2px rgba(197,233,248,0.8),
			3px 3px rgba(197,233,248,0.8),
			4px 4px rgba(197,233,248,0.8),
			5px 5px rgba(197,233,248,0.8);

3、注意

①模糊不能设负值

②尺寸大小和font-size的大小一致

(五)不透明度

1.设置的方式

①opacity:.4;

②background-color:rgba(100,200,100,.4)//red green blue opacity

2.相同点

取值范围0-1, 0完全不可见/完全透明,1完全可见/完全不透明,都用于做蒙版效果

3.不同点

①opacity是个单独的样式,rgba()只是背景色的一种取值方式

②opacity影响背景和里面的内容,rgba()只影响背景不影响内容

4、注意

(六)2D或3D转换

1.样式名

transform 2D或3D转换

2.取值

不同取值有不同的效果

(1)移动/位移

①translate(x,y)沿着x轴和y轴移动

②translateX(x)沿着x轴移动

③translateY(y)沿着y轴移动

括号里的x,y可以传px单位的值,%,灵活单位如em vw等

特点:可以移出父级,仍在标准文档流中,原位置保留

(2)旋转

①rotate(ndeg)沿着x轴和y轴同时旋转n度

②rotateX(ndeg)沿着x轴转动,

③rotateY(ndeg)沿着y轴转动

n是数字,可正可负,正数表示顺时针旋转,负数表示逆时针旋转,deg是单位

(3)缩放

①scale(x,y)对宽度缩放x倍,对高度缩放y倍

②scaleX(x)对宽度缩放x倍

③scaleY(Y)对高度缩放y倍

markdown 复制代码
**缩小**:

0<倍数<1  缩小

-1<倍数<0   翻转缩小

**放大**:

倍数>1   放大

倍数<-1  翻转放大

临界值:1 原本大小    0 没有/隐藏     -1  翻转仍为原来大小

(4)倾斜/拉伸L(改变图形形状)

①skew(ndeg)沿着x轴和y轴同时倾斜/拉伸n度

②skewX(ndeg)沿着x轴倾斜,

③skewY(ndeg)沿着y轴倾斜

lua 复制代码
n是数字,可正可负,正数表示拉着左上角和右下角在水平方向或者在垂直方向拉伸,负数拉着右上角和左下角在水平方向或者在垂直方向拉伸,deg是单位
skew表示倾斜的角度,可以是一个值也可以是两个值
//一个值时只代表x轴方向的倾斜,两个值时,第一个值表示x轴方向(左右边)上的边倾斜,第二个值表示Y轴方向(上下边)上的边倾斜
//例子中0deg表示x轴水平方向上的边不倾斜,20deg表示y轴方向上的上下边倾斜20deg
transform: skew(0deg,20deg);

(七)transform-origin基点

1.样式名

transform-origin

2.取值

①px单位的长度值

②%

③用关键词 水平方向:left center right 垂直方向:top center bottom

注意:z轴只能用①

3.作用

在2D和3D的转换效果中,确定不动的点在哪里,默认值都是中心点(矩形对角线的交点)

注意:如果是父元素定了基点,那么子元素的基点在不设置的情况下默认和父元素一样

(八)3D效果必须在父级添加的样式

1.transform-style:preserve-3d;//写在父级内

转换效果按照3D效果展示------搭建3D舞台

2.perspective:1000px;

元素离视图的距离、透视------视角

(九)渐变

注意:ie浏览器10之前都不支持

1.定义

背景在两种或多种颜色之间平滑的过渡。

注意:它由浏览器生成,可以写background:渐变 或者 background-image:渐变,本质是图片

2.分类

线性渐变,径向渐变两种

3.线性渐变

①默认是从上往下的方向进行平均渐变

arduino 复制代码
background:linear-gradient(颜色1,颜色2,颜色3....) 

②方向词指定最后一个颜色的方向(线性渐变的方向)

css 复制代码
//设置渐变的方向时有两种写法
//第一种只需在第一个参数值里写上to方向,一般都是to top/bottom/left/right
background:linear-gradient(to 方向词,颜色1,颜色2,颜色3....) 
//第二种是在第一个参数值里写上角度,270deg(向左)、90deg(向右)、0deg(向上)、180deg(向下)
background:linear-gradient(角度,颜色1,颜色2,颜色3....) 

③颜色后面可以跟百分比或者像素,但渐变百分比的值后一个要比前一个大

arduino 复制代码
//重复的线性渐变,注意重复的线性渐变一定要写色标分布值
background:repeating-linear-gradient(颜色1 %,颜色2 %,颜色3 %....)
css 复制代码
eg:案例中的百分比表示的是orange颜色占50%此时不渐变,过了百分之50的时候开始渐变直到100%
background-image: linear-gradient(to left,orange 50%,green 100%);

④注意渐变的兼容性前缀一定要写在渐变的前面,而不是背景前,并且要保留最基础的渐变

css 复制代码
background-image: linear-gradient(to left,orange 50%,green 100%);
background-image: -webkit-linear-gradient(to left,orange 50%,green 100%);

4.径向渐变

①默认是均匀由内到外以圆形的渐变

arduino 复制代码
background:radial-gradient(颜色1,颜色2,颜色3....)  

②方向词指径向渐变的方向,默认由内向外进行径向渐变

改变径向渐变的方向只需在第一个参数值里写上:渐变方式 at 方向词

css 复制代码
//渐变方式有circle正圆和ellipse椭圆两种,方向词有top,center,right,left,bottom
background-image: radial-gradient(circle at right,orange,green);

注意:在写方向词时,可以写两个

css 复制代码
//例如:top left表示左上角,且两个方向词的顺序可以随意
background-image: radial-gradient(ellipse at top left,orange,green);

③径向渐变不均匀分布的写法

重复的径向渐变:可以用百分比也可以用像素值,注意重复的径向渐变一定要写色标分布值

arduino 复制代码
background:repeating-radial-gradient(颜色1 %,颜色2 %,颜色3 %....)  

正圆:写不均匀渐变分布时,需在第一个参数的第一个值写上分布大小的像素值,特别注意不能用百分比

arduino 复制代码
//由内向外的径向渐变,例子中20%表示到20%时orange颜色已经渐变完成,后面接着为green且不渐变
background-image: radial-gradient(20px circle at center,orange,green);

椭圆:注重区分x轴和y轴上的大小,所以在写不均匀渐变分布时一定要写上x轴上和y轴上分布大小的像素值,特别注意不能用百分比

arduino 复制代码
//由内到外的径向渐变,例子中50px表示x轴上的分布大小,30px表示y轴上的分布大小
//x轴的值大于y轴上的值,效果为横向的椭圆径向渐变,y轴的值大于x轴的值,效果为竖向的椭圆径向渐变
background-image: radial-gradient(50px 30px ellipse at center,orange,green);

④外层盒子影响内部径向渐变的方式的情况

外层盒子是长方形时径向渐变默认是由内到外的椭圆

arduino 复制代码
background-image: radial-gradient(颜色1,颜色2,颜色3....);
//效果同上
background-image: radial-gradient(ellipse at center,颜色1,颜色2,颜色3....);
//加circle径向改为由内到外的正圆
background-image: radial-gradient(circle,颜色1,颜色2,颜色3....);

外层盒子是正方形时径向渐变默认是由内到外的正圆

arduino 复制代码
background:radial-gradient(颜色1,颜色2,颜色3....)
//效果同上
background:radial-gradient(circle,颜色1,颜色2,颜色3....) 

(十)过渡 transition

只能用于简单地需要交互效果的动画

1.定义

同一个样式名,样式值从一种逐渐变成另一种

2.简写、复合样式名

transition:样式名 花费时间 时间曲线 等待时间

没有顺序要求,但浏览器会以看到的第一个时间为花费时间,样式名 花费时间必写,其余选写

等待时间指的是:当改变元素属性值后多长时间开始执行;

注意:all表示全部样式

3.单独样式

①transition-property 样式名

默认值是none 表示没有过渡,

all 表示所有样式名都可以过渡

某个样式名 width等,表示只有这个样式有过渡效果

②transition-duration 花费的时间 正数

默认值是0,表示没有过渡,

取值可以是秒 s 如3s 或者是毫秒 ms 1s=1000ms

③transition-delay 等待时间(常用.2s)

默认值是0,表示没有等待直接开始,

取值可以是秒 s 如3s 或者是毫秒 ms 1s=1000ms

可以为正也可以为负,为正表示等待多长时间开始过渡,为负表示提前多久开始过渡

④transition-timing-function 时间函数

developer.mozilla.org/zh-CN/docs/...

默认值是 ease 先慢再快再慢,类似开车效果

linear 匀速

ease-in 慢速开始

ease-out 慢速结束

ease-in-out 以慢速开始和结束和ease效果一样

step-start 过渡效果失效

step-end 在花费时间结束时开始过渡效果

(十一)动画

可以实现复杂的动画

1.定义

动画是复杂的过渡,过渡是简单的动画

动画分为创建动画和调用动画

2.创建动画

语法:(动画名字要有意义,分段是根据需要分多段,样式声明可以写一条或多条)

ruby 复制代码
@keyfram0es  动画名字{
	from{ css样式声明}
	to{css样式声明}
}
按百分比作为动画执行的阶段时,百分比可以随意设置,一般为了效果百分比会均匀分配
@keyfram0es  动画名字{
	0%{ css样式声明}
	50%{css样式声明}
	100%{css样式声明}
}

3.调用动画(复合写法)

语法:(name和是duration必写,其余选写)

css 复制代码
animation:    name   duration   timing-function      delay            count         direction

调用函数关键词   动画名  延续时间         时间函数    动画执行前延迟的时间   动画执行的次数    动画的执行方向 

eg:

arduino 复制代码
animation: move       5s      ease 	     2     linear     2000ms     infinite    alternate
  调用	move动画   5s内完成 先慢再快再慢  执行2次   匀速    等2s后开始	  循环播放    正反方向轮流执行

4、单独设置要调用的动画

①animation-name

调用的动画名

②animation-duration

延续的时间

③animation-timing-function

动画执行的时间函数

sql 复制代码
默认值是 ease   先慢再快再慢,类似开车效果

linear   匀速      

ease-in  慢速开始    

ease-out 慢速结束  

ease-in-out 以慢速开始和结束和ease效果一样

step-start   过渡效果失效

step-end   在花费时间结束时开始过渡效果

④animation-delay

动画执行前的延迟时间

可以为正也可以为负,为正表示等待多长时间开始执行动画,为负表示提前多久开始执行动画

⑤animation-iteration-count

动画重复执行的次数

值infinite表示无限循环

⑥animation-direction

动画执行的方向(不常用)

值normal表示正常顺序执行动画,没有任何变化

值alternate表示动画在正常顺序执行一次后紧接着反向执行一次

(十二)伪类选择器

1、动态伪类选择器(交互时进行的样式渲染),常用于a标签

①:link 在默认情况下标签

②:visited 已经访问过的标签

③:hover 鼠标进入的标签

④:active 鼠标左击选中不放时候的标签

2、UI元素状态伪类选择器,常用于input标签

①:enabled 可以状态

②:disabled 不可用状态

③:checked 已选中

3、结构伪类选择器

①:first-child 选择某个元素的第一个子元素

②:last-child 选择某个元素的最后一个子元素

③:nth-child(n) 选择某个元素的一个或多个特定元素(常用)

css 复制代码
//.demo li:nth-child(2n)、.demo li:nth-child(even)选中偶数行
//.demo li:nth-child(2n+1)、.demo li:nth-child(odd)选中奇数行

④:nth-last-child() 选择某个元素的一个或多个特定元素,从这个元素的最后一个子元素开始算

⑤:nth-of-type() 选择指定的元素中的某元素的一个或多个

⑥:nth-last-of-type() 选择指定的元素中的某元素的一个或多个,从这个元素的最后一个元素开始算

⑦:first-of-type 选择指定的元素中的第一个元素

⑧:last-of-type 选择指定的元素中的最后一个元素

⑨:only-child 选择的元素是它的父元素下的唯一一个子元素

⑩:only-of-type 选择指定的元素是它的父元素下的唯一一个子元素

:empty 选择的元素里面没有任何内容

(十三)伪元素

1、定义

用于向某些选择器设置特殊效果

2、作用

使内容和样式分离

3、伪元素

①::first-letter 选中一段话的第一个文字

scss 复制代码
常用案例:(让一段文字的首个文字变大加粗下沉)
.demo::first-letter{
	font-size:40px;
	font-weight:bold;//文字加粗
	float:left;//想要文字下沉必须写浮动
}

②::first-line 设置文字的第一行的样式

③::before 在选择的某元素前面添加内容

css 复制代码
.demo::before{
	content:url(./tu.png);//必写元素,可以是路径,如果没有内容直接写个引号
}

④::after 在选择的某元素后面添加内容

css 复制代码
.demo::after{
	content:url(./tu.png);//必写元素,可以是路径,如果没有内容直接写个引号
}

Happy Ending

好啦!下次见啦!

相关推荐
梦境之冢7 分钟前
axios 常见的content-type、responseType有哪些?
前端·javascript·http
racerun10 分钟前
vue VueResource & axios
前端·javascript·vue.js
m0_5485147727 分钟前
前端Pako.js 压缩解压库 与 Java 的 zlib 压缩与解压 的互通实现
java·前端·javascript
AndrewPerfect28 分钟前
xss csrf怎么预防?
前端·xss·csrf
Calm55031 分钟前
Vue3:uv-upload图片上传
前端·vue.js
浮游本尊35 分钟前
Nginx配置:如何在一个域名下运行两个网站
前端·javascript
m0_7482398336 分钟前
前端bug调试
前端·bug
m0_7482329238 分钟前
[项目][boost搜索引擎#4] cpp-httplib使用 log.hpp 前端 测试及总结
前端·搜索引擎
新中地GIS开发老师43 分钟前
《Vue进阶教程》(12)ref的实现详细教程
前端·javascript·vue.js·arcgis·前端框架·地理信息科学·地信
m0_748249541 小时前
前端:base64的作用
前端