【JavaScript框架封裝】實現一個類似於JQuery的CSS樣式框架的封裝
版權宣告:本文為博主原創文章,未經博主允許不得轉載。更多學習資料請訪問我愛科技論壇:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/81123779
// 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的動畫框架的封裝JavaScript框架封裝jQuery動畫
- 【JavaScript框架封裝】公共框架的封裝JavaScript框架封裝
- 封裝框架的實踐封裝框架
- Flutter 基於Bloc框架的封裝FlutterBloC框架封裝
- 基於javascript的拖拽類封裝^o^JavaScript封裝
- 封裝一個在react上更易用的redux框架封裝ReactRedux框架
- 【JavaScript框架封裝】JavaScript中的文字字串的轉義和反轉義的實現JavaScript框架封裝字串
- 關於網路框架設計封裝的扯淡框架封裝
- web自動化框架—BasePage 類的簡單封裝Web框架封裝
- 一、類的封裝性封裝
- 基於gin框架封裝的web專案骨架goskeleton框架封裝WebGo
- javascript原生封裝一個淡入淡出效果的函式JavaScript封裝函式
- 採用 SwiftNIO 實現一個類似 Express 的 Web 框架SwiftExpressWeb框架
- Android Room封裝成一個類似Redis的快取資料庫的效果AndroidOOM封裝Redis快取資料庫
- 一步步封裝實現自己的網路請求框架封裝框架
- 039.CI4框架CodeIgniter,封裝Model模型繫結資料庫的封裝框架封裝模型資料庫
- 從封裝函式到實現簡易版自用jQuery (二)封裝函式jQuery
- 基於原生fetch封裝一個帶有攔截器功能的fetch,類似axios的攔截器封裝iOS
- 【JavaScript框架封裝】使用Prototype給Array,String,Function物件的方法擴充JavaScript框架封裝Function物件
- jquery 封裝 bootstrap tablejQuery封裝boot
- Flutter 網路請求框架封裝Flutter框架封裝
- 封裝一個通用的PopupWindow封裝
- 【封裝小技巧】列表處理函式的封裝封裝函式
- 封裝定時任務框架的正確方式封裝框架
- 封裝一個簡單的動畫函式封裝動畫函式
- 使用promise封裝jquery的ajax來實現async和await方式Promise封裝jQueryAI
- 淺析jQuery原理並仿寫封裝一個自己的庫jQuery封裝
- 前端簡潔並實用的工具類函式封裝前端函式封裝
- 【封裝小技巧】數字處理函式的封裝封裝函式
- 如何基於 React 封裝一個元件React封裝元件
- 封裝一個自己的js庫封裝JS
- 一個簡單的 Amqp 封裝MQ封裝
- RN自定義元件封裝 - 播放類似PPT動畫元件封裝動畫
- 基於Promise實現對Ajax的簡單封裝Promise封裝
- canvas簡單封裝一個echarts實現不了的餅圖Canvas封裝Echarts
- 基於spring boot框架進行二次封裝,微型框架編寫思路Spring Boot框架封裝
- 十五、類與封裝的概念封裝
- JavaScript 和 CSS 常用工具方法封裝JavaScriptCSS封裝