css – 使用:focus to style outer div?

前端之家收集整理的这篇文章主要介绍了css – 使用:focus to style outer div?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我开始在textarea中编写文本时,我想要外部的div,一个类框,让它的边框变为固体,而不是虚线,但不知何故:焦点不适用于这种情况。如果它适用于:活动,它是如何不与工作:焦点?

任何想法为什么?

(注意,我想要DIV的边框变成固体,而不是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>

解决方法

虽然这不能用CSS / HTML单独实现,但可以使用JavaScript实现(不需要库):
var textareas = document.getElementsByTagName('textarea');

for (i=0;i<textareas.length;i++){
    // you can omit the 'if' if you want to style the parent node regardless of its
    // element type
    if (textareas[i].parentNode.tagName.toString().toLowerCase() == 'div') {
        textareas[i].onfocus = function(){
            this.parentNode.style.borderStyle = 'solid';
        }
        textareas[i].onblur = function(){
            this.parentNode.style.borderStyle = 'dashed';
        }
    }
}

JS Fiddle demo

顺便说一句,使用一个库,如jQuery,上面可以缩减到:

$('textarea').focus(
    function(){
        $(this).parent('div').css('border-style','solid');
    }).blur(
    function(){
        $(this).parent('div').css('border-style','dashed');
    });

JS Fiddle demo

参考文献:

> getElementsByTagName()
> onfocus
> onblur
> parentNode
> tagName
> toString()
> toLowerCase()
> style
> focus()
> blur()
> parent()
> @L_502_13@。

猜你在找的CSS相关文章