web前端常用的封装方法

1、放大镜


        //页面加载完毕后执行
        window.onload = function () {

            var oDemo = document.getElementById('demo');
            var oMark = document.getElementById('mark');
            var FloatBox = document.getElementById('float-box');
            var SmallBox = document.getElementById("small-box");
            var bigBox = document.getElementById('big-box');
            var bigImg = bigBox.getElementsByTagName('img')[0];

            oMark.onmouseover = function (){
                FloatBox.style.display = "block";
                bigBox.style.display = "block";
            }

            oMark.onmouseout = function (){
                FloatBox.style.display = "none";
                bigBox.style.display = "none";
            }

            oMark.onmousemove = function (ev){

                var ev = ev || window.event;
                var left = ev.clientX - oDemo.offsetLeft - SmallBox.offsetLeft - FloatBox.offsetWidth / 2;
                var top = ev.clientY - oDemo.offsetTop - SmallBox.offsetTop - FloatBox.offsetHeight / 2;

                if(left < 10){

                    left = 0;

                }else if(left >= oMark.offsetWidth - FloatBox.offsetWidth - 10){

                    left = oMark.offsetWidth - FloatBox.offsetWidth;

                }

                if(top < 10){

                    top = 0;

                }else if(top >= oMark.offsetHeight - FloatBox.offsetHeight - 10){

                    top = oMark.offsetHeight - FloatBox.offsetHeight;

                }

                FloatBox.style.left = left + "px";
                FloatBox.style.top = top + "px";

                var scaleX = left / (oMark.offsetWidth - FloatBox.offsetWidth);
                var scaleY = top / (oMark.offsetHeight - FloatBox.offsetHeight);

                bigImg.style.left = -scaleX * (bigImg.offsetWidth - bigBox.offsetWidth) + "px";
                bigImg.style.top = -scaleY * (bigImg.offsetHeight - bigBox.offsetHeight) + "px";

            }

        }
        

2、JSONP


        function fn1(data){
            var html = '';
            var oUl = document.getElementsByTagName('ul')[0];

            console.log(data);

            if(data.total != -1){
                for(var i=0; i<data.books.length; i++){

                    html += '<li><h2>'+ data.books[i].title +'</h2> <span>'+ data.books[i].author_intro +'</span><img src="'+ data.books[i].image +'" /><p>'+ data.books[i].summary +'</p> <div><em>' + data.books[i].publisher + '</em></div></li>';

                }

                oUl.innerHTML = html;

            }else{
                document.body.innerHTML+='<h2>亲~~ 没有数据哦~~~</h2>';
            }

        }

    window.onload = function (){

        var oBtn = document.getElementById('btn');
        var iNow = 0;
        oBtn.onclick = function (){
            //动态添加 script 标签   加载URL地址 后传入 callback=fn1 输出一个函数, 在上面则定义好这个函数, 接受一个data 就是资源  json类型,循环输出, 可先console.log(dara) 查看数据
            var oScript = document.createElement('script');

            oScript.src="https://api.douban.com/v2/book/search?q=%E6%A0%A1%E5%9B%AD&count=10&start="+ iNow +"&callback=fn1";
            document.head.appendChild(oScript);

            // 点击一次+10,从多少开始获取
            iNow += 10;

        }

    }

3、获取指定区间范围随机数,包括lowerValue和upperValue


function randomFrom(lowerValue,upperValue)
{
    return Math.floor(Math.random() * (upperValue - lowerValue + 1) + lowerValue);
}
//如获取1-100之间的随机数
console.log(randomFrom(1,100));

4、数组排序



1、快速排序

    /**
     *   得到中间那位那位数,然后循环判断, arr[i] < 中间数 则push leftArr, 否则push rightArr, 最后返回 left数组 '拼接' 中间数 + right数组
     */
    function sort(arr){

        if(arr.length <= 1){
            return arr;
        }

        var numIndex = Math.floor(arr.length/2);
        var numVal = arr.splice(numIndex,1);
        var leftArr = [];
        var rightArr = [];

        for(var i=0; i<arr.length; i++){

            if(arr[i]<numVal){
                leftArr.push(arr[i]);
            }else{
                rightArr.push(arr[i])
            }

        }

        return sort(leftArr).concat(numVal,sort(rightArr));

    }

2、sort排序
    var num=[7,45,100,4,2,564];
    num.sort(function (a, b){
        return a - b;
    });
    console.log(num)  //[2, 4, 7, 45, 100, 564]

5、数组去重


1、indexOf 去重

/**
 *   当arr的第一次出现的位置 == i  则是第一次出现就push到tempArr
 */
function unique(arr){

    if (arr.length <= 1){
        return arr;
    }

    var tempArr = [];

    for(var i=0; i<arr.length; i++){

        if(tempArr.indexOf(parseInt(arr[i])) == -1){        //-1 证明没有出现过

            tempArr.push(arr[i]);

        }

    }

    return tempArr;

}

2、Set去重
function SetUnique(array) {
  return [...new Set(array)];
}
dedupe([1, 1, 2, 3]) // [1, 2, 3]

6、深度拷贝


/**
 *     深度拷贝
 *     使用for in 在循环赋值,避免对象引用
 */
function copy(obj){

    if(typeof obj != 'object'){
        return obj;
    }

    var newObj = {};

    for(var attr in obj){

        newObj[attr] = copy(obj[attr]);

    }

    return newObj;

}

原文地址:https://segmentfault.com/a/1190000016677097

原文地址:https://www.cnblogs.com/lalalagq/p/9902241.html

时间: 2024-07-29 19:31:13

web前端常用的封装方法的相关文章

WEB前端常用网站收集

WEB前端常用网站收集整理 王牌网站 w3school 菜鸟教程 RUNOOB NEC更好的CSS方案 前端里 脚本之家 17素材 frontopen JS实例 CSS整理与优化工具 图标类http://www.easyicon.net/http://findicons.com/http://preloaders.net/ 分享按钮,同时支持PC端和移动端前端导航站(公共库) 网页模板模板之家模板王 展示类WHYCSS 其他博客空间A Good User Interface张鑫旭 梦想天空 bo

WEB前端性能优化常见方法

web前端是应用服务器处理之前的部分,前端主要包括:HTML,CSS,javascript,image等各种资源,针对不同的资源有不同的优化方式. 1. 内容优化 (1)减少HTTP请求数:这条策略是最重要最有效的,因为一个完整的请求要经过DNS寻址,与服务器建立连接,发送数据,等待服务器响应,接收数据这样一个消耗时间成本和资源成本的复杂的过程. 常见方法:合并多个CSS文件和js文件,利用CSS Sprites整合图像,Inline Images(使用 data:URL scheme在实际的页

web前端常用的一些插件

1.jquery 全屏滚动插件 fullPage.js http://www.dowebok.com/demo/2014/77/ 2.页面常用轮播插件   2.http://www.superslide2.com/demo.html  3.常用弹框插件 web前端常用的一些插件

教你正确的学习web前端开发技术的方法分享

近几年IT业可谓是发展火热,而且新生了很多的职业.例如安卓开发工程师.iOS开发工程师.在这众多的新生职业中备受瞩目的当属web前端工程师了,前端工程师薪资高,就业发展前景好,更多的人选择了这一职业成为自己的发展方向,想要自己成为一名合格的web前端工程师,web前端开发学习路线图值得大家去看看. 以上这份学习路线课程大纲,挺适合大家借鉴来学习的.web前端课程包括了几个方面的内容: 1.学习HTML,这是最简单,最基本的是要掌握div,formtable.Ulli.P.跨度.字体这些标签,这些

Web前端常用调优

一.减少HTTP请求 图片地图: 假设导航栏上有五幅图片,点击每张图片都会进入一个链接,这样五张导航的图片在加载时会产生5个HTTP请求.然而,使用一个图片地图可以提高效率,这样就只需要一个HTTP请求. 服务器端图片地图:将所有点击提交到同一个url,同时提交用户点击的x.y坐标,服务器端根据坐标映射响应 客户端图片地图:直接将点击映射到操作 <img src="planets.jpg" border="0" usemap="#planetmap&

WEB前端常用的测试工具

一.QUnit 前端测试工具 QUnit是一个强大的JavaScript单元测试框架,该框架是由jQuery团队的成员所开发,并且是jQuery的官方测试套件.Qunit是Jquery的单元测试框架,并且被广泛使用在各个项目中. 为了使用Qunit,你仅仅需要去包含2个Qunit文件在你的Html页面.Qunit 包含了qunit.js 作为运行器和测试框架,和qunit.css 文件,座位测试套件页面显示测试结果的样式. 二.Selenium 前端测试工具 Selenium 是ThoughtW

web前端常用单词

object type n.对象类型 primitive adj. 原始的 n. 原始人,文艺复兴前的艺术家 undefined adj. 未定义的 null adj. 无效力的,无效的,无价值的 n. 零 [计算机] 空 vt. 使无效 object n. 物, 物体, 目标, 宾语 v. 反对,提出...作为反对的理由 global adj. 全球性的, 全局的 array n. 数组,(陈)排列,大批,一系列 vt. 排列,布署,打扮 value n. 价值, 重要性, 价格, (pl)价

Web前端常用快捷键总结(OS X系统)

OS X系统截图:command + shift + 4 强制关闭OS X系统内无响应的程序:command + option +ESC Sublime Text 3: 显示或隐藏Side Bar:command + K +B 选中一块儿内容,按command + ctrl +G,就会将文档中所有相同的内容选中 光标放在代码行的任意位置,按command + shift + ↑,就会整行上移 光标放在代码行的任意位置,按command + shift + D,就会在当前位置复制并粘贴出一行同样的

web前端常用api

一.节点 1.1 节点属性 Node.nodeName   //返回节点名称,只读 Node.nodeType   //返回节点类型的常数值,只读 Node.nodeValue  //返回Text或Comment节点的文本值,只读 Node.textContent  //返回当前节点和它的所有后代节点的文本内容,可读写 Node.baseURI    //返回当前网页的绝对路径 Node.ownerDocument  //返回当前节点所在的顶层文档对象,即document Node.nextSi