zoukankan      html  css  js  c++  java
  • 前端组建

    组件web component,什么是组件以及表现形式

    定义:

    1、以页面功能组件为单位聚合前端资源(读取前端资源)

    2、自动加载约定的css、js资源

    3、将业务数据到渲染数据的转换给独立出来

    特点:

    1、按需加载 只加载必要的前端资源

    2、对应关系明确(所需要加载的资源在同一目录)

    3、职责明确且唯一,对应关系显著

    为了适应复杂的页面业务需求,很多组件选择的是生命周期的方式来组织自己的事件和方法

    一个组件的生命周期包括:

    init 初始化组件根结点和配置

    fetch  加载css和js资源

    render  内容渲染

    ready 进行数据绑定等操作

    update  用来数据的更新

    destory 解除所有的事件监听,删除所有组件节点

    ...

    设计模式之工厂模式:构造器+protoType

    前端组建简单例子

    html

    <!DOCTYPE html>
    <html>
    <head>
        <title>css3动画按钮</title>
        <!-- <link rel="stylesheet" type="text/css" href="./css/animate.css"></link> -->
    </head>
    <body>
        <div id="button">
            <div id="second"></div>
        </div>
    </body>
    </html>
    <script type="text/javascript" src="js/btn.js"></script>

    js

    /*
      0625按钮前端组件实现
      作者:karila
    */
    
    function ButtonFn(){
    	//this.txt=txt;
    	/*公共方法可以放在构造器中*/
    	this.getId=function(n){
            return document.getElementById(n);
    	}
    	/*自动化加载CSS*/
    	this.fetchCss=function(_href){
    		var _dom=document.createElement("link");
    		_dom.rel="stylesheet";
    		_dom.type="text/css";
    		_dom.href=_href;
    		document.body.appendChild(_dom);
    
    	}
    	this.init();
    
    }
    ButtonFn.prototype={
    	/*特有的方法放在prototype中*/
    	/*初始化*/
        init:function(_config){
           var _self=this;
           _self.event(_config);
        },
        /*定义事件*/
        event:function(_config){
        	var _self=this;
        	var _wrap=_self.getId("button");
        	_wrap.onclick=function(){
        		console.log("按钮被电击了");
        		_self.renderTxt(_config.txt);
        	}
    
        },
        /*渲染*/
        renderTxt:function(t){
        	var _self=this;
        	var _second=_self.getId("second");
        	second.innerHTML=t;
        }
    }
    /*组件需要有通用型,需要添加配置文件*/
    var config={
    	txt:"叫我孙悟空"
    }
    var btnObj=new ButtonFn();
    btnObj.init(config);
    btnObj.fetchCss("./css/animate.css");
    

    css

    #button{
        300px;
        height:70px;
        background:#6959ff;
        margin:100px auto;
        overflow: hidden;
        border-radius:10px;
        cursor: pointer;
    }
    #second{
    	300px;
        height:70px;
        background:#ddd;  
        border-radius:10px;  
        transform:translateX(-310px) skew(0deg);
        animation:remove 1s reverse;
        text-align:center;
        line-height:70px;
        font-size: 50px;
    }
    
    #button:hover #second{
    	animation: moves 1s forwards;
    }
    @-webkit-keyframes remove{
      0%{-webkit-transform:translateX(-320px) skew(0deg);}
      20%{-webkit-transform:translateX(50px) skew(-20deg);}
      40%{-webkit-transform:translateX(-50dpx) skew(20deg);}
      60%{-webkit-transform:translateX(25dpx) skew(-8deg);}
      80%{-webkit-transform:translateX(-15px) skew(8deg);}
      100%{-webkit-transform:translateX(0px) skew(0deg);}
    }
    @-webkit-keyframes moves{
      0%{-webkit-transform:translateX(-320px) skew(0deg);}
      20%{-webkit-transform:translateX(50px) skew(-20deg);}
      40%{-webkit-transform:translateX(-50dpx) skew(20deg);}
      60%{-webkit-transform:translateX(25dpx) skew(-8deg);}
      80%{-webkit-transform:translateX(-15px) skew(8deg);}
      100%{-webkit-transform:translateX(0px) skew(0deg);}
    }
    

      

     

  • 相关阅读:
    斐波那契数
    组合数学
    网络流
    UVA 1104 【芯片难题 Chips Challenge】
    Luogu P3181 【[HAOI2016]找相同字符】
    Luogu P4101 【[HEOI2014]人人尽说江南好 】
    Luogu P5842 【[SCOI2012]Blinker 的仰慕者】
    BZOJ 4502 串
    Luogu P5840 【[COCI2015]Divljak】
    Luogu P3295 【[SCOI2016]萌萌哒】
  • 原文地址:https://www.cnblogs.com/karila/p/7077038.html
Copyright © 2011-2022 走看看