热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

 好久没写博客了,不管是路过的还是我的少得可怜坚挺的fans,我回来了。之前一段时间忙于工作,忙于自己的一个css3小网站,网盘里积累了很多想写的东西,但是了解得不深入,也就没什么好写。最近几天一直在关注w3cpluc列出的css3工具,里面列出了很多出色的css3属性生成方面的网站,和自己的小网站很类似,本想着借鉴别人的网站去修改自己的网站,在这过程中关注到了一个

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

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

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


 

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

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

    图中所看到的是两个正常按钮,用firebug 查看可以注意到是两个label标签,用css3(box-shadow:0.05em 0.05em 0.4em 0.1em rgba(0, 0, 0, 0.8) inset)渲染。如果光是这样,将会有两个裸露的,他是用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的元素上。当点击的时候,页面会滚动到#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-transformtitle>        
        <meta name="author" content="Chan">
        <meta name="description" content="Come on baby!">
        <meta name="viewport" content=">
        <link rel="shortcut icon" href="">
        <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
推荐阅读
  • 在Django中提交表单时遇到值错误问题如何解决?
    在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 在处理木偶评估函数时,我发现可以顺利传递本机对象(如字符串、列表和数字),但每当尝试将JSHandle或ElementHandle作为参数传递时,函数会拒绝接受这些对象。这可能是由于这些句柄对象的特殊性质导致的,建议在使用时进行适当的转换或封装,以确保函数能够正确处理。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文全面解析了JavaScript中的DOM操作,并提供了详细的实践指南。DOM节点(Node)通常代表一个标签、文本或HTML属性,每个节点都具有一个nodeType属性,用于标识其类型。文章深入探讨了DOM节点的创建、查询、修改和删除等操作,结合实际案例,帮助读者更好地理解和掌握DOM编程技术。 ... [详细]
author-avatar
LBM-痕迹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有