Aide :focus sur le style extérieur de la div?
Quand je commence l'écriture d'un texte dans le textarea, je veux que l'extérieur de la div, avec une classe de boîte, pour avoir de la frontière tourné solide à la place des pointillés, mais de toute façon l' :focus ne s'applique pas dans ce cas. Si cela fonctionne avec :active, comment se fait il ne fonctionne pas avec :focus?
Des idées pourquoi?
(Note. Je veux que le DIV de la frontière à son tour solide, PAS les textareas)
div.box
{
width: 300px;
height: 300px;
border: thin dashed black;
}
div.box:focus{
border: thin solid black;
}
<div class="box">
<textarea rows="10" cols="25"></textarea>
</div>
- Il ne fonctionne pas avec l'accent parce que le DIV n'aura pas d'accent, seul le TextArea de la volonté. Je voudrais une image d'un DIV ne peut pas avoir le focus de toute façon comme c'est un non-sélectionnable par l'élément
- Vous auriez besoin d'utiliser le JavaScript pour y parvenir; comme tout le div peut prendre le focus du textarea prendra immédiatement en arrière si il est cliqué. JS Fiddle démo; en cliquant à l'extérieur de la
textarea
va changer les frontières de ladiv
, mais l'activation dutextarea
vole focus.
Vous devez vous connecter pour publier un commentaire.
Bien que ce ne peut pas être réalisé avec du CSS/HTML seul, il peut être réalisé avec du JavaScript (sans besoin d'une bibliothèque):
JS Fiddle démo.
Par ailleurs, avec une bibliothèque, comme jQuery, le ci-dessus pourraient être résumés ainsi:
JS Fiddle démo.
Références:
getElementsByTagName()
.onfocus
.onblur
.parentNode
.tagName
.toString()
.toLowerCase()
.style
.focus()
.blur()
.parent()
.css()
.DIV
éléments peuvent obtenir si l'accent mis l'tabindex
attribut. Voici l'exemple qui fonctionne.CSS:
HTML:
Pour plus d'informations sur
focus
etblur
, vous pouvez consulter cet article.Mise à jour:
Et voici un autre exemple d'utilisation de
focus
pour créer unmenu
.CSS:
HTML:
D'autres affiches ont déjà expliqué pourquoi la
:focus
pseudo-classe est insuffisant, mais enfin, il y a un CSS à base de solution standard.CSS Sélecteurs de Niveau 4 définit un nouveau pseudo classe:
:focus-au sein de
De MDN:
Donc, maintenant, avec le
:focus-within
pseudo - classe style de la div extérieure lorsque letextarea
obtient cliqué devient trivial.CSS:
HTML:
Codepen démo
NB: Prise En Charge Du Navigateur : Chrome (60+), Firefox et Safari
Cela peut maintenant être obtenu par le biais de la méthode css
:focus-within
comme exemplifié dans ce post: http://www.scottohara.me/blog/2017/05/14/focus-within.htmlCSS:
HTML:
Simple utiliser JQuery.
JS:
CSS:
HTML:
Vous pouvez onglet entre les balises div. Il suffit d'ajouter un onglet index à la div. Il est préférable d'utiliser jQuery et CSS classes pour résoudre ce problème. Voici un exemple de travail testé sous IE, Firefox et Chrome (versions les plus Récentes... n'ai pas testé plus).
Comme par le spec:
La
<div>
n'accepte pas d'entrée, de sorte qu'il ne peut pas avoir:focus
. En outre, le CSS ne permet pas de définir des styles sur un élément basé sur le ciblage de ses descendants. Donc vous ne pouvez pas vraiment faire cela, sauf si vous êtes prêt à utiliser JavaScript.<div>
pouvez obtenir le focus si vous définissez lacontenteditable="true"
attribut. Mais dans ce cas, ce n'est probablement pas la réponse.Autant que je suis conscient de ce que vous avez à utiliser javascript pour voyager dans les dom.
Quelque chose comme ceci:
vous aurez besoin des bibliothèques jQuery chargés.