• CSS3特效网站http://leaverou.github.io/animatable/# 观后感


       好久没写博客了,不管是路过的还是我的少得可怜坚挺的fans,我回来了。

      之前一段时间忙于工作,忙于自己的一个css3小网站,网盘里积累了很多想写的东西,但是了解得不深入,也就没什么好写。 最近几天一直在关注w3cpluc列出的css3工具,里面列出了很多出色的css3属性生成方面的网站,和自己的小网站很类似,本想着借鉴别人的网站去修改自己的网站,在这过程中关注到了一个css3动画网站,就开始用firebug搜刮其中的精髓。

      以下是搜罗的一些觉得有技术含量的东西, 和那些刨根问底的大神自然没法比,凑活着看看呗。


      1 将单选框做成两个按钮的形状

        

        图中所看到的是两个正常按钮,用firebug 查看可以注意到是两个label标签,用css3(box-shadow:0.05em 0.05em 0.4em 0.1em rgba(0, 0, 0, 0.8) inset)渲染。如果光是这样,将会有两个裸露的<input type="radio">,他是用clip:rect(0px, 0px, 0px, 0px) 进行隐藏。

        clip属性详解

      2 css3 animation

        惭愧,今天第一次写用到animation。

        先说说一点个人的看法,animation 执行效率高、使用方便,但是不够灵活,想要自定义丰富的页面效果还得使用js去修改DOM的属性。

        想要实现css3定义的动画效果,两句话不可少,animation属性定义动画周期、渐变效果、延迟、循环次数,动画的前进后退。另外一个是keyFrame(关键帧),就是定义动画过程中几个关键位置的状态, 写作@keyFrames{},花括号中,0%表示开始位置,100%表示结束位置状态,其他的自己YY。

        animation关键帧是不会显示到页面源码上面的,要是js能设置一个选项,让开发者决定是否显示源码,将会是一个不错的主意。

      3 before,after, counter实现内容的显示.

        稍加观察就可以发现,动画块中的那些序号和小标题都没有出现在HTML中。而是通过css实现的,我觉得这样的好处显而易见,降低维护成本以及减少代码量。想要使用其中的计数器(counter),有三个步骤,重置,修改,获取。

          div{counter-reset : 计数器}//重置
            a{counter-increment: 计数器}//i++; 修改, 在这里,a标签出现一次,计数器就会累加。
              a:after{content :counter(计数器,decimal...)}//获取,写入。

      4 合适的时间触发动画效果

          一看到这个页面的时候,被这么多华丽丽的效果怔住了,心想要是现这么多效果,得多少js, 而且动画全开,网页一点都不卡,js执行效率处理得肯定很好,但是全都是用css实现的,所以用的全都是较为底层的代码,我们要做的只是调用,执行效率高很多。

        实现其中的mouseover效果,大致有两种办法,一种是鼠标移上去的时候给他添加animation属性,另外一种就是网站中出现的css控制的。

        #on-hover:checked ~ div[role="main"] > a[data-property]:not(:hover):not(:target){

          animation0s ease 0s normal none 1 none !important;

        }

        看着有点瘆人,#on-hover:checked ~div[role="main"],我还没搞清楚,但是我推测就是只有id为on-hover的单选框被选中的时候,自定义属性role为main的div中 含有data-property的a标签没有鼠标停留   并且不是被选中的情况下,会有一个(不能被覆盖的,最高权重,!important)无动画效果的animation属性。

        换而言之,当id为on-hover的元素被选中的时候,或者鼠标停留到a标签上的时候,或者a标签被选中的时候,都会有其独特的,有意义的animation属性(每个a标签都有要执行的动画,但是被!important覆盖掉了)。

      5 :not(:target)

        :not(条件A),not使用来筛选元素中的,不满足条件A的元素统统抛弃。

        :target作为筛选的条件有特殊的意义。 当URL后面有#abc(hash)的时候,通常表示链接到当前页面的某个id为abc的元素上。当点击<a href="#abc">的时候,页面会滚动到#abc的offsetTop处,URL也会发生相应的改变,这个时候#abc就满足了:target的条件。

        参考http://www.certifiedchinesetranslation.com/openaccess/CSS/target.html,在这片文章的最后我注意到这片文章是基于老外2003年的想法,让人好伤心啊...

      虽老早听说css3的强大,但是工作中真正用到css3的地方还是不多,点到为止。没什么文采,凑活下;不足的地方,指点下;小站,关注下。8

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>css3-animation-transition-transform</title>        
            <meta name="author" content="Chan">
            <meta name="description" content="Come on baby!">
            <meta name="viewport" content="width=device-width">
            <link rel="shortcut icon" href=""><!--http://jquery.com/jquery-wp-content/themes/jquery.com/i/favicon.ico-->
            <link rel="stylesheet" href="">
            <style style="text/css">
                a{text-decoration: none;}
    
                /*======================*/
                #wrapper{counter-reset: counter}
                a{position:relative; float: left; height: 150px; width: 150px; counter-increment: counter; color: #FFFFFF; line-height: 150px; text-align: center; background-color:slategray; margin: 0 20px 20px;}
                a:before{content : counter(counter,decimal); font-size: 60px}
                a:after{content: attr(data-property);position: absolute; left: 0; right: 0; top: 100px; color:  red; color: #8880A2;}
                a:not(:hover):not(:target){ animation: 0s ease 0s normal none 1 none !important}
                #test1{animation: 1s ease 0s alternate none infinite background-color;background-color: slategray;}
                #test2{animation: 1s ease 0s alternate none infinite transform-1; transform: perspective(400px) rotateY(0deg);}
    
                @keyframes background-color{
                    0% {background-color: slategray}
                    100% {background-color: black}
                }
    
                @keyframes transform-1{
                    0% {transform: perspective(400px) rotateY(0deg)}
                    100% {transform: perspective(400px) translateZ(150px) rotateY(180deg);}
                }
            </style>
        </head>
        <body>
            <div id="wrapper">
                <a id="test1" href="#test1" data-property = "AAA123213"></a>
                <a id="test2" href="#test2" data-property = "B213BB"></a>
            </div>
        </body>
    </html>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        window.onkeydown = function(e){
            e = e? e:window.event;
            if(e.keyCode == 27){
                location.hash = '#';
            }
        }
    </script>
    View Code


  • 相关阅读:
    201871010113刘兴瑞《面向对象程序设计(java)》第八周学习总结 201871010113
    201871010113刘兴瑞《面向对象程序设计(java)》第六七周学习总结 201871010113
    201871010113刘兴瑞《面向对象程序设计(java)》第十二周学习总结 201871010113
    201871010113刘兴瑞《面向对象程序设计(java)》第七周学习总结 201871010113
    201871010113刘兴瑞《面向对象程序设计(java)》第十一周学习总结 201871010113
    Adobe Brackets 开源、小巧、简洁的代码编辑器
    Pythonopencv摄像头图像捕获
    Linux 系统安全检查(shell)
    zabbix监控历史数据清理
    2、Ansible在使用过程中出现的错误解决方法
  • 原文地址:https://www.cnblogs.com/cy056/p/3109331.html
Copyright © 2020-2023  润新知