CSS效果与动画

CSS效果


效果属性


1. box-shadow

  • 该属性向框添加一个或多个阴影,属性是由逗号分隔的阴影列表,每个阴影由 2-4 个长度值、可选的颜色值以及可选的 inset 关键词来规定。省略长度的值是 0。
  • 语法格式
box-shadow: h-shadow v-shadow blur spread color inset;
描述
h-shadow必需,水平阴影的偏移,允许负值。
v-shadow必需,垂直阴影的偏移,允许负值。
blur可选。模糊距离。
spread可选。阴影的尺寸,即扩展区域,允许负值(缩小阴影)
color可选。阴影的颜色。
inset可选。将外部阴影 (outset) 改为内部阴影。

补充:对于color值,可以使用rgba(r,g,b,value),最后一个值value表示透明度,介于0-1之间,0为全透明,1为不透明

2. text-shadow(关于文字的样式效果)

  • text-shadow 属性向文本设置阴影。
  • 语法格式
text-shadow: h-shadow v-shadow blur color;
描述
h-shadow必需,水平阴影的偏移,允许负值。
v-shadow必需,垂直阴影的偏移,允许负值。
blur可选。模糊距离。
color可选。阴影的颜色。

3. border-radius

  • border-radius 属性是一个简写属性,用于设置四个 border-*-radius 属性,分别是border-top-left-radiusborder-top-right-radiusborder-bottom-right-radiusborder-bottom-left-radius。因此,如果仅设置一个值的话border-radius:10px,等价于border-radius : 10px 10px 10px 10px;
  • 注意四个数值的书写顺序,不同于padding和margin的“上、右、下、左”的顺序,border-radius采用的是左上角、右上角、右下角、左下角的顺序
  • border-radius可以省略部分值,如果省略 bottom-left,则与 top-right 相同。如果省略 bottom-right,则与 top-left 相同。如果省略 top-right,则与 top-left 相同。
  • border-radius的数值有三种表示方法:px、%、em。在使用px来表示圆角值的时候,圆角的弧度一般都是一个以宽高为半径的圆形的1/4弧形,然后把效果加在实际大小中,受边框border 的影响;在使用%来表示圆角值的时候,不受边框border的影响,若对象的宽高相等,则乘上百分比就是圆角的大小(当50%或者以上时,成为圆形),若对象宽高不等,圆角的弧度以对象的宽高乘以百分数后得到的值r1和r2,作为两条半径绘制出来的椭圆产生的弧度。
  • 另一种写法(W3C)
border-radius: 1-4 length|% / 1-4 length|%

“/”前的四个数值表示圆角的水平半径,后面四个值表示圆角的垂直半径

4. background

  • background 简写属性在一个声明中设置所有的背景属性。

  • 可用于:纹理、图案的变化;渐变;雪碧图动画;背景图尺寸适应
    PS:雪碧图是什么?
    Answer: 雪碧图本质上就是将众多图片拼贴为一张作为背景图片引用。给一个元素设置固定大小,让它的背景图片位置进行变化,就好像显示出了不同的图片,这就是雪碧图的原理。而所谓的雪碧图动画,就是把多帧要显示的动画切成多张图片排列在一起,通过CSS动画属性使图片变换,从而达到动画效果。

  • 可能取值(参考w3c)

描述
background-color规定要使用的背景颜色
background-position规定背景图像的位置
background-size规定背景图片的尺寸
background-repeat规定如何重复背景图像
background-origin规定背景图片的定位区域
background-clip规定背景的绘制区域
background-attachment规定背景图像是否固定或者随着页面的其余部分滚动
background-image规定要使用的背景图像
inherit规定应该从父元素继承 background 属性的设置

5. clip-path

  • clip-path 属性可以通过定义裁剪区域来决定目标元素哪个区域可见,哪个区域不可见,只有在闭合路径内的部分才显示。
  • 可用于:对容器进行裁剪;定义几何图形;自定义路径。
  • 可以通过url 引入内嵌的或者外置的SVG,又或者是直接用自带的形状为clip-path 属性指定路径
    PS:SVG是什么?
    Answer: 英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形
  • 特点:
    1 调整图案形状时,容器的占位和大小是不变的(而border-radius是改变了容器大小)
    2 支持容器内的动画

6.边框

  1. border-style 属性用于设置元素所有边框的样式,或者单独地为各边设置边框样式
    可能的取值(参考w3c):CSS border-style属性

  2. border-color 属性设置四条边框的颜色。此属性可设置 1 到 4 种颜色。border-color 属性是一个简写属性,可设置一个元素的所有边框中可见部分的颜色,或者为 4 个边按照上、右、下、左的顺序分别设置不同的颜色。
    可能的取值(参考w3c)

描述
color_name规定颜色值为颜色名称的边框颜色(比如 red)。
hex_number规定颜色值为十六进制值的边框颜色(比如 #ff0000)。
rgb_number规定颜色值为 rgb 代码的边框颜色(比如 rgb(255,0,0))。
transparent默认值。边框颜色为透明。
inherit规定应该从父元素继承边框颜色。

如果将元素大小设置0,边框设置不同大小和颜色,效果如下:
在这里插入图片描述

<style>
        .test{
            width:0;
            height:0;
            border-width:50px 30px 20px 80px;
            border-style:solid;
            border-color:blueviolet darkkhaki springgreen crimson;
        }
</style>
  1. 利用边框实现三角形的绘制
    边框加上颜色后,可以看出是三角形,利用border-color属性把任意三条边框设置透明即可
<style>
        .test{
            width:0;
            height:0;
            border-width:50px 30px 20px 80px;
            border-style:solid;
            border-color:transparent transparent transparent crimson;
            /*将三条边框设置透明*/
        }
</style>

在这里插入图片描述


CSS动画

  • 动画的作用:引起注意、信息反馈、加载掩饰
  • 补间动画transition,参考w3c:CSS动画-transition
  • animation属性可以通过控制关键帧来控制动画的每一步,实现更为复杂的动画效果。ainimation实现动画效果主要由两部分组成:1)通过类似Flash动画中的帧来声明一个动画; 2)在animation属性中调用关键帧声明的动画。参考w3c:CSS动画-animation

1、如何平移/放大/旋转一个元素
  使用transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。详见:CSS动画-transform
  以下仅讨论2D变换:
  平移元素:translateX(-100px)在X轴方向上向左移动100个像素(向右为正方向),同理有translateY(-100px)(向下为正方向),可以合并写为translate(-100px,-100px)
  放大/缩小元素:transform:scale(0.3,2);在x轴方向变为原来0.3倍,在y轴方向 变为原来2倍。可以为负,此时先旋转180度后再缩放
  旋转元素:transform:rotate(-30deg);逆时针旋转30度(值为正顺时针旋转,为负逆时针旋转)
  
2、如何实现transition动画
  元素的状态必须有所改变,即transition就是实现元素两种状态之间的衔接过程。
 除了参考w3c的介绍后还有几点需要注意:
 ① transition: all 1s;这种写法是指所有属性均应用动画;
 ②transition: width 1s ,background-color 1s; 支持多个属性变化,每种属性之间要用逗号隔开;
 ③过渡效果通常在用户将鼠标指针浮动到元素上时发生,单纯的代码不会触发任何过渡操作,需要通过用户的行为(如点击,悬浮等)触发,可触发的方式有: hoever 、focus 、checked 媒体查询触发和JavaScript触发;
 ④transition只能定义开始状态和结束状态,不能定义中间状态;

3、如何实现帧动画?
  依旧使用keyframe来实现,中间每一个关键帧之间有过渡动画叫做关键帧动画,没有过渡动画的叫逐帧动画。
  逐帧动画的特点:适用于无法补间计算的动画、资源较大、使用steps()。
  @keyframes 用来指定CSS动画一次循环中,多个时间节点处的CSS属性,默认会补充补间动画,来实现关键帧动画。例如:

  @keyframes run{
            0%{ /*0%可以写成from*/               
                width: 100px;
            }
            10%{
                width: 50px;
            }
            90%{
                width: 850px;
            }
            100%{/*100%可以写成to */
                width: 800px;
            }

这段代码定义了一个名为run的CSS动画,在一次循环中指定了4个时间点,使div的width属性进行变化。
  而animation-timing-function: steps(1);则指定了各个时间点过渡时,采用一段式阶跃函数,即消除了补间动画,常用于无法补间计算或不适合补间计算的动画,从而实现逐帧动画。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值