学习transition基本用法

举报
ludierr 发表于 2020/09/27 23:08:06 2020/09/27
【摘要】 CSS中最简单的动画就是transition,使页面元素慢慢的从一种状态变成另外一种状态,从而表现出一种动画的效果。

    CSS中最简单的动画就是transition,使页面元素慢慢的从一种状态变成另外一种状态,从而表现出一种动画的效果。

    transition有四个子属性(可以分别定义):

    1. transition-property: 过渡属性(默认值为all) ,即什么属性将用动画表现,例如, opacity

    2. transition-duration: 过渡持续时间(默认值为0s)

    3. transiton-timing-function: 过渡函数(默认值为ease函数)

    4. transition-delay: 过渡延迟时间(默认值为0s)

    也可以直接用transition 加上三种属性的合体简写

    写两个小例子来练手

    第一个小例子:鼠标经过导航底部有滑动条效果


    先做好导航条排版,li左浮动

 <nav>
        <ul>
            <li><a href="">首页</a></li>
            <li><a href="">技术领域</a></li>
            <li><a href="">资源工具</a></li>
            <li><a href="">云社区</a></li>
            <li><a href="">云直播</a></li>
            <li><a href="">云学院</a></li>
        </ul>
    </nav>

    然后,li标签设为相对定位,

    设置伪类,用绝对定位,距上方25px,左边20px,li的after属性,content内容为空,设为行内块元素显示,透明度为0(看不到下方滑动条),宽60px高0px,背景颜色为白色,

    transition ,有左到右显示滑动效果,更改width属性,0.2S完成,linear匀速过渡

nav ul li a::after {
            content: "";
            display: inline-block;
            width: 60px;
            height: 0px;
            background-color: #fff;
            position: absolute;
            left: 20px;
            top: 25px;
            opacity: 0;
            transition: width 0.2s linear; 
            
        }

    最后,是鼠标经过时after属性,宽高都显示,透明度为

nav ul li:hover a::after {
            width: 90px;
            height: 3px;
            opacity: 1;
            left: 5px;
            top: 35px;
        }


第二个小例子:雾面拉开的效果


     先将a标签(设置背景图片)用li包裹,li左浮动,排列整齐,

<div class="contain">
    <ul>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
    </ul>
</div>

    然后,li标签设为相对定位,

    设置伪类,用绝对定位,li的before和after属性,content内容为空,设为块元素显示,宽150px高300px,

    背景为白色,透明度0.4,呈现雾面效果,transform呈现45度角的拉开收回,

    最重要的transition属性,用一秒拉开,ease呈现即慢速开始,然后变快,然后慢速结束的过渡效果

.contain ul li::before, .contain ul li::after {
            content: "";
            display: block;
            width: 150px;
            height: 300px;
            background-color: #fff;
            opacity: 0.4;
            position: absolute;
            transform: rotate(45deg);
            transition: all 1s ease;
        }

最后,li的before和after的绝对定位的位置,和鼠标经过时的位置

.contain ul li::before {
            top: -101px;
            left: -30px;
        }

        .contain ul li::after {
            bottom: -101px;
            right: -30px;
        }

        .contain ul li:hover::before {
            top: -300px;
            left: -90px;
        }

        .contain ul li:hover::after {
            bottom: -300px;
            right: -90px;
        }

    这只揭开了transition的冰山一角,还需要更多的努力进行深入学习,有新的学习再来分享~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。