351 votes

Supprimer la lueur des entrées de texte et des zones de texte dans Safari/Chrome

Je me demande s'il est possible de supprimer la lueur bleue et jaune par défaut lorsque je clique sur une entrée de texte / une zone de texte à l'aide de CSS ?

6 votes

@Steve, une autre raison de le désactiver est que vous voulez que l'effet de lueur fonctionne dans tous les navigateurs en utilisant :focus au lieu du style outline mal supporté.

94 votes

Il est vraiment ennuyeux que les gens entament une conversation philosophique sur la question de savoir si quelque chose est la "bonne chose à faire" alors qu'il s'agit d'une question technique.

2 votes

Je crée une feuille de calcul en ligne, Steve, et elle serait donc adaptée à mon usage. Cela dépend, mais s'il s'agit d'un simple formulaire, vous devriez laisser les grandes lignes telles quelles.

640voto

ajm Points 8631

Editer (11 ans plus tard) : Ne faites pas cela à moins que vous ne fournissiez une solution de repli pour indiquer quel élément est actif. Sinon, cela nuit à l'accessibilité car cela supprime essentiellement l'indication montrant quel élément d'un document a le focus. Imaginez que vous soyez un utilisateur de clavier et que vous ne sachiez pas vraiment avec quel élément vous pouvez interagir. L'accessibilité doit l'emporter sur l'esthétique.

textarea, select, input, button { outline: none; }

Toutefois, il a été avancé que le fait de conserver la lueur/le contour est en fait bénéfique pour l'accessibilité, car il peut aider les utilisateurs à voir quel élément est actuellement focalisé.

Vous pouvez également utiliser le pseudo-élément ':focus' pour ne cibler les entrées que lorsque l'utilisateur les a sélectionnées.

Démonstration : https://jsfiddle.net/JohnnyWalkerDesign/xm3zu0cf/

2 votes

Parfait, merci beaucoup. Je me demande également si je peux supprimer l'option de redimensionnement de la zone de texte (en bas à droite de la zone de texte) ?

3 votes

+1 pour l'avertissement ; s'il vous plaît essayez d'éviter de faire quoi que ce soit qui rompe avec les attentes de l'utilisateur concernant les performances de sa plate-forme ; vous pourriez en fait nuire à sa productivité et rendre votre site web plus difficile à utiliser.

0 votes

Oui, définissez la hauteur et la largeur maximales.

95voto

Carl W Points 441

Cet effet peut également se produire sur des éléments qui ne sont pas des entrées. J'ai trouvé une solution plus générale qui fonctionne comme suit

:focus {
  outline-color: transparent;
  outline-style: none;
}

Mise à jour : Il se peut que vous n'ayez pas à utiliser la fonction :focus sélecteur. Si vous avez un élément, par exemple <div id="mydiv">stuff</div> et que vous obteniez l'éclat extérieur sur cet élément div, appliquez-le comme d'habitude :

#mydiv {
  outline-color: transparent;
  outline-style: none;
}

0 votes

Cela fonctionne, par exemple, pour <button> qui ne bénéficient pas particulièrement de la mise au point par incandescence, puisque la plupart du temps, vous cliquez dessus de toute façon.

1 votes

La réponse acceptée n'a pas fonctionné pour moi sur Chrome sous OSX. Cette solution a fait l'affaire.

0 votes

Cette technique vous permet également de conserver la mise au point, mais de redéfinir la valeur du contour pour qu'il soit d'une couleur unie de votre choix, etc. afin de l'adapter au style de votre site si le fait de le supprimer n'est pas totalement satisfaisant.

13voto

Thomas Maas Points 1185

Sur le redimensionnement des zones de texte dans les navigateurs basés sur webkit :

Le réglage de la hauteur et de la largeur maximales de la zone de texte ne supprime pas la poignée de redimensionnement visuel. Essayez :

resize: none;

(et oui, je suis d'accord avec "essayer d'éviter de faire quoi que ce soit qui brise les attentes de l'utilisateur", mais parfois cela a du sens, par exemple dans le contexte d'une application web).

Pour personnaliser l'aspect et la convivialité des éléments de formulaire webkit à partir de zéro :

-webkit-appearance: none;

3 votes

Il est également possible d'autoriser le redimensionnement dans une seule direction, ce qui peut corriger son interaction avec certaines mises en page sans le désactiver complètement : les valeurs possibles pour le redimensionnement sont les suivantes none , both , horizontal , vertical y inherit .

0 votes

J'aime la solution proposée ici avec " -webkit-appearance : none ; " - qui supprime TOUT le style des éléments de saisie, de sorte que vous pouvez les styliser comme vous le souhaitez. Je vous remercie de votre attention.

0 votes

Je ne sais pas pourquoi il y a autant de votes positifs, ce n'est pas du tout une réponse à la question.

2voto

Kyle S Points 6

Si vous souhaitez supprimer l'éclat des boutons dans Bootstrap (ce qui n'est pas nécessairement mauvais pour l'UX à mon avis), vous aurez besoin du code suivant :

.btn:focus, .btn:active:focus, .btn.active:focus{
  outline-color: transparent;
  outline-style: none;
}

0 votes

Merci. .btn:active:focus a été nécessaire pour enlever la lueur tout en maintenant le bouton enfoncé.

0voto

criss_ae Points 26
<select class="custom-select">
        <option>option1</option>
        <option>option2</option>
        <option>option3</option>
        <option>option4</option>
</select>

<style>
.custom-select {
        display: inline-block;
        border: 2px solid #bbb;
        padding: 4px 3px 3px 5px;
        margin: 0;
        font: inherit;
        outline:none; /* remove focus ring from Webkit */
        line-height: 1.2;
        background: #f8f8f8;

        -webkit-appearance:none; /* remove the strong OSX influence from Webkit */

        -webkit-border-radius: 6px;
        -moz-border-radius: 6px;
        border-radius: 6px;
    }
    /* for Webkit's CSS-only solution */
    @media screen and (-webkit-min-device-pixel-ratio:0) { 
        .custom-select {
            padding-right:30px;    
        }
    }

    /* Since we removed the default focus styles, we have to add our own */
    .custom-select:focus {
        -webkit-box-shadow: 0 0 3px 1px #c00;
        -moz-box-shadow: 0 0 3px 1px #c00;
        box-shadow: 0 0 3px 1px #c00;
    }

    /* Select arrow styling */
    .custom-select:after {
        content: "▼";
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        font-size: 60%;
        line-height: 30px;
        padding: 0 7px;
        background: #bbb;
        color: white;

        pointer-events:none;

        -webkit-border-radius: 0 6px 6px 0;
        -moz-border-radius: 0 6px 6px 0;
        border-radius: 0 6px 6px 0;
    }
</style>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X