CSS过渡学习笔记

发布时间:2024-12-17 16:41:57

CSS过渡学习笔记


什么是CSS过渡?


CSS过渡(CSS Transitions)用于控制CSS属性变化的速率,使属性变化平滑进行,而不是瞬间完成。


使用场景:



鼠标悬停按钮颜色渐变
图片放大效果
菜单滑动展开


示例:


.box {
    width: 100px;
    height: 100px;
    background-color: orangered;
    transition: background-color 1s;
}
.box:hover {
    background-color: yellowgreen;
}




CSS过渡属性


transition


transition 是一个简写属性,可一次性定义所有过渡相关属性。


语法:


transition: property duration timing-function delay;


1. transition-property



指定需要应用过渡的CSS属性。
如:color, width, height


2. transition-duration



定义过渡动画所需时间。
如:1s (1秒)


3. transition-timing-function



定义动画的时间曲线。
常用值:
linear:匀速
ease:默认,先慢后快再慢
ease-in:慢速开始
ease-out:慢速结束
ease-in-out:慢速开始与结束


4. transition-delay



延迟过渡效果的开始时间。


示例:


.box {
    transition: width 2s ease-in-out 1s;
}




可过渡的CSS属性


只有具有中间值的属性才可实现CSS过渡。


支持的属性示例:



颜色属性:color, background-color
长度属性:width, height, padding
位置属性:top, left
透明度:opacity


不可过渡的属性:



display
visibility




同时设置多个过渡


可以通过逗号分隔实现多个属性的同时过渡。


.box {
    transition: height 1s ease, width 1s ease;
}




使用all关键字



transition: all可以对所有可过渡的属性生效。
注意:性能较差,推荐针对具体属性使用。


.box {
    transition: all 1s;
}




高级用法:结合 transform


旋转过渡


.box {
    transition: transform 1s ease;
}
.box:hover {
    transform: rotate(180deg);
}


缩放过渡


.box {
    transition: transform 1s;
}
.box:hover {
    transform: scale(1.2);
}


平移过渡


.box {
    transition: transform 1s;
}
.box:hover {
    transform: translateX(50px);
}




练习示例


翻转卡片动画


<div class="flip-card">
    <div class="front face">Hello World</div>
    <div class="back face"></div>
</div>


.flip-card {
    perspective: 1000px;
}
.flip-card .face {
    transition: transform 1s;
    backface-visibility: hidden;
}
.flip-card:hover .front {
    transform: rotateY(180deg);
}
.flip-card:hover .back {
    transform: rotateY(0deg);
}




总结



CSS过渡用于平滑过渡元素属性。
使用transition简写属性可控制多个属性的过渡效果。
常与transform搭配使用。
需注意性能问题,避免使用all。


下一步学习: CSS动画(Keyframes)。