【发布时间】:2015-10-27 22:25:17
【问题描述】:
我有一个物品清单。用户可以通过点击来选择一个项目。我想使用 CSS 更改所选项目的颜色。假设用户点击了 item1,那么 item1 会变成红色。现在如果用户点击第 2 项,则第 2 项将变为红色。我的 HTML 代码:
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
【问题讨论】:
我有一个物品清单。用户可以通过点击来选择一个项目。我想使用 CSS 更改所选项目的颜色。假设用户点击了 item1,那么 item1 会变成红色。现在如果用户点击第 2 项,则第 2 项将变为红色。我的 HTML 代码:
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
【问题讨论】:
向每个li 元素添加tabindex 允许您应用:focus 伪类:
li:focus {
color: red;
outline: none;
}
<ul>
<li tabindex=1>item1</li>
<li tabindex=1>item2</li>
<li tabindex=1>item3</li>
</ul
【讨论】:
您可以使用 :focus 伪选择器仅使用 CSS 完成此操作:
li:focus{
color:red;
outline:none;
}
这要求元素是可聚焦的。添加标签索引可能适合您正在做的事情并且会起作用。
<ul>
<li tabindex="0">item1</li>
<li tabindex="0">item2</li>
<li tabindex="0">item3</li>
</ul>
这是关于哪些元素获得焦点的答案: Which HTML elements can receive focus?
【讨论】:
你可以把元素变成一个按钮。
删除按钮的默认样式:
online: none;
border: none;
background: none;
然后应用通常的按钮 :focus 或 :active 选择器。
示例如下:
HTML:
<button>test1</button>
<button>test2</button>
<button>test3</button>
CSS:
button{
width: 100px;
height: 100px;
background: lightgray;
outline: none;
border: none;
}
button:hover{
color: red;
cursor: pointer;
}
button:focus, button:active{
background-color: pink;
color: white;
}
这里是代码笔:https://codepen.io/dmitrisan/pen/PomdRBG
记住:您可以通过 CSS 规则将 BUTTON 转换为 div 或 span 标签,但所有 BUTTON 伪选择器仍然适用。
编程是史诗般的!你制定规则! =)
【讨论】: