// CSS 样式框架
(function (xframe) {
// 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法)【只要是需要使用到this获取到的元素集合这个变量的时候,这里就是需要进行链式访问的】
xframe.extend({
/**
* 给DOM元素设置/取值CSS样式
* @return {*}
*/
css: function () {
// 分为两种情况,一种是取值模式,一种是设置模式
var arg = arguments,
len = arg.length,
j = this.length - 1;
if (len === 0) {
// 没有参数的话,就直接返回这个DOM集合
return this;
} else if (len === 1) {
// 取值模式
if (typeof arg[0] === 'string') {
if (this[0].currentStyle) {
// w3c
return this[0].currentStyle[arg[0]];
} else {
// 其他IE
return getComputedStyle(this[0], false)[arg[0]];
}
} else if (typeof arg[0] === 'object') {
// 如果要获取一系列对象的属性信息, 如果传过来的一个参数是一个json对象的话,这里也采用这种方式
// {name : xiugang, age : 18}
for (var item in arg[0]) {
// 从后向前开始遍历,设置模式
for (; j >= 0; j--) {
// 由于CSS在设置值的时候的取值模式和设置模式的不同,这里需要先使用驼峰表示法进行处理一下
// 先把item转换为:backgroundcolor --> backgroundColor
item = $.camelCase(item)
this[j].style[item] = arg[0][item];
}
}
}
} else if (len === 2) {
// 设置模式
for (; j >= 0; j--) {
// 第一个参数是我们需要设置的值
this[j].style[$.camelCase(arg[0])] = arg[1];
}
}
return this;
},
/**
* 隐藏一个元素
* @return {hide}
*/
hide: function () {
var j = this.length - 1;
for (; j >= 0; j--) {
this[j].style.display = 'none';
}
return this; // 方法二:使用之前封装好的框架进行遍历
this.each(function () {
this.style.display = 'none';
})
},
/**
* 显示元素
* @return {show}
*/
show: function () {
this.each(function () {
this.style.display = 'block';
})
return this;
},
/**
* 获取元素的宽度
* @return {*}
*/
width: function () {
return this[0].clientWidth;
},
/**
* 获取元素的高度
* @return {*}
*/
height: function () {
return this[0].clientHeight;
},
/**
* //当元素出现滚动条时候,这里的高度有两种:可视区域的高度 实际高度(可视高度+不可见的高度)
* 获取元素的滚动宽度
* @return {*}
*/
scrollWidth: function () {
return this[0].scrollWidth;
},
/**
* 获取元素的滚动高度
* @return {*}
*/
scrollHeight: function () {
return this[0].scrollHeight;
},
/**
* 元素滚动的时候 如果出现滚动条 相对于左上角的偏移量
* @return {*}
*/
scrollTop: function () {
return this[0].scrollTop;
},
/**
* 元素滚动的时候相对于左上角的距离
* @return {*}
*/
scrollLeft: function () {
return this[0].scrollLeft; },
}); // 不需要参与链式访问的
xframe.extend(xframe, {
getThis: function () {
console.log(xframe, typeof this); // function, 这里的this指向的实际上是一个函数function (selector, context)
}, /**
* 获取屏幕的高度
* @return {number}
*/
screenHeight: function () {
return window.screen.height;
},
/**
* 虎丘屏幕的款U盾
* @return {number}
*/
screenWidth: function () {
return window.screen.width;
},
/**
* 获取浏览器窗口文档显示区域的宽度,不包括滚动条
* @return {number}
*/
wWidth: function () {
return document.documentElement.clientWidth;
},
/**
* 获取浏览器窗口文档显示区域的高度,不包括滚动条
* @return {number}
*/
wHeight: function () {
return document.documentElement.clientHeight;
}, /**
* 文档滚动区域的整体的高
* @return {number}
*/
wScrollHeight: function () {
return document.body.scrollHeight;
},
/**
* 文档滚动区域的整体的宽度
* @return {number}
*/
wScrollWidth: function () {
return document.body.scrollWidth;
},
/**
* 获取滚动条相对于其顶部的偏移
* @return {number}
*/
wScrollTop: function () {
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
return scrollTop;
},
/**
* 获取整个文档窗口的距离整个窗口的宽度和高度(滚动条相对于顶部和左边的距离)
* @return {number}
*/
wScrollLeft: function () {
var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;
return scrollLeft;
}
});
})(xframe);

【JavaScript框架封装】实现一个类似于JQuery的CSS样式框架的封装的更多相关文章

  1. 【JavaScript框架封装】实现一个类似于JQuery的基础框架、事件框架、CSS框架、属性框架、内容框架、动画框架整体架构的搭建

    /* * @Author: 我爱科技论坛 * @Time: 20180715 * @Desc: 实现一个类似于JQuery功能的框架 * V 1.0: 实现了基础框架.事件框架.CSS框架.属性框架. ...

  2. 【JavaScript框架封装】实现一个类似于JQuery的DOM框架的封装

    // DOM框架(选择器框架) (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ /** * 向现 ...

  3. 【JavaScript框架封装】自己动手封装一个涵盖JQuery基本功能的框架及核心源码分享(单文件版本)

    整个封装过程及阅读JQuery源码的过程基本上持续了一个月吧,最终实现了一个大概30%的JQuery功能的框架版本,但是里面涉及的知识点也是非常多的,总共的代码加上相关的注释大概在3000行左右吧,但 ...

  4. 分析一个类似于jquery的小框架

    在网上下了一个类似于jQuery的小框架,分析源码,看看怎么写框架. 选择器Select //用沙箱闭包其整个代码,只有itcast和I暴漏在全局作用域 (function( window , und ...

  5. jQuery获取CSS样式中的颜色值的问题

    转自:http://blog.csdn.net/cwj649956781/article/details/23261529 jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法,需 ...

  6. jQuery操作css样式

    jQuery操作css样式 css操作的分类: css操作 位置操作 尺寸操作 css操作之css css代码: html代码: jQuery代码: 效果如下: css操作之位置操作 css代码: h ...

  7. jquery-8 jquery如何处理css样式

    jquery-8  jquery如何处理css样式 一.总结 一句话总结: 1.如何获取网页的三个高? 1)可视区域的高$(window).height(); 2)文档总高度$(document).h ...

  8. jquery操作css样式的方法

    jquery操作css样式的方法(设置和获取)

  9. jquery操作CSS样式全记录

    $(this).click(function(){  if($(this).hasClass(“zxx_fri_on”)){    $(this).removeClass(“zxx_fri_on”); ...

随机推荐

  1. 推荐一个同步Mysql数据到Elasticsearch的工具

    把Mysql的数据同步到Elasticsearch是个很常见的需求,但在Github里找到的同步工具用起来或多或少都有些别扭. 例如:某记录内容为"aaa|bbb|ccc",将其按 ...

  2. 【ACM】nyoj_2_括号配对问题_201308091548

    括号配对问题时间限制:3000 ms  |  内存限制:65535 KB 难度:3描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100),表示 ...

  3. [bzoj1552\bzoj2506][Cqoi2014]robotic sort 排序机械臂_非旋转Treap

    robotic sort 排序机械臂 bzoj-1552 bzoj-2506 Cqoi-2014 题目大意:给定一个序列,让你从1到n,每次将[1,p[i]]这段区间反转,p[i]表示整个物品权值第i ...

  4. C#版winform实现UrlEncode

    在Asp.net中可以使用Server.HTMLEncode和Server.URLEncode 将文本或URL的特殊字符编码,但在控制台或Winform程序中没有办法使用到这些方法, 解决办法:右击项 ...

  5. Project Euler18题 从上往下邻接和

    题目:By starting at the top of the triangle below and moving to adjacent numbers on the row below, the ...

  6. POJ 1166 The Clocks (暴搜)

    发现对这样的模拟题根本没啥思路了,本来准备用bfs的.可是结果超时了,这是參考别的人代码写的: #include <stdio.h> #include <iostream> # ...

  7. Xmind8破解激活

    1.下载安装包: https://www.xmind.cn/download/ 进行安装 2.下载破解补丁: https://stormxing.oss-cn-beijing.aliyuncs.com ...

  8. apt-get常见错误

      安装错误:“E: Unmet dependencies.” 原因:非正常停止apt-get install * 错误提示:E: Unmet dependencies. Try 'apt-get - ...

  9. xss 记录cookie

    <p> <img src="http://act.ci123.com/global/ueditor_new/php/upload/98591403834900.jpg&qu ...

  10. Gym-101915D Largest Group 最大独立集 Or 状态压缩DP

    题面题意:给你N个男生,N个女生,男生与男生之间都是朋友,女生之间也是,再给你m个关系,告诉你哪些男女是朋友,最后问你最多选几个人出来,大家互相是朋友. N最多为20 题解:很显然就像二分图了,男生一 ...