CSS:焦点不工作
CSS :focus not working
我尝试在我的项目中使用 :focus
CSS
伪 class。我想更改单击它的元素的颜色。现在,当我单击我的元素时,仅在它处于活动状态时更改颜色,并在鼠标悬停后将其 return 更改为旧颜色。第二次单击后,我希望它恢复为旧颜色。我正在使用 Chrome.
演示 here
.row {
display: inline-block;
border: 1px solid grey;
height: 200px;
width: 200px;
line-height: 1em;
background: grey;
margin: 5px;
opacity: 0.1;
}
.row:active,
.row:focus {
background: orange;
}
<div id="main" class="container">
<div class="row" id="row0">
</div>
</div>
您可以使用 CSS 技巧通过添加隐藏的复选框输入来模拟切换效果。
HTML :
<div id="main" class="container">
<input type="checkbox" />
<div class="row" id="row0">
</div>
</div>
CSS :
.container { position: relative; }
input { position: absolute; left: 0; right: 0; top: 0; bottom: 0; width: 200px; height: 200px; z-index: 1; opacity: 0; display: block; }
input:checked + .row { background: orange; }
您要查找的是 :visited
,但这不适用于 div。您应该为它使用 a
标签(包括 href="#"
)。
.row:active, .row:visited { background: orange; }
检查下面的fiddle:
编辑:Vincent G 的回答似乎更符合您的要求,因为您可以通过单击移除背景颜色。
如果你想要一个真正的焦点状态到一个 div 元素,你可以给它添加一个 tabindex
属性。
.row {
display:inline-block;
border:1px solid grey;
height:200px;
width: 200px;
line-height:1em;
background: grey;
margin: 5px;
opacity: 0.1;
}
.row:active, .row:focus { background: orange; }
<div id="main" class="container">
<div class="row" tabindex="1" id="row0">
</div>
</div>
如果要通过单击相同的 div 元素来切换颜色,则必须使用 javascript (jQuery):
jQuery('#row0').click(function() {
$(this).toggleClass('orange');
});
.row {
display:inline-block;
border:1px solid grey;
height:200px;
width: 200px;
line-height:1em;
background: grey;
margin: 5px;
opacity: 0.1;
}
.row.orange { background: orange; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="main" class="container">
<div class="row" id="row0">
</div>
</div>
.row {
display:inline-block;
border:1px solid grey;
height:200px;
width: 200px;
line-height:1em;
background: grey;
margin: 5px;
opacity: 0.1;
}
.row:active, .row:focus { background: orange; opacity:1 }
<div id="main" class="container">
<div class="row" tabindex="1" id="row0">
</div>
</div>
请试试这个...
根据 Andy Tschiersch 的回答,我建议使用 tabindex = "0"(这是它的默认值)而不是 tabindex = "1"。
参见:https://developer.mozilla.org/fr/docs/Web/HTML/Global_attributes/tabindex
<div id="main" class="container">
<div class="row" id="row0" tabindex="0" >
</div>
</div>
我尝试在我的项目中使用 :focus
CSS
伪 class。我想更改单击它的元素的颜色。现在,当我单击我的元素时,仅在它处于活动状态时更改颜色,并在鼠标悬停后将其 return 更改为旧颜色。第二次单击后,我希望它恢复为旧颜色。我正在使用 Chrome.
演示 here
.row {
display: inline-block;
border: 1px solid grey;
height: 200px;
width: 200px;
line-height: 1em;
background: grey;
margin: 5px;
opacity: 0.1;
}
.row:active,
.row:focus {
background: orange;
}
<div id="main" class="container">
<div class="row" id="row0">
</div>
</div>
您可以使用 CSS 技巧通过添加隐藏的复选框输入来模拟切换效果。
HTML :
<div id="main" class="container">
<input type="checkbox" />
<div class="row" id="row0">
</div>
</div>
CSS :
.container { position: relative; }
input { position: absolute; left: 0; right: 0; top: 0; bottom: 0; width: 200px; height: 200px; z-index: 1; opacity: 0; display: block; }
input:checked + .row { background: orange; }
您要查找的是 :visited
,但这不适用于 div。您应该为它使用 a
标签(包括 href="#"
)。
.row:active, .row:visited { background: orange; }
检查下面的fiddle:
编辑:Vincent G 的回答似乎更符合您的要求,因为您可以通过单击移除背景颜色。
如果你想要一个真正的焦点状态到一个 div 元素,你可以给它添加一个 tabindex
属性。
.row {
display:inline-block;
border:1px solid grey;
height:200px;
width: 200px;
line-height:1em;
background: grey;
margin: 5px;
opacity: 0.1;
}
.row:active, .row:focus { background: orange; }
<div id="main" class="container">
<div class="row" tabindex="1" id="row0">
</div>
</div>
如果要通过单击相同的 div 元素来切换颜色,则必须使用 javascript (jQuery):
jQuery('#row0').click(function() {
$(this).toggleClass('orange');
});
.row {
display:inline-block;
border:1px solid grey;
height:200px;
width: 200px;
line-height:1em;
background: grey;
margin: 5px;
opacity: 0.1;
}
.row.orange { background: orange; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="main" class="container">
<div class="row" id="row0">
</div>
</div>
.row {
display:inline-block;
border:1px solid grey;
height:200px;
width: 200px;
line-height:1em;
background: grey;
margin: 5px;
opacity: 0.1;
}
.row:active, .row:focus { background: orange; opacity:1 }
<div id="main" class="container">
<div class="row" tabindex="1" id="row0">
</div>
</div>
请试试这个...
根据 Andy Tschiersch 的回答,我建议使用 tabindex = "0"(这是它的默认值)而不是 tabindex = "1"。
参见:https://developer.mozilla.org/fr/docs/Web/HTML/Global_attributes/tabindex
<div id="main" class="container">
<div class="row" id="row0" tabindex="0" >
</div>
</div>