4

我有一个关于边界半径的问题。基本上我正在使用代码来创建一种聚光灯工具来查找隐藏的 html。这是小提琴:http: //jsfiddle.net/pwneth/hj57k/1899/

CSS:

#tail {
border: 1000px solid #fff;
position: absolute;
float: left;
height: 100px;
width: 100px;
background-color: rgba(0,0,0,.0);
z-index: 100;
top: 0px;
left: 0px;
pointer-events:none;
-moz-box-shadow:    inset 0 0 20px #000000;
-webkit-box-shadow: inset 0 0 20px #000000;
box-shadow:         inset 0 0 20px #000000;
}

我需要以某种方式设置形状的边界半径以使其显示为圆形。然而,这是一个问题,因为这只影响外部边界,这不是我想要影响的。就在边境之内。

4

4 回答 4

6

这是一个更简单的选择:

Fiddle

只需将边界半径放在原始元素上。

#tail
{
    /* ... */
    border-radius:100%;
}

然后隐藏所有内容,直到鼠标移到它上面。

body /* or whatever element you want */
{
    display:none;
}

然后这样做:

$(document).bind('mouseenter', function (e) {
    $('body').show();
});
$('body').bind('mouseleave', function (e) {
    $(this).hide();
});

这样用户将永远不会看到隐藏的内容。

于 2013-09-12T18:31:24.130 回答
2

此解决方案更通用,如果所需的形状是圆角正方形或矩形,则应使用此解决方案

使用after伪元素:http: //jsfiddle.net/hj57k/1903/

#tail {
    border: 1000px solid #fff;
    position: absolute;
    float: left;
    height: 100px;
    width: 100px;
    background-color: rgba(0,0,0,.0);
    z-index: 100;
    top: 0px;
    left: 0px;
    pointer-events:none;
}
#tail:after {
    -webkit-box-shadow: inset 0 0 20px #000000;
    -moz-box-shadow:    inset 0 0 20px #000000;
    box-shadow:         inset 0 0 20px #000000;
    border: 10px solid white;
    border-radius: 20px;
    content: '';
    display: block;
    height: 100%;
    left: -10px;
    position: relative;
    top: -10px;
    width: 100%;
}

您需要相对定位来覆盖仍然可见的左上边缘。注意使用盒子模型或浏览器计算尺寸不一致,这在 webkit 中有效,对于 IE 可能不是这样。

于 2013-09-12T18:29:26.263 回答
1

没有太多变化:jsFiddle

总之,设置border-radius = border-width + radius.

于 2013-09-12T18:35:43.913 回答
0

Jakub 很接近,但这会产生预期的圆圈。

http://jsfiddle.net/hj57k/1905/

#tail {
    border: 1000px solid #fff;
    position: absolute;
    float: left;
    height: 100px;
    width: 100px;
    background-color: rgba(0,0,0,.0);
    z-index: 100;
    top: 0px;
    left: 0px;
    pointer-events:none;
}
#tail:after {
    -webkit-box-shadow: inset 0 0 20px #000000;
    -moz-box-shadow:    inset 0 0 20px #000000;
    box-shadow:         inset 0 0 20px #000000;
    border: 50px solid white;
    border-radius: 999px;
    content: '';
    display: block;
    height: 100%;
    left: -50px;
    position: relative;
    top: -50px;
    width: 100%;
}
于 2013-09-12T18:33:51.983 回答