No.1 - 制作一个简单的菜单动画效果---百度IFE

 

最近比较闲,在家做点训练

http://ife.baidu.com/course/detail/id/18?t=1527144851578#learn

CSS3新特性,兼容性,兼容方法总结

https://www.cnblogs.com/jesse131/p/5441199.html

课程概述

作业提交截止时间:09-01

关于此课程

此课程按照简单到难的顺序一共有八个任务,由浅入深的带大家了解 Web 动效落地方法 。完成这八道题,你会掌握如下技能:

  • 熟练掌握 CSS transition 、transform 、animation 的用法 ;
  • 怎么从一份动效标注 去 100% 还原 CSS 动画 ;
  • 学会使用常用的 前端动画开源库 。

课程适用人群

  • 你需要具备一定 HTML、CSS 开发基础;
  • 你对 动效设计概念 有一定的了解,既知道怎么做,也知道为什么要这么做;
  • 你需要具备熟练使用 git|github 的能力。

作者有话说

  • 在后续的一段时间,我会陆续在我的知乎专栏公布题目的写法和详细分析。https://zhuanlan.zhihu.com/uxelement
  • 建议你在看我的方法之前,尽量先自己先实现,我的方法不一定比你的好。也欢迎你在完成课程的闲暇,贡献自己的学习笔记。毕竟总结沉淀才是最好的学习方法。
  • 如果你对本课程有任何意见,或者你跟我一样是个爱猫人士的话,欢迎来我的知乎勾搭~我们可以聊聊技术(养猫)心得:)

下面进入本学院第一个任务

任务目的

  • 熟悉 CSS3 过渡子属性
  • 通过 JavaScript 触发过渡效果
  • 理解语义化,合理地使用 HTML 标签来构建页面

任务描述

  • 通过 CSS transition 实现如下效果:
    视频demo
  • 每次点击【切换样式】按钮的时候,出现视频 demo 所示的动画效果。
  • 学有余力的同学可以研究一下,如何通过修改贝塞尔曲线,让这个动效更贴近自然。

任务注意事项

  • CSS transition 的各项子属性(时间曲线)等详细值可以自由定义;
  • 注意浏览器中的兼容性;
  • HTML 及 CSS 代码结构清晰、规范;
  • 代码中含有必要的注释;

在线学习参考资料


 

1:行内元素水平居中 text-align:center;

2:button样式

    button{
         padding: 0;
          border: none;
         font: inherit;
         color: inherit;
          background-color: transparent;
          /* show a hand cursor on hover; some argue that we
          should keep the default arrow cursor for buttons */
          cursor: pointer;
    }
    .btn{
        background-color: #fff;
        border: 1px solid #ccc;
        border-radius:4px;
        padding: 0.5em 1em;
        margin-top: 5px;
    }

3:transition4个属性

transition: width 0.5s ease-out 1s;

4:Cannot set property 'width' of undefined?

这个问题不是CSS的问题,而是一个纯javascript的问题。
你的css写得没错,问题出在Javascript当中的 getElementsByClassName("aa"),这个方法得到的是一个由class="aa"的所有元素组成的集合,而不是单个元素;

集合是没有display属性的,集合中的元素才有display属性。当你试图做 集合.style.display的时候,自然会报错。

所以你这个问题的解决方案应该是:遍历集合中所有的元素,然后给每个元素都加上display="none"的属性。示例代码如下:


window.onload = function (){
 divset = document.getElementsByClassName("aa");
 for (var i = 0; i<divset.length;i++) {
   divset[i].style.display="none";
 };
 }

5:JS修改CSS样式

var obj = document.getElementById("btnB");
① obj.style.backgroundColor= "black";
② obj.setAttribute("class", "style2");
https://www.cnblogs.com/susufufu/p/5749922.html(全解)

6:原生JS事件写法

https://www.cnblogs.com/iyangyuan/p/4190773.html

7:伪类after和before的使用

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style>
    button{
         padding: 0;
          border: none;
         font: inherit;
         color: inherit;
          background-color: transparent;
          /* show a hand cursor on hover; some argue that we
          should keep the default arrow cursor for buttons */
          cursor: pointer;
    }
    .btn{
        background-color: #fff;
        border: 1px solid #ccc;
        border-radius:4px;
        padding: 0.5em 1em;
        margin-top: 5px;
    }
    div{
        text-align:center;
    }
    .hr{
        width:0;
        display: inline-block;
        height: 0px;
        border-top:1px solid blue;
        transition: width 0.5s ease-out;
    }
    p{
        transition: color 0.5s ease-out;
    }
    .box{
        border:1px solid #ebebeb;
        padding: 20px 10px;
        margin:20px;
        background-color: #f7f6f6;
        display: inline-block;
    }
    .box1{
        transform: skew(30deg);
    }
    .box2{
        transform: scale(0.5,1);
    }
    .box3{
        transform: rotate(45deg);
    }
    .box4{
        transform: translate(10px,20px);
    }
    .box5{
        transform: translate(20px,40px) rotate(45deg) scale(2,1) skew(30deg);
    }
</style>
<body>
    <div>
    <p>前端学院</p>
    <div class="hr"></div>
    <br>
    <button class="btn" onclick="change()">按钮</button>
    <br>
    <div class="box">box0</div>
    <div class="box box1">box1</div>
    <div class="box box2">box2</div>
    <div class="box box3">box3</div>
    <div class="box box4">box4</div>
    <div class="box box5">box5</div>
    </div>
</body>
<script>
    function change(){
        var hr = document.getElementsByClassName('hr');
        var p = document.getElementsByTagName('p');
        console.log(hr[0].style.width);
        if(hr[0].style.width){
            hr[0].style.width=null;
            p[0].style.color="black";
        }else{
        hr[0].style.width="100px";
        p[0].style.color="blue";
        }
    }
</script>
</html>

 

posted @ 2018-05-24 15:39  天才老王1993  阅读(368)  评论(0编辑  收藏  举报