操作CSS样式公共方法库
项目中常用的一些方法,我们都封装到公共方法库
let utils = (function () {
//=>获取元素的样式
let getCss = function (curEle, attr) {
if (typeof window.getComputedStyle === 'undefined') {
return;
}
let val = window.getComputedStyle(curEle, null)[attr],
reg = /^-?\d+(\.\d+)?(px|rem|em|pt)?$/i;
reg.test(val) ? val = parseFloat(val) : null;
return val;
};
//=>设置元素样式
let setCss = function (curEle, attr, value) {
if (attr === 'opacity') {
curEle.style.opacity = value;
curEle.style.filter = `alpha(opacity=${value * 100})`;
return;
}
if (!isNaN(value)) {
let reg = /^(width|height|fontSize|((margin|padding)?(top|left|right|bottom)?))$/i;
reg.test(attr) ? value += 'px' : null;
}
curEle['style'][attr] = value;
};
//=>批量设置元素样式
let setGroupCss = function (curEle, options = {}) {
for (let attr in options) {
if (!options.hasOwnProperty(attr)) break;
setCss(curEle, attr, options[attr]);
}
};
//=>CSS操作汇总
let css = function (...arg) {
let len = arg.length,
fn = getCss;
len >= 3 ? fn = setCss : null;
len === 2 && (arg[1] instanceof Object) ? fn = setGroupCss : null;
return fn(...arg);
};
//=>offset:获取当前元素距离BODY的偏移(左偏移和上偏移)
let offset = function (curEle) {
//1.先获取当前元素本身的左/上偏移
let curLeft = curEle.offsetLeft,
curTop = curEle.offsetTop,
p = curEle.offsetParent;
//2.累加父参照物的边框和偏移(一直向上找,找到BODY为止,每当找到一个父参照物都把它的边框和偏移累加起来,根据元素不一样,具体找几次也不知道)
//TAG-NAME获取当前元素的标签名(大写的)
while (p.tagName !== 'BODY') {//=>当找到的父参照物是BODY结束查找和累加操作
//3.把找到的父参照物的边框和偏移值累加起来
curLeft += p.clientLeft;
curLeft += p.offsetLeft;
curTop += p.clientTop;
curTop += p.offsetTop;
p = p.offsetParent;//=>基于当前找到的父参照物继续向上查找
}
return {
top: curTop,
left: curLeft
};
};
//=>操作浏览器盒子模型属性的
let winHandle = function (attr, value) {
if (typeof value !== 'undefined') {
//=>设置盒子模型属性值:SCROLL-TOP/LEFT
document.documentElement[attr] = value;
document.body[attr] = value;
return;
}
return document.documentElement[attr] || document.body[attr];
};
return {
css, //=>在ES6中直接这样写相当于 css:css
offset,
winHandle
}
})();
操作CSS样式公共方法库的更多相关文章
- JQuery中操作Css样式的方法
JQuery中操作Css样式的方法//1.获取和设置样式 $("#tow").attr("class")获取ID为tow的class属性 $("#tw ...
- jQuery操作css样式
jQuery操作css样式 css操作的分类: css操作 位置操作 尺寸操作 css操作之css css代码: html代码: jQuery代码: 效果如下: css操作之位置操作 css代码: h ...
- jq选择器(jq 与 js 互相转换),jq操作css样式 / 文本内容, jq操作类名,jq操作全局属性,jq获取盒子信息,jq获取位置信息
jq选择器(jq 与 js 互相转换) // 获取所有的页面元素jq对象 $('css3选择器语法'); var $box = $(".box:nth-child(1)"); 获取 ...
- 11-13 js操作css样式
1.Js操作css样式 Div.style.width=”100px”.在div标签内我们添加了一个style属性,并设定了width值.这种写法会给标签带来大量的style属性,跟实际项目是不符. ...
- 【转发】JQuery中操作Css样式的方法
JQuery中操作Css样式的方法 //1.获取和设置样式 $("#tow").attr("class")获取ID为tow的class属性 $("#t ...
- js操作css样式、js的兼容问题
一.js操作css样式 div . style . width="200px" 在div标签内我们添加了一个style属性,并设定width值.这种写法会给标签带来大量的style ...
- jquery操作css样式的方法
jquery操作css样式的方法(设置和获取)
- jquery轻松操作CSS样式
$(this).click(function(){ if($(this).hasClass(“zxx_fri_on”)){ $(this).removeClass(“zxx_fri_on”); ...
- js操作css样式,null和undefined的区别?
1.js操作css的样式 div.style.width="100px"在div标签内我们添加了一个style属性,并设定了width值.这种写法会给标签带来大量的style属性, ...
随机推荐
- ASP.NET CORE 3 安装遇到的问题
最近在研究 ASP.NET CORE, visualstudio2019 也已正式发布,本以为安装vs2019后就默认支持asp.net core 3,谁知是不支持的,需单独安装net core 3及 ...
- WIN10X64_LTSB2016极限精简版by双心
WIN10X64LTSB2016极限精简版by双心http://www.cnblogs.com/liuzhaoyzz/p/9162113.html 一.前言:关于极限精简版的说明 本系统为极限精简版, ...
- js 浏览器窗口大小改变 高度 宽度获取 window/document.height()区别
<script> //当浏览器的窗口大小被改变时触发的事件window.onresize window.onresize = function(){ console.log($(windo ...
- 根据导出的查询结果拼接字符串,生成sql语句并保存到txt文件中
import os os.chdir("C:/") path = os.getcwd() print(path) f = open("sql.csv") # p ...
- EChart 猜猜乐
http://m.bkbtcaicaile.hyl.life/index.html#/
- cefsharp插入自定义JS
string script_1 = "document.getElementsByTagName('head')[0].appendChild(document.createEleme ...
- 解除Portal for ArcGIS与ArcGIS Server的联合
将ArcGIS Server站点添加到Portal中,可以实现ArcGIS Server站点的单点登录特性,并可以与Portal共享Server站点发布的内容,同时通过将联合服务器注册为托管服务器后还 ...
- How To Upgrade ASMLib Kernel Driver as Part of Kernel Upgrade? (文档 ID 1391807.1)
How To Upgrade ASMLib Kernel Driver as Part of Kernel Upgrade? (文档 ID 1391807.1)
- group by 拓展
Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup.cube.grouping sets.分别介绍例如以下: 1.rollup 对数据库表emp.如果当中两个 ...
- samba、ftp和ssh服务
samba服务 Smb主要作为网络通信协议; Smb是基于cs架构: 完成Linux与windows之间的共享:linux与linux之间共享用NFS 第一步:安装samba [root@ken ~] ...