CSS 样式:
.outer {
position: relative;
width: 100%;
height: 200px;
background-color: #000;
overflow: hidden;
}
.outer:focus {
outline: 10px solid #00FF00;
}
.inner {
position: absolute;
width: 50%;
height: 200px;
background-color: #F0F;
left: 50%;
}
.inner:focus {
outline: 10px solid #FFFF00;
}
HTML 代码:
<div tabindex="0" class="outer">
<div tabindex="0" class="inner">
问题:
我想使内部div可以使用轮廓边框进行聚焦,但由于overflow: hidden;
我不能这样做。这只是一个例子。此外,当焦点在内部div上时,我不想触摸外部div的overflow: hidden
,所以这不会发生。也许有一种简单的方法(仅代码,没有imgs-graphics)在可聚焦元素上实现某种边界?
*仅限CSS-HTML代码。没有JS
答案 0 :(得分:4)
当聚焦div时,outline
使用负偏移量,如下所示:
.inner:focus {
outline-offset: -10px;
}
该值应等于outline-width
。
作为替代方法,您也可以使用插入box-shadow
,例如
box-shadow: inset 0 0 0 10px #ff0;
答案 1 :(得分:1)
您可以使用::after
属性
.inner:focus::after {
content: "";
height: 90%;
outline: 10px solid #ffff00;
position: absolute;
top: 10px;
width: 98.1%;
z-index: 99999;
}
答案 2 :(得分:1)
您可以使用border
代替outline
并设置box-sizing: border-box
.outer {
position: relative;
width: 100%;
height: 200px;
background-color: #000;
overflow: hidden;
}
.outer:focus {
outline: 10px solid #00FF00;
}
.inner {
position: absolute;
width: 50%;
height: 200px;
box-sizing: border-box;
background-color: #F0F;
left: 50%;
}
.inner:focus {
border: 10px solid #FFFF00;
}
&#13;
<div tabindex="0" class="outer">
<div tabindex="0" class="inner">
&#13;
答案 3 :(得分:0)
您可以将 box-shadow: inset
或 outline
与负 outline-offset
一起使用
.inner:focus::after {
content: '';
position: absolute;
z-index: 1;
top: 0;
left: 0;
width: 100%;
height: 100%;
/* #1 */
box-shadow: inset 0 0 0 4px blue;
/* #2 */
outline: 4px;
outline-offset: -4px;
}