注意兼容性,低版本浏览器无效
要实现当 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
类的样式来实现所需的视觉效果。