Bon aprĂšs-midi Mon nom est Boris Cherepanov, je dĂ©veloppe des sites Web sur wordpress et bitrix. J'ai travaillĂ© sur le projet ici. L'une des limitations Ă©tait de ne pas utiliser jquery, mais j'ai dĂ» appeler la mĂȘme fenĂȘtre modale Ă partir de diffĂ©rents boutons. En fait, c'est une tĂąche assez simple, mais j'ai dĂ©cidĂ© d'aller de l'avant et de crĂ©er une fenĂȘtre modale qui serait créée au premier clic, enregistrer son Ă©tat, avoir un constructeur Ă appeler, etc. Et au final, je ne l'ai pas regrettĂ©. J'expliquerai pourquoi plus tard. J'ai «enveloppé» cette fenĂȘtre modale dans une solution clĂ© en main qui peut ĂȘtre utilisĂ©e en permanence.
L'installation
L'installation d'un tel "modal" est simple. TĂ©lĂ©chargez le fichier js et connectez-vous. Il ne dĂ©pend d'aucun Ă©vĂ©nement ou bibliothĂšque, vous pouvez donc vous connecter lĂ oĂč vous en avez besoin. Voici le
lien sur githubInitialisation
Sur la page sur laquelle vous devez appeler, écrivez en js:
new XMC({ bodyID: 'body', backgroundLayerID: 'wrapper', selector: 'data-type', selectorValue: 'openModalForm', btnId: 'mfClose', content: '', classListBg: ['zuzu', 'zaza'], classListBody: ['zuzu', 'zaza2'], classListBtn: ['zuzu', 'zaza3'], styleBg: { top: '0', left:'0', right: '0', bottom: '0', position: 'fixed', background: '#00000090', justifyContent: 'center', alignItems: 'center', zIndex: '6' }, styleBody: { minWidth: '200px', minHeight: '200px', background: '#ffffff', justifyContent: 'center', alignItems: 'center', }, btnStyle: { width: '40px', height: "40px", background: '#ffffff', display: 'flex', justifyContent: 'center', alignItems: 'center', position: 'absolute', top: '5%', right: '5%', cursor: 'pointer' } });
En savoir plus sur les éléments d'un objet
Il y a 6 points requis:
- bodyID est l'identifiant du bloc qui contiendra le contenu de la fenĂȘtre modale
- backgroundLayerID - identifiant de la couche de gradation
- selector - attribut html qui sera sur tous les boutons qui provoquera une fenĂȘtre modale
- selectorValue - valeur du sélecteur
- bntID - id du bouton pour fermer la fenĂȘtre modale
- contenu - texte ou html dans une fenĂȘtre modale
Points facultatifs mais trĂšs importants:
- classListBg, classListBody, classListBtn - tableaux de classes pour la couche de gradation, la fenĂȘtre principale et le bouton de fermeture, respectivement
- styleBg, styleBody, btnStyle - objets avec les styles du calque de gradation, de la fenĂȘtre principale et du bouton de fermeture, respectivement
Un peu sur la fenĂȘtre modale elle-mĂȘme
J'ai dĂ©jĂ dit que la tĂąche principale que rĂ©sout cette fenĂȘtre modale est un appel Ă partir de plusieurs boutons. Cliquer sur plusieurs boutons pour appeler js est un exemple typique de dĂ©lĂ©gation et dans XMC (comme j'ai appelĂ© ma fenĂȘtre modale), il est implĂ©mentĂ© comme ceci:
XMC.prototype.delegateClick = function () { var mf = this; window.addEventListener('click', function () {
En conséquence, dans le constructeur, vous devez vous inscrire:
var XMC = function (object) { this.delegateClick(); }
Soit dit en passant, à un moment donné, un article avec
learn javascript m'a aidé à y faire face. Il vous sera utile de vous familiariser avec celui-ci.
AJAX pour la forme
Dans mon «cas», il était nécessaire de charger le formulaire en utilisant ajax (cette tùche est apparue dans le processus). Grùce à mon approche initiale, j'ai réussi à gagner un peu de temps. J'ai développé le prototype.
XMC.prototype.ajax = function () { var mf = this; var data = new Object();
J'avais un tel code de demande pour CMS Wordpress.
Résumé
En conséquence, grùce à l'approche objet, j'ai réussi à faire non seulement des pop-ups, mais presque une application web dans laquelle j'ai 2 ajax pour recevoir le formulaire et soumettre, traduction spécifique au navigateur, lecture des cookies, chargement de l'animation. Grùce à cela, je n'ai pas eu à chercher de nouveaux éléments par divers sélecteurs pour traduire ou travailler avec les données du formulaire qui sont «arrivées» par ajax.
J'espĂšre que vous trouverez mon article utile. Bonne chance