目前測試下:支援IE6 火狐 谷歌遊覽器等。
先來看看此元件的基本配置:如下:
this.config = {
targetCls : '.clickElem', // 點選元素
title: '我是龍恩', //視窗標題
">我是龍
//content : 'img:http://www.baidu.com/a.jpg',
// 視窗內容{text:具體內容| id :id名| img:圖片連結|
// iframe:src連結} {string}
width: 400, // ight 。
showBg : true, // 設置是否顯示遮罩層默認為true 遮罩
closable : '#window-close', // 關閉按鈕
bgColor : '#000', // 默認顏色
opacity : 0.5,// 預設透明度
position : {
x: 0, : 10000,
isScroll : true, //預設視窗隨著捲動而捲動
isResize : true, // 預設值與視窗縮放>
};
JS編寫簡單的彈窗插件(含demo和源碼)
2013-12-11 22:30 by 龍恩0707, 409 閱讀, 1 評論, 收藏, 編輯
最近項目做完了事情不是做完項目很多,今天正好也在調休,所以趁著這個時間研究了一下簡易的JS彈窗功能,當然網上這塊插件非常多,本人也沒有仔細看網上的插件源碼只是憑著日常使用過的彈窗插件有這麼多功能來實現自己的彈窗思路,當然我這個可能實現了基本功能,那麼如果想做的更好更完善需要以後繼續優化!如果有不足之處!請大家多多諒解!
由於彈窗大家都知道是什麼樣的 所以這次沒有做示範效果圖!目前測試下:支援IE6 火狐 谷歌遊覽器等。
先來看看此元件的基本配置:如下:
按Ctrl C 複製程式碼
1. 支援配置標題內容,標題的高度內容的寬度和高度視窗是否可以拖曳彈窗後是否自動關閉是否顯示遮罩背景顏色及透明度的配置,及視窗的展示位置預設x軸0 y軸0是居中對齊,也可以自己配置x軸 y軸的位置但是要注意是相對於父元素那個X軸y軸如果不指定父元素的相對定位那麼預設情況下會相對於document的。當然視窗內容的寬度和高度不建議超過遊覽器的一屏幕的寬度和高度盡量小於第一屏的寬度和高度因為我以前用別人的彈窗插件會存在點擊關閉按鈕後由於遊覽器有滾動條點擊後觸發滾動條事件導致關閉不了視窗如果內容寬度和高度很大的話也沒有關係視窗自動會出現滾動條的。
2. 視窗的內容配置項目 支援四種 1.text(文字) 可以如下配置 text:
我是龍恩
2. img(圖) 可依下列設定 img:http://www.baidu.com/a.jpg
3. id(id節點) 可依下列設定 'id:XX'
4. iframe 可依下列設定 'iframe:http://www.baidu.com(iframe位址)'
所以彈跳窗組件也沒有什麼好說的 當然如果要用到自己的項目中 css樣式可以自己重新寫的,我JS並沒有寫死掉 只是完成JS基本彈窗業務功能。
HTML程式碼如下:
複製程式碼
程式碼如下:
CSS代碼如下
JS程式碼如下
/**
* 编写JS弹窗组件
* @date 2013-12-10
* @author tugenhua
* @email 879083421@qq.com
*/
function Overlay(options){
this.config = {
targetCls : '.clickElem', // 点击元素
title: '我是龙恩', // 窗口标题
content : 'text:
我是龙恩
',//content : 'img:http://gtms01.alicdn.com/tps/i1/T1USkqFc0dXXb5rXb6-1060-300.jpg',
// 窗口内容 {text:具体内容 | id:id名 | img:图片链接 |
// iframe:src链接} {string}
width: 400, // 内容的宽度
height : 300, // 内容的高度
theight : 30,// 标题的高度 默认为30
drag : true, // 是否可以拖动 默认为true
time : 3000, // 自动关闭窗口的时间 为空或者'undefined'则不关闭
showBg : true, // 设置是否显示遮罩层 默认为true 遮罩
closable : '#window-close', // 关闭按钮
bgColor : '#000', // 默认颜色
opacity : 0.5,// 默认透明度
position : {
x: 0,
y: 0 //默认等于0 居中
},
zIndex : 10000,
isScroll : true, //默认情况下 窗口随着滚动而滚动
isResize : true, // 默认情况下 随着窗口缩放而缩放
callback : null//弹窗显示后回调函数
};
this.cache = {
isrender : true, // 弹窗html结构只渲染一次
isshow: false, // 窗口是否已经显示出来
moveable : false
};
this.init(options);
}
Overlay.prototype = {
constructor: Overlay,
init: function(options){
this.config = $.extend(this.config,options || {});
var self = this,
_config = self.config,
_cache = self.cache;
$(_config.targetCls).each(function(index,item){
$(item).unbind('click');
$(item).bind('click',function(){
// 渲染弹窗HTML结构
self._renderHTML();
// 窗口移动
self._windowMove();
});
});
// 窗口缩放
self._windowResize('#window-box');
// 窗口随着滚动条一起滚动
self._windowIsScroll('#window-box');
},
/*
* 渲染弹窗HTML结构
*/
_renderHTML: function(){
var self = this,
_config = self.config,
_cache = self.cache;
var html ='';
if(_cache.isrender) {
html+= '
' +' ';
$('body').append(html);
$("#windowbg").css('z-index',_config.zIndex);
$('#window-content-border').css({'width':_config.width + 'px','height':_config.height + 'px','overflow':'auto'});
$('.window-title h2').html(_config.title);
$('.window-title').css({'height':_config.theight + 'px','width':_config.width,'overflow':'hidden'});
_cache.isrender = false;
// 判断传递进来的内容格式
self._contentType();
if(_config.showBg) {
// 渲染背景宽度和高度
self._renderDocHeight();
$("#windowbg").show();
self.show();
}else {
$("#windowbg").hide();
self.show();
}
self._showDialogPosition("#window-box");
}else {
// 如果弹窗已经创建出来的话, 只是隐藏掉了, 那么我们显示出来
self.show();
$("#windowbg").animate({"opacity":_config.opacity},'normal');
if(_config.showBg) {
$("#windowbg").show();
}
self._showDialogPosition("#window-box");
}
$(_config.closable).unbind('click');
$(_config.closable).bind('click',function(){
// 点击关闭按钮
self._closed();
});
// 渲染后 回调函数
_config.callback && $.isFunction(_config.callback) && _config.callback();
},
/**
* 显示弹窗
*/
show: function(){
var self = this,
_config = self.config,
_cache = self.cache;
$("#window-box") && $("#window-box").show();
_cache.isshow = true;
if(_config.time == '' || typeof _config.time == 'undefined') {
return;
}else {
t && clearTimeout(t);
var t = setTimeout(function(){
self._closed();
},_config.time);
}
},
/**
* 隐藏弹窗
*/
hide: function(){
var self = this,
_cache = self.cache;
$("#window-box") && $("#window-box").hide();
_cache.isshow = false;
},
/**
* 判断传进来的内容类型
*/
_contentType: function(){
var self = this,
_config = self.config,
_cache = self.cache;
var contentType = _config.content.substring(0,_config.content.indexOf(":")),
content = _config.content.substring(_config.content.indexOf(":")+1,_config.content.length);
switch(contentType) {
case 'text':
$('#window-content').html(content);
break;
case 'id':
$('#window-content').html($('#'+content).html());
break;
case 'img':
$('#window-content').html("");
break;
case 'iframe':
$('#window-content').html('');
$("#window-content-border").css({'overflow':'visible'});
break;
}
},
/**
* 点击关闭按钮
*/
_closed: function(){
var self = this,
_config = self.config,
_cache = self.cache;
if(_cache.isshow) {
self.hide();
}
if(_config.showBg) {
$("#windowbg").hide();
}
$("#windowbg").animate({"opacity":0},'normal');
},
/**
* 显示弹窗的位置 默认情况下居中
*/
_showDialogPosition: function(container) {
var self = this,
_config = self.config,
_cache = self.cache;
$(container).css({'position':'absolute','z-index':_config.zIndex + 1});
var offsetTop = Math.floor(($(window).height() - $(container).height())/2) + $(document).scrollTop(),
offsetLeft = Math.floor(($(window).width() - $(container).width())/2) + $(document).scrollLeft();
// 判断x,y位置默认是不是等于0 如是的话 居中 否则 根据传进来的位置重新定位
if(0 === _config.position.x && 0 === _config.position.y){
$(container).offset({'top':offsetTop, 'left':offsetLeft});
}else{
$(container).offset({'top':_config.position. y,'left':_config.position.x});
}
},
/**
* 下部の背景の高さをレンダリング
*/
_renderDocHeight: function(){
var self = this ,
_config = self.config;
$("#windowbg").animate({"opacity":_config.opacity},'normal');
if(self._isIE6()){
$("#windowbg").css({'background':'#fff','height':$(document).height() 'px','width':$(document).width( ) "px"});
}else {
$("#windowbg").css({'background':_config.bgColor,'height':$(document).height() 'px' ,'width':$(document).width() "px"});
}
},
/*
* 窗口缩放
*/
_windowResize: function(elem){
var self = this,
_config = self.config;
$(window).unbind('resize');
$(window).bind('サイズ変更',function(){
t && clearTimeout(t);
var t = setTimeout(function(){
if(_config.isResize){
self._showDialogPosition(elem);
self._renderDocHeight();
}
},200);
});
},
/**
* ウィンドウがスクロールバーでスクロールするかどうか
*/
_windowIsScroll: function(elem ){
var self = this,
_config = self.config;
$(window).unbind('scroll');
$(window).bind('scroll',function( ){
t && clearTimeout(t);
var t = setTimeout(function(){
if(_config.isScroll){
self._showDialogPosition(elem);
self._renderDocHeight ();
}
},200);
});
},
/**
* ウィンドウの移動
*/
_windowMove: function(){
var self = this,
_config = self.config,
_cache = self.cache;
var MouseX = 0,
MouseY = 0;
$('.window-title ').mouseenter(function(){
$(this).css({'cursor':'move'});
});
$('.window-title').mouseleave (function(){
$(this).css({'cursor':'default'});
});
$('.window-title').mousedown(function(e ){
_cache.moveable = true;
MouseX = e.clientX - $(this).offset().left;
mouseY = e.clientY - $(this).offset().top ;
$('.window-title').css({'cursor':'move'});
});
$(document).mouseup(function(){
if(!_cache.moveable) {
return;
}
$('.window-title').css({'cursor':'default'});
_cache.moveable = false;
});
$('#window-box').mousemove(function(e){
if(_cache.moveable) {
$(this).css ({'left':e.clientX - マウスX 'px','top':e.clientY - マウスY 'px'});
}
});
},
/*
* 判断はIE6游览器
* @return {Boolean}
*/
_isIE6: function(){
return navigator.userAgent .match(/MSIE 6.0/)!= null;
}
};

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中