


jquery封裝了一個簡潔輕巧的可拖動可自定義樣式的純div+css帶遮罩層的仿模態(tài)彈出框_html/css_WEB-ITnose
Jun 24, 2016 am 11:43 AM
最近封裝上癮,想起以前做的一個輕巧的彈出框,是樣式和腳本分離的,于是重新封裝了一下,把樣式標簽統(tǒng)一到j(luò)s里了。里面還有一些問題,但不影響使用,有興趣的同學(xué),可以參考完善下,有好的建議,請不吝賜教。
var PopDialogDefaultConfig = { hasCover: true, //是否帶遮罩層 colorOfCover: "#000", //遮罩層顏色 transparencyOfCover: 80, //遮罩層透明度(alpha值,opacity值通過換算得到) borderColor: "blue", //邊框標題背景顏色 titleHeight: 50, //標題高度 titleFont: '24px "Microsoft Yahei"', //標題字體 titleFontSize: 24, //標題文字大小 titleColor: "white", //標題文字顏色 titleFontFamily: "Microsoft Yahei", //標題字體 contentWidth: 560, //內(nèi)容框?qū)挾? contentHeight: 480, //內(nèi)容框的高度 borderWidth: 2, //邊框?qū)挾? backColor: "#EC90F6", //背景色 serial: 1, //序列號 moveAble: true, //是否可以鼠標拖動 /* * 配置文件合并 */ Merge: function (newConfig) { var result = {}; for (var p in this) { result[p] = this[p]; if (typeof (this[p]) != " function ") { for (var q in newConfig) { if (p == q) { result[p] = newConfig[q]; } } } } return result; }};function PopDialog(content, title, obj, popDialogConfig) { content = content || "這里什么都沒有!"; title = title || "提示"; obj = obj || $(document.body); var dialog = new Object; /* * 彈出框的默認樣式 */ var config = PopDialogDefaultConfig.Merge(popDialogConfig); /* * 根據(jù)配置文件和彈出對象,取得彈出框的html串; */ if (!obj.id) { obj.id = "pop" + config.serial; PopDialogDefaultConfig.serial++; } var opacity = (100 - config.transparencyOfCover) / 100; var width = config.contentWidth + config.borderWidth * 2; var height = config.contentHeight + config.borderWidth + config.titleHeight; dialog.Html = '<div id="' + obj.id + '_Cover" style="background-color: ' + config.colorOfCover + ';width:100%;height:100%;position:absolute;filter: alpha(opacity=' + config.transparencyOfCover + ');opacity:' + opacity + ';top:0;left:0;"></div>' + '<div id="' + obj.id + '_Dialog" style="background-color:' + config.borderColor + ';position:absolute;width: ' + width + 'px;height: ' + height + 'px;top:calc(50% - ' + height / 2 + 'px);left:calc(50% - ' + width / 2 + 'px);">' + ' <div id="' + obj.id + '_Top" style="height:' + config.titleHeight + 'px;line-height:' + config.titleHeight + 'px;display:block;width:100%;background-color:' + config.borderColor + ';clear:both;vertical-align:middle">' + ' <span id="' + obj.id + '_Title" style="display:inline-block;font-size:' + config.titleFontSize + 'px;padding-left:10px;color:' + config.titleColor + ';">' + (title || "提示") + '</span>' + ' <a style="display:block;float:right;text-decoration: none;margin-right:20px;clear:right;color:white;font-size:' + config.titleHeight * 8 / 10 + 'px;" href="#" onclick="$(\'#' + obj.id + '_Dialog\').remove();$(\'#' + obj.id + '_Cover\').remove();">X</a>' + ' </div>' + ' <div id="' + obj.id + '_Body" style="background-color:' + config.backColor + ';width:' + config.contentWidth + 'px;height:' + config.contentHeight + 'px;border:' + config.borderWidth + 'px solid ' + config.borderColor + ';">' + ' <div id="' + obj.id + '_Content" style="background-color:' + config.backColor + ';">' + content + '</div>' + ' </div>' + '</div>'; dialog.Config = config; dialog.PopDom = $(dialog.Html); dialog.x = dialog.x1 = dialog.y = dialog.y1 = dialog.mousekey = 0; /* * 鼠標拖動彈出框 */ if (config.moveAble) { var top = dialog.PopDom.find("#" + obj.id + "_Top"); top.on("mousedown", function (event) { dialog.mousekey = 1; $(this).css("cursor", "move"); dialog.PopDom.find("#" + obj.id + "_Content").css("display", "none"); }); top.on("mouseup", function (event) { dialog.mousekey = 0; $(this).css("cursor", "default"); dialog.PopDom.find("#" + obj.id + "_Content").css("display", ""); }); top.on("mouseout", function (event) { dialog.mousekey = 0; $(this).css("cursor", "default"); dialog.PopDom.find("#" + obj.id + "_Content").css("display", ""); }); top.on("mousemove", function (event) { if (dialog.mousekey == 1) { if (dialog.x != 0 || dialog.y != 0) { dialog.x = event.pageX - dialog.x1; dialog.y = event.pageY - dialog.y1; var parent = $(this.parentElement); parent.css("left", (parent.position().left + dialog.x) + "px"); parent.css("top", (parent.position().top + dialog.y) + "px"); dialog.x = dialog.x1 = event.pageX; dialog.y = dialog.y1 = event.pageY; } else { dialog.x = dialog.x1 = event.pageX; dialog.y = dialog.y1 = event.pageY; } } else { dialog.x = dialog.x1 = dialog.y = dialog.y1 = 0; } return false; }); } return dialog;};/* * 拓展jquery對象的方法; */(function ($) { /* * 關(guān)閉彈出框的方法 */ $.fn.ClosePopDialog = function () { var obj = this; while (obj) { var popdialog = $("#" + this.id + "_Dialog"); if (popdialog) { popdialog.remove(); } var popcover = $("#" + this.id + "_Cover"); if (popcover) { popcover.remove(); } obj = obj.parent; } }; /* * 根據(jù)url取得內(nèi)容并彈出框顯示的方法 * url: 需要顯示的內(nèi)容的url * popDialogConfig: 自定義樣式 * Example: $(document.body).PopDialog("/home/login", { backColor: "gray", borderColor: "blue", borderWidth: 2, contentWidth: 600, contentHeight: 480 }); */ $.fn.PopDialogByUrl = function (url, title, popDialogConfig) { var obj = $(this); obj.ClosePopDialog(); if (url) { $.ajax({ url: url, cache: false, success: function (result) { if (result == "[]" || result == "") { result = "系統(tǒng)忙,請稍后再試!"; } var pop = new PopDialog(result, title, this, popDialogConfig); obj.append(pop.PopDom); }, error: function (result) { if (result == "[]" || result == "") { result = "系統(tǒng)錯誤,請聯(lián)系管理員!"; } var pop = new PopDialog(result, title, this, popDialogConfig); obj.append(pop.PopDom); } }); } }; /* * 彈出框顯示提供的內(nèi)容的方法 * content: 需要顯示的內(nèi)容 * popDialogConfig: 自定義樣式 * Example: $(document.body).PopDialog("<div>這是一個彈出框的例子!</div>", { backColor: "gray", borderColor: "blue", borderWidth: 2, contentWidth: 600, contentHeight: 480 }); */ $.fn.PopDialogByContent = function (content, title, popDialogConfig) { var obj = $(this); obj.ClosePopDialog(); var pop = new PopDialog(content, title, this, popDialogConfig); obj.append(pop.PopDom); };})(jQuery);

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les métadonnées à HTMLhead sont cruciales pour le référencement, le partage social et le comportement du navigateur. 1. Définissez le titre et la description de la page, utilisez et gardez-le concis et unique; 2. Ajoutez des informations sur les cartes OpenGraph et Twitter pour optimiser les effets de partage social, faire attention à la taille de l'image et utiliser des outils de débogage pour tester; 3. Définissez le jeu de caractères et les paramètres de la fenêtre pour s'assurer que le support multi-langues est adapté au terminal mobile; 4. Les balises facultatives telles que l'auteur Copyright, le contr?le des robots et le contenu en double prévention canonique doivent également être configurés raisonnablement.

Toléarnhtmlin2025, chooseAtUtorialthatBalanShands-on -PracticewithModerNstandardsAnd IntegratescsSandjavascriptBasics.1.prioritizehands-onlearningwithstep-by-steprojectsmelindingapersonalprofileorblayout.20

Comment faire des modèles de courrier HTML avec une bonne compatibilité? Tout d'abord, vous devez construire une structure avec des tables pour éviter d'utiliser DIV Flex ou la disposition de la grille; Deuxièmement, tous les styles doivent être inclus et ne peuvent pas compter sur des CS externes; Ensuite, l'image doit être ajoutée avec une description ALT et utiliser une URL publique, et les boutons doivent être simulés avec une table ou un TD avec une couleur d'arrière-plan; Enfin, vous devez tester et ajuster les détails sur plusieurs clients.

Lorsqu'il n'y a pas de serveur backend, la soumission de formulaire HTML peut toujours être traitée via une technologie frontale ou des services tiers. Les méthodes spécifiques incluent: 1. Utilisez JavaScript pour intercepter les soumissions de formulaires pour réaliser la vérification des entrées et les commentaires des utilisateurs, mais les données ne seront pas persistées; 2. Utilisez des services de formulaire de serveur tiers tels que FormSpree pour collecter des données et fournir des fonctions de notification et de redirection par e-mail; 3. Utilisez LocalStorage pour stocker les données des clients temporaires, ce qui convient à l'enregistrement des préférences des utilisateurs ou à la gestion de l'état de l'application d'une seule page, mais ne convient pas au stockage à long terme d'informations sensibles.

La classe, l'identification, le style, les données et le titre sont les attributs globaux les plus couramment utilisés en HTML. La classe est utilisée pour spécifier un ou plusieurs noms de classe pour faciliter le paramètre de style et les opérations JavaScript; ID fournit des identifiants uniques pour les éléments, adaptés aux sauts d'ancrage et au contr?le JavaScript; Le style permet d'ajouter des styles en ligne, adaptés au débogage temporaire mais pas recommandé pour une utilisation à grande échelle; Data-Properties est utilisé pour stocker des données personnalisées, ce qui est pratique pour l'interaction frontale et back-end; Le titre est utilisé pour ajouter des invites de souris, mais son style et son comportement sont limités par le navigateur. La sélection raisonnable de ces attributs peut améliorer l'efficacité du développement et l'expérience utilisateur.

Le chargement paresseux natif est une fonction de navigateur intégrée qui permet le chargement paresseux des images en ajoutant un attribut chargé = "paresseux" à la balise. 1. Il ne nécessite pas de bibliothèques JavaScript ou tierces et est utilisée directement dans HTML; 2. Il convient aux images qui ne sont pas affichées sur le premier écran sous la page, les modules complémentaires de défilement de la galerie d'images et les grandes ressources d'image; 3. Il ne convient pas aux images avec premier écran ou affichage: aucun; 4. Lorsque vous l'utilisez, un espace réservé approprié doit être réglé pour éviter la gigue de mise en page; 5. Il devrait optimiser le chargement d'image réactif en combinaison avec les attributs SRCSET et tailles; 6. Les problèmes de compatibilité doivent être pris en compte. Certains anciens navigateurs ne le soutiennent pas. Ils peuvent être utilisés grace à la détection des fonctionnalités et combinés avec des solutions JavaScript.

Pour ajouter un arrière-plan vidéo à une page Web, la clé consiste à utiliser correctement les balises HTML et à optimiser les attributs pertinents. 1. Utilisez les balises comme arrière-plan et utilisez le positionnement CSS pour remplir la page ou la zone locale; 2. Le format vidéo est préféré.mp4, et WebM est ajouté pour considérer la compatibilité; 3. Ajoutez des attributs en malentend et en ligne pour assurer la lecture automatique du c?té mobile; 4. Contr?lez la taille de la vidéo pour optimiser la vitesse de chargement, et il est recommandé de le garder à des dizaines de MB; 5. Ajouter des boucles pour atteindre la lecture de boucle sans couture; 6. Il peut être appliqué de manière flexible aux blocs en plein écran ou locaux, et différents effets sont obtenus en ajustant la taille de la taille du conteneur et la méthode de positionnement. Les étapes ci-dessus peuvent réaliser un arrière-plan vidéo stable et magnifique.

Pour rendre les IFRames réactifs, le noyau est d'utiliser CSS pour contr?ler le rapport d'aspect et le combiner avec le conteneur d'enveloppement pour obtenir l'adaptation. 1. Utilisez des techniques de rembourrage pour créer des bo?tes à conteneurs avec des proportions fixes. Les ratios communs tels que 16: 9 correspondent au padding-top56,25%, 4: 3 correspondent à 75% et 1: 1 correspondent à 100%; 2. Réglez la largeur d'Iframe à 100% et utilisez un positionnement absolu pour remplir le conteneur, ou utilisez l'attribut de rapport aspect pour maintenir la proportion; 3. Lors du traitement du contenu intégré à tiers, contr?lez le rapport via le transport des conteneurs et garantissez que l'attribut AutorfullScreen est ajouté pour prendre en charge la lecture à écran complet sur les terminaux mobiles. Ma?tre les paramètres du conteneur et de la proportion pour réaliser la réactivité de l'Iframe
