J'ai une webapp qui utilise des divs modifiables. J'aime leur apparence dans Chrome: lorsque je me concentre, Chrome affiche une belle lueur bleue autour du div. Cependant, dans Firefox, j'obtiens un contour en pointillés laid. Ce que j'ai observé jusqu'à présent, c'est que Chrome cesse d'afficher son cadre bleu par défaut une fois que j'ai changé le contour de div: focus. J'aimerais que mon application soit toujours belle, donc ma question est
comment puis-je répliquer le style par défaut de Chrome pour div[contenteditable="true"]:focus
?
Pour répondre à la question, les navigateurs Webkit utilisent outline: 5px auto -webkit-focus-ring-color;
. Sur Mac, -webkit-focus-ring-color
Est bleu rgb(94, 158, 214)
(ou #5E9ED6
), Mais sur Windows et Linux c'est or rgb(229, 151, 0)
(ou #E59700
) ( réf ).
Bien que je comprenne votre désir de cohérence, les utilisateurs n'utilisent généralement qu'un seul navigateur et sont habitués aux styles par défaut de leur navigateur. Notez que sauf si vous prévoyez de modifier chaque instance de :focus
, Vous vous retrouverez avec une incohérence, par exemple utilisateurs de clavier. Avantages et inconvénients hein!
Si vous définissez des styles outline
et que vous souhaitez "revenir" aux styles d'agent utilisateur par défaut sur :focus
, Cela vous aidera.
.myClass:focus {
outline: 1px dotted #212121;
outline: 5px auto -webkit-focus-ring-color;
}
La couleur de préfixe -webkit
Signifie FF, IE et Edge ignorera la deuxième règle et utilisera la première. Chrome, Safari et Opera will utilisez la deuxième règle.
HTH!
Ce ( violon donne une bonne approximation, vous voudrez peut-être Tweak pour vous rapprocher de ce que vous recherchez spécifiquement.
HTML
<div contenteditable='true'>Edit Me</div>
CSS
div[contenteditable=true] {
width:200px;
border:2px solid #dadada;
border-radius:7px;
font-size:20px;
padding:5px;
margin:10px;
}
div[contenteditable=true]:focus {
outline:none;
border-color:#9ecaed;
box-shadow:0 0 10px #9ecaed;
}
Je pense que j'ai trouvé le parfait, au moins pour moi:
// Beggin
button {
outline: 5px auto rgba(0, 150, 255, 1);
-webkit-outline: 5px auto rgba(0, 150, 255, 1);
-moz-outline: 5px auto rgba(0, 150, 255, 1);
-ms-outline: 5px auto rgba(0, 150, 255, 1);
-o-outline: 5px auto rgba(0, 150, 255, 1);
/* Use a border to apply the outline */
border: 1px solid rgba(0, 0, 0, 0);
/* Unimortant styling: */
background: linear-gradient(to bottom, #fff 30%, #fcfcfc 40%, #f8f8f8 50%, #f0f0f0 100%);
}
<button type="button"">Outline</button>