focus
和 active
是 CSS 中的两种不同的伪类,它们代表了元素的不同状态:
:focus
:focus
伪类在用户点击或通过键盘(例如Tab键)将焦点移动到一个元素时应用。通常用于表单输入(如<input>
、<textarea>
等),当元素成为焦点时,focus
状态被激活。- 例如,当用户点击一个输入框并准备输入文本时,这个输入框就处于
:focus
状态。 :focus
状态通常用于提高可用性和用户体验,通过改变元素的样式来提示用户当前交互的元素。- CSS 代码示例:
这段代码意味着当输入框获得焦点时,其边框会变成2像素宽,颜色为蓝色。cssinput:focus { border: 2px solid blue; }
:active
:active
伪类在用户点击一个元素并且在松开鼠标按钮之前应用。它表示元素正在被激活或点击。- 例如,当用户按下一个按钮时,在鼠标按钮按下的过程中,按钮就处于
:active
状态。 - 与
:focus
不同,active
状态通常非常短暂,它只在用户与元素交互的那一刻存在。 - CSS 代码示例:
这段代码意味着当按钮被点击时,背景颜色变为红色。cssbutton:active { background-color: red; }
使用场景举例
假设你有一个提交表单的按钮。当用户通过键盘导航到这个按钮并准备点击它时,按钮可能出现一个轮廓或阴影,提示用户它已获得焦点(:focus
)。当用户真正点击按钮并按下时(在鼠标键松开之前),按钮的颜色可能会变深或出现内凹效果,表示它处于激活状态(:active
)。
这两种状态可以结合使用,以向用户提供视觉反馈,增强用户界面的交互性。例如,一个按钮可能同时定义了 :focus
和 :active
伪类:
cssbutton:focus { outline: none; box-shadow: 0 0 5px rgba(81, 203, 238, 1); } button:active { transform: translateY(2px); }
在这个例子中,当按钮获得焦点时,它会显示一个蓝色的光晕作为轮廓,并且当按钮被激活或点击时,它会向下移动2像素,给用户一种按压的视觉效果。