Scripts indispensables à Webflow [MAJ Septembre 2023]

Benoît Eveillard
12 Scripts Essentiels pour Webflow | Astuces & Optimisations

Sommaire

Utiliser du code dans un outil no-code comme Webflow est parfois indispensable. Voici 12 scripts donc d'utilité publique pour booster vos projets et améliorer l'expérience.

Bloquer la touche Entrer permettant de valider un formulaire (ou aller à l’étape suivante)

<script>
$(document).ready(function(){$(window).keydown(function(event){if(event.keyCode==13){event.preventDefault();return false}})});
</script>

👉 Voir notre attribute dédié

Utiliser Echap pour fermer une popup

Pensez à mettre à jour l’ID (ici contact-modal_close-button)

<script>
// Fermer la popup au clic sur le bouton Echap / ESC
document.body.addEventListener('keydown', function (e) {
 if (e.key === 'Escape') {
  document.querySelector('.contact-modal_close-button').click();
 }
});
</script>

👉 Voir notre attribute dédié

Prévenir l’auto scale sur mobile

Sur mobile (notamment Apple) quand vous cliquez sur un champ de formulaire ça va “scale” automatiquement et peut gâcher un peu l’expérience.

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

Créer un bouton Retour pour revenir à la page précédente

Ajouter juste ceci en tant qu’URL dans le lien href

`javascript:history.back(-1);

Garder les paramètres d’URL après une soumission de formulaire

Pour en savoir plus sur les paramètres d'URL et Webflow, je vous conseille de lire l'article dédié.

<script>
//changer l'ID du formulaire Webflow
$("#wf-form-contact").submit(function (e) {
    e.preventDefault();
//définir les paramètres que vous voulez garder et mettre le slug de l'URL de redirection
		let utm_source=$("#utm_source").val();let utm_medium=$("#utm_medium").val();window.location="/test?utm_source="+$("#utm_source").val()+"&utm_medium="+$("#utm_medium").val();});
</script>

👉 Voir notre attribute dédié

Révéler le bouton Entrée uniquement lorsqu’un email est valide

<script>
  $(function(){

    // Afficher le bouton d'envoi uniquement quand l'email est valide
    ;( function( $, window, document, undefined ) {
        'use strict';
        var form        = '.email-form',
            className   = 'email-active',
            submit      = 'input[type="submit"]',
            email       = 'input[type="email"]';
        $( form ).each( function(){
            var $form   = $( this ),
                $email  = $form.find( email ),
                $submit  = $form.find( submit ),
                val     = '';
            $email.on( 'keyup.addClassWhenEmail', function(){
                val = $email.val();
                $submit.toggleClass( className, val != '' && /^([\w-\.]+@([\w-]+\.)+[\w-]{2,12})?$/.test( val ) );    
            });
        });
    })( jQuery, window, document );
  })
</script>

{{newsletter-blog}}

Désactiver la première option d’un champ Select

Pensez à mettre un ID à votre select (ci-dessous : justa) pour que cela fonctionne

<script>
  $( "#justa option:first-child" ).attr("disabled","disabled");
</script>

Désactiver la sélection du texte

Placer ce code et ensuite appliquer une class no-select pour désactiver la sélection du texte en question

<style>
/* disable user selection of an element */
.no-select {
  -webkit-user-select: none; /* webkit browsers */
  -khtml-user-select: none; /* Konqueror browser */
  -moz-user-select: none; /* firefox browser */
  -ms-user-select: none; /* internet explorer & edge */
  user-select: none;
}
</style>

Rediriger en fonction de la langue du navigateur

Dans le cas d’un site multilingue, une redirection automatique peut être intéressante. Ici, si la langue n’est pas le français alors, cela redirige vers coucou/en

<script>
$( document ).ready(function(){
var userLang = navigator.language || navigator.userLanguage;
if (userLang != "fr") {
    window.location.href = "coucou.com/en"
}
});
</script>

Afficher les slides à partir d’un numéro spécifique

Mettre l’ID de votre slider jour et indiquer à partir de quelle slide vous souhaitez commencer

<script>
$(document).ready(function() {
    $('#slider div:nth-child(2)').trigger('tap');
});
</script>

👉 Voir notre attribute dédié

Afficher des class uniquement sur desktop

Cela peut être utile lorsque vous mettez des class css en custom code mais que vous ne souhaitez pas qu’elle s’affiche sur mobile (au hover par exemple).

@media (min-width: 1024px) {
    .ma-class { ma propriete: ma valeur; }
}

Créer un tableau dans Webflow

<style>
/* ----------------------------- DESIGN DU TABLEAU ----------------------------- */
:root {
  /* COULEURS DU TABLEAU */
  --table-header-font-color: #ffffff; /* couleurs des en-têtes */
  --table-header-bg-color: #2260c9; /* couleurs du backgound des en-têtes */
  --table-header-border-color: #ffffff; /* couleurs des en-têtes */
  
  --table-cell-font-color: #777777;
  --table-cell-border-color: #d2d2d2;
  
  --table-bg-color: #ffffff;
  --table-border-color: #ffffff; /* couleurs des borders */
  
  /* DIMENSIONS DU TABLEAU */
  --table-header-padding-top-bottom: 12px; /* headers top & bottom padding */
  --table-header-padding-left-right: 10px; /* headers left & right padding */
  --table-heading-font-size: 18px;
  
  --table-cell-padding-top-bottom: 10px;  /* Top & bottom des cellules */
  --table-cell-padding-left-right: 10px;  /* Left & Right des cellules */
  --table-cell-font-size: 14px;
  --table-cell-min-width: 200px;
  
  --table-margin-bottom: 48px;
}
/* ----------------------------- FIN DU DESIGN DU TABLEAU ----------------------------- */



/* Paramétrage ci-dessous, pas besoin de changer des éléments */
.table-wrap {
	overflow-x: scroll;
  width: 100%;
  margin-bottom: var(--table-margin-bottom);
}

table, th, td {
  border-collapse: collapse;
}

table {
	width: 100%;
  border: 1px solid var(--table-border-color);
  background-color: var(--table-bg-color);
}

th:last-child {
  border-left: 1px solid var(--table-header-bg-color);
  border-top: 1px solid var(--table-header-bg-color);
  border-right: 1px solid var(--table-header-bg-color);
  border-bottom: 1px solid var(--table-header-bg-color);
}

th {
	text-align: left;
  color: var(--table-header-font-color);
  background-color: var(--table-header-bg-color);
  padding: var(--table-header-padding-top-bottom) var(--table-header-padding-left-right);
  font-size: 16px;
  border-left: 1px solid var(--table-header-bg-color);
  border-top: 1px solid var(--table-header-bg-color);
  border-right: 1px solid var(--table-header-border-color);
  border-bottom: 1px solid var(--table-header-bg-color);
  font-size: var(--table-heading-font-size);
}

td {
  color: var(--table-cell-font-color);
  border: 1px solid var(--table-cell-border-color);
	padding: var(--table-cell-padding-top-bottom) var(--table-cell-padding-left-right);
  font-size: var(--table-cell-font-size);
}

th, td {
	min-width: var(--table-cell-min-width);
}
</style>


<!-- ****Contenu à modifier **** -->
<div class="table-wrap">
  <table>
    <!-- En tête des colonnes -->
    <tr>
      <th>Pays</th>
      <th>Capitale</th>
      <th>Nombre d'habitants</th>
    </tr>

    <!-- Ligne 1 -->
    <tr>
      <td>France</td>
      <td>Paris</td>
      <td>67 millions</td>
    </tr>

    <!-- Ligne 2 -->
    <tr>
      <td>Espagne</td>
      <td>Madrid</td>
      <td>48 millions</td>
    </tr>

    <!-- Ligne 3 -->
    <tr>
      <td>Allemagne</td>
      <td>Berlin</td>
      <td>75 millions</td>
    </tr>
  
  </table>
</div>

Ici, vous pouvez modifier le design dans la 1ère partie du code. L'arrivée des variables dans Webflow va rendre beaucoup plus facile cette tâche.

Désactiver la soumission du formulaire Webflow

Désactiver la soumission du formulaire peut parfois être utile. Par exemple, lorsque le formulaire est juste un moyen d'arriver sur une page pré-filtré une soumission n'est pas utile ou nécessaire.

Changez l'ID #mon-form par celui réellement sur votre formulaire.

<script>
Webflow.push(function() {
  $('#mon-form').submit(function() {
    return false;
  });
});
</script>

👉 Voir notre attribute dédié

Temps de lecture d'un article ou d'un bloc de texte

Script pratique pour ne pas avoir à créer et remplir un champ pour votre blog sous Webflow. Concrètement, cela va compter le nombre de mots et à partir d'une moyenne qui fait consensus (200 mots par minute), estimer le temps de lecture.

Vous avez juste à remplacer la section pour laquelle il faut estimer le temps (ici #article) et ensuite la destination où afficher le chiffre retourné (ici temps qui correspond à un ID. sur la page).

<script>
function get_text(el) {
    ret = "";
    var length = el.childNodes.length;
    for(var i = 0; i < length; i++) {
        var node = el.childNodes[i];
        if(node.nodeType != 8) {
            ret += node.nodeType != 1 ? node.nodeValue : get_text(node);
        }
    }
    return ret;
}
    
var words = get_text(document.querySelector('#article'));
var count = words.split(' ').length;

document.getElementById('temps').innerHTML = Math.round(count / 200).toFixed();
</script>

👉 Voir notre attribute dédié

Bonus : Intégrer schema.org sur Webflow

Pour booster vos résultats SEO, une des clés est de faire comprendre aux moteurs de recherche de quoi traite votre site. Un des moyens est d'utiliser les rich snippets schema.org dans votre projet Webflow.

Bonus 2 : Tous les attributs de Finsweet

On ne va pas tous les citer, mais on vous encourage à installer leur extension Chrome, à aller regarder leur documentation. Vous pouvez aussi prendre le plan Pro pour les soutenir dans le développement de produits pour la communauté Webflow.

Partager l'article
Logo Justa

Progressez sur Webflow

Oops! Une erreur s'est produite lors de la soumission du formulaire.
Logo Justa

Progressez sur Webflow

Oops! Une erreur s'est produite lors de la soumission du formulaire.