问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

web前端开发中如何封装常用页面效果

发布网友 发布时间:2022-04-28 12:38

我来回答

2个回答

懂视网 时间:2022-04-28 16:59

本篇文章给大家带来的内容是关于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> <p><em>' + data.books[i].publisher + '</em></p></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;

}

热心网友 时间:2022-04-28 14:07

这个一般都是不需要自己封装的。
首先的一般大点的企业都有自己的插件库
小点的企业可以在网上找到相应的东西,自己封装耗时耗力,还不好看
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
四川省综合素质a级证书? 华为手机怎么还原微信聊天记录 华为手机微信内容恢复方法 股权转让的主要方式有哪些 股权转让有哪几种方式 股东转让的几种形式是 股东转让的几种形式 高考多少分能上衡阳师范学院南岳学院 你们被玖富金融骗,后期有还款吗? 玖富悟空理财2022年最新消息还有希望吗?悟空理财最新情况(悟空理财可信... 同等责任交通事故致人死亡是否追究刑事责任 今日天气适合穿什么衣服13度 明天气温是9-13度,穿什么衣服好呢?想不好 9到16度穿什么衣服? 9到16度的天气该穿什么衣服 9~12度要穿什么衣服? 天气9度时穿什么衣服合适? 眼镜店验光不提供数据,合不合法? 请问我想在网上配眼镜但需验光去外面店铺验光要钱吗店主给验吗 如果去眼镜店配镜,三个月之内发现验光师验光错误,度数相差过大,不给换镜片,有什么措施维权呢? 为什么眼镜店经营范围里不给写验光配镜? 我的小冰箱打开大概30秒后就啪啪啪响不制冷? 宝岛眼镜店 验光结果不给吗? 眼镜店验光不给验光单 去眼镜店不验光要告诉店员什么数据? 我想问一下,在日本jins配眼镜,他们给免费查度数验光吗,还是说需要我们直接提供不给验光? 美菱冰箱用了三年,突然嗡嗡响不制冷了 我想测视力然后网上配镜子,下面眼镜店都不愿意给测, 该怎么办? 眼镜店前面写了验光,缺不给人验光,属于欺诈消费者吗? 为啥眼镜店不给验光单 冰箱报警器响!冰箱不制冷是什么问题? playboy 的钱包的价位大概是多少 PLAYBOY钱包多少钱? 登喜路 BOSS PLAYBOY 范思哲 GUCCI LEVIS男士钱包各多少钱? 关于PLAYBOY正品价格问题 playboy是什么牌子的钱包? Playboy 金利来 钱包,选哪个牌子? 其中二选一的话,从款式上说。谢谢大家。 playboy男士钱包好不好哇 男士钱包什么牌子好,求推荐下! playboy钱包大陆有真的吗 用什么寻线仪才能寻到双屏蔽网线 6类屏蔽网线 怎么找线 查线器(或者叫寻线仪)如何测屏蔽线? 屏蔽音频线的接法 带屏蔽线的网线压制方法。屏蔽线怎么接啊 孩子管妈妈的舅舅叫什么? 我的孩子叫我爷爷奶奶叫什么 摄氏度的符号怎么打出来? office365如何插入摄氏度符号 freenas速度只能到50MB/S怎么回事? 用FreeNas做个NAS存储服务器,软RAID效果如何?