注意兼容性,低版本浏览器无效

要实现当 textarea 文本框获得焦点时,自动给其父元素添加类名或样式,您可以使用 CSS 的 :focus-within 伪类选择器。这个选择器会在元素本身或其任何子元素获得焦点时应用样式。
示例代码
假设您有以下 HTML 结构:
<div class="parent"><textarea id="myTextarea"></textarea>
</div>
您可以使用以下 CSS 代码来实现当 textarea 获得焦点时,给父元素添加一个类名或样式:
.parent:focus-within {border: 1px solid blue; /* 或者添加其他样式 */
}
在这个例子中,当 textarea 文本框获得焦点时,父元素 div 的边框将变为蓝色。
兼容性
请注意,:focus-within 伪类在一些旧版本的浏览器中可能不被支持,因此在实际应用中,您可能需要考虑使用 JavaScript 来实现类似的效果,以确保在所有浏览器中都能正常工作。
使用 JavaScript
如果您需要使用 JavaScript 来实现这个功能,可以通过监听 textarea 的 focus 事件,并在事件处理程序中添加类名或样式到父元素。以下是一个使用 JavaScript 的示例:
const textarea = document.getElementById('myTextarea');
const parent = textarea.parentNode;textarea.addEventListener('focus', function() {parent.classList.add('focused');
});textarea.addEventListener('blur', function() {parent.classList.remove('focused');
});
在这个例子中,当 textarea 获得焦点时,父元素将添加一个名为 focused 的类名,当 textarea 失去焦点时,该类名将被移除。您可以在 CSS 中定义 .focused 类的样式来实现所需的视觉效果。