菜鸟赵赵今天学什么?学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

好啦!下次见啦!

相关推荐
默默学前端21 分钟前
ES6模板语法与字符串处理详解
前端·ecmascript·es6
lxh011330 分钟前
记忆函数 II 题解
前端·javascript
我不吃饼干37 分钟前
TypeScript 类型体操练习笔记(三)
前端·typescript
华仔啊40 分钟前
除了防抖和节流,还有哪些 JS 性能优化手段?
前端·javascript·vue.js
CHU7290351 小时前
随时随地学新知——线上网课教学小程序前端功能详解
前端·小程序
清粥油条可乐炸鸡1 小时前
motion入门教程
前端·css·react.js
这是个栗子1 小时前
【Vue3项目】电商前台项目(四)
前端·vue.js·pinia·表单校验·面包屑导航
前端Hardy1 小时前
Electrobun 正式登场:仅 12MB,JS 桌面开发迎来轻量化新方案!
前端·javascript·electron
树上有只程序猿1 小时前
新世界的入场券,不再只发给程序员
前端·人工智能
confiself1 小时前
deer-flow前端分析
前端