html结构:
<div id="progress"><span></span>
</div>
css样式:
#progress{width: 50%
height: 30px
border:1px solid #ccc
border-radius: 15px
margin: 50px 0 0 100px
overflow: hidden
box-shadow: 0 0 5px 0px #ddd inset
}
#progress span {
display: inline-block
width: 100%
height: 100%
background: #2989d8 /* Old browsers */
background: -moz-linear-gradient(45deg, #2989d8 33%, #7db9e8 34%, #7db9e8 59%, #2989d8 60%) /* FF3.6+ */
background: -webkit-gradient(linear, left bottom, right top, color-stop(33%,#2989d8), color-stop(34%,#7db9e8), color-stop(59%,#7db9e8), color-stop(60%,#2989d8)) /* Chrome,Safari4+ */
background: -webkit-linear-gradient(45deg, #2989d8 33%,#7db9e8 34%,#7db9e8 59%,#2989d8 60%) /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(45deg, #2989d8 33%,#7db9e8 34%,#7db9e8 59%,#2989d8 60%) /* Opera 11.10+ */
background: -ms-linear-gradient(45deg, #2989d8 33%,#7db9e8 34%,#7db9e8 59%,#2989d8 60%) /* IE10+ */
background: linear-gradient(45deg, #2989d8 33%,#7db9e8 34%,#7db9e8 59%,#2989d8 60%) /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2989d8', endColorstr='#2989d8',GradientType=1 ) /* IE6-9 fallback on horizontal gradient */
background-size: 60px 30px
text-align: center
color:#fff
-webkit-animation:load 3s ease-in
}
@-webkit-keyframes load{
0%{
width: 0%
}
100%{
width:100%
}
}
可以看到其实这种进度条的动画是最容易实现的,根据具体进度百分比设置默认的width百分比和动画里100%处的width百分比就行了,比如说,我想实现70%的进度条动画效果,那么我只需要修改一下两处地方:
#progress span{width: 70%
}
@-webkit-keyframes load{
0%{
width: 0%
}
100%{
width:70%
}
}
2021年2月19日学习笔记
【椭圆】
【半椭圆】
沿纵轴对称,如果传4个值,分别从左上角开始以顺时针应用到各个拐角,如果提供3个值,意味着第4个值与第2个值相同
4个角还可以有不同的水平和垂直半径,在斜杠前指定1~4个值,在斜杠后指定1~4个值
当border-radius: 10px / 5px 20px时,相当于
border-radius: 10px 10px 10px 10px / 5px 20px 5px 20px
【四分之一椭圆】
其中一个角的水平和垂直半径值都需要是100%,而其他三个角都不能设为圆角
【扩展练习】
【平行四边形】
【平行四边形--伪元素】
【八角形】
【菱形】
需要图片的宽度与容器的对角线相等,而max-width: 100%是边长相等
scale()变形样式,是以它的中心点进行缩放的,除非额外指定了transform-origin
通过width属性来放大图片时,只会以它的左上角为原点进行缩放,需要负外边距调整
【裁切路径方案clip-path菱形】
【相关知识点】
clip-path属性 可以防止部分元素通过定义的剪切区域来显示(目前兼容性较差,IE和Edge不支持)
生成器https://www.html.cn/tool/css-clip-path/
一、基本图形
inset()矩形(上右下左的边距round上右下左圆角)
inset()可以传入5个参数,分别对应top,right,bottom,left的裁剪位置,round radius(可选,圆角)
circle圆形
circle()可以传人2个可选参数:
1. 圆的半径,默认元素宽高中短的那个为直径,支持百分比
2. 圆心位置,默认为元素中心点
半径公式
如果半径使用百分比:圆的半径 = (sqrt(width^2+height^2)/sqrt(2)) * 百分比
ellipse椭圆
ellipse()可以传人3个可选参数;
1. 椭圆的X轴半径,默认是宽度的一半,支持百分比
2. 椭圆的Y轴半径,默认是高度的一半,支持百分比
3. 椭圆中心位置,默认是元素的中心点
二、多边形polygon--正三角形
x: 0, y:100% 从元素的左上角开始,并从那里开始移动
x: 50%, y: 0
x: 100%, y: 100% 元素右边,元素底部
从左下角x: 0, y:100%开始,水平移动到50%,然后垂直向上到达顶部的坐标点(第二个点),接着水平移动到100%的位置,最后垂直向下回到底部,到达第三个坐标点
正方形
从左上角开始,垂直向下100%第二个点,平移100%第三个点,垂直向上0第四个点
正五边形 59/(59+95)=38.31%,31/(81*2)=19.14%
162/2 = 81
59是上面三角形的高度
95是下面三角形的高度
31是下面四边形的高度
正六边形 50/(100+50 2)=25%,150/(100+50 2)=75%
50 是左边三角形的高度
100 是边长
正七边形
22/(100+62 2)=10.09%
202/(100+62 2)=90.18%
43/(43+97+78)=19.72%
(43+97)/(43+97+78)=64.22%
62/(100+62 2)=27.68%
(100+62)/(100+62 2)=72.32%
正八边形
71/(100+71 2)=29.34%
(71+100)/(100+71 2)=70.66%
五角星
红叉叉
标签
也可用于动画中
如果觉得百分比不好计算,可以换算成px
下面就是第一个点的计算方法
35.00%*800=280px
29.75%*400=119px
只要两个 clip-path,其中包含的点个数相同,在animation的帧内部就可以线性切换了
如果不同是没有效果的
小技巧,如果点不够,可以将两个坐标点进行重合即可
推荐网址:
http://species-in-pieces.com/
30个动物全部使用CSS3写的。超牛
属性:一个最多可指定四个border-*-radius属性的 符合属性 ,这个属性允许你为元素添加圆角边框!
语法:border-radius:1-4 length|% / 1-4length|%
【length可为任意长度单位,比如px、em。
当使用%的时候,相对的不是字体的大小而是对应边的长度的百分比,例如border-top-left-radius:50%,那么左上角的圆角在左边的弧度是边框左边长度的50%、在上边的弧度是边框上边长度的50%;
因此如果设置border-radius:50%,那么边框将会变为一个椭圆】
兼容性:IE9+、Firefox4+,Chrome,Safari5+,Opera
-------------------------------------------------
CSS3指定每个圆角:
多值:
border-radius(四个值):左上角 右上角 右下角 左下角
border-radius(三个值):左上角 右上角和左下角 右下角
border-radius(两个值):左上角和右下角 右上角和左下角
border-radius(一个值):四个圆角值相同
border-top-left-radius:定义了左上角的弧度
border-top-right-radius:定义了右上角的弧度
border-bottom-left-radius:定义了右下角的弧度
border-bottom-right-radius:定义了左下角的弧度
box-shadow属性:可以设置一个或多个下拉阴影的框
语法:
box-shadow:h-shadow(水平位置偏移量)允许负值。必写;
v-shadow(处置位置偏移量)允许负值。必写;
blur(模糊距离)可选;
spread(阴影尺寸)可选;
color(阴影颜色)可选;
inset(内部阴影)可选;扩展属性,正值缩小,负值增大
box-shadow: 10px(横向,正值往右,负值往左) 10px(纵向,正值往下,负值网上) 10px(模糊,从边框到内容,完成渐变模糊) 10px(扩展,四周边界往外扩展10px) yellow(阴影颜色)
border-image
属性:使用border-image-*属性来构建美丽的可扩展按钮
语法:border-image:source slice width outset repeat;
兼容性:IE不兼容、Firefox、Chrome、Safari6+、Opera不兼容
-------------------------------------------------
border-image-source属性
border-image-source属性指定要使用的图像,而不是由border-style属性设置的边框样式
语法
border-image-source:none;
border-image-source:url("...");
-------------------------------------------------
border-image-slice属性
border-image-slice属性指定图像的边界向内偏移
语法
border-image-slice:number|%|fill;
-------------------------------------------------
border-image-width属性
brder-image-width属性指定图像边界的宽度
语法
border-image-width:number|%|auto;
-------------------------------------------------
border-image-outset属性
border-image-outset用于指定在边框外部绘制border-image-area的量
语法
border-image-outset:length|number;
-------------------------------------------------
border-image-repeat属性
该属性用于图像边界是否重复(repeated)、拉伸(stretched)或铺满(rounded)
语法:border-image-repeat:stretch|repeat|round|initial|inherit;