CSS3倒置/反向圆角用于工具提示

时间:2014-01-10 20:00:16

标签: css css3 retina-display masking webkit-mask

我正在尝试使用CSS创建一个看起来像这样的工具提示:

reversed rounded corners

这就是我试图解决的问题:http://jsfiddle.net/NXLuZ/

所以,基本上我正在使用css3 masking:

div:after {
    width: 61px;
    height: 10px;
    background: #fff;
    -webkit-mask-image: radial-gradient(circle 10px at 0px 0, transparent 0, transparent 10px, black 11px);
    top: -10px;
    right: 0px;
    position: absolute;
    content: '';
    display: block;
}

在常规显示屏上看起来不错,但是当您在视网膜显示屏上查看时或者在尝试放大时,您可以看到问题:

The issue

因为我使用渐变作为蒙版,当渐变中的颜色发生变化时,它看起来有点模糊。重要的是,圆角需要透明,因为背后没有固定背景。

我知道如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

你可以使用框阴影:

.demo{
    position: absolute;
    left: 400px;
    top: 106px;
    background: #fff;
    width: 200px;
    height: 200px;
    -moz-border-radius:10px 0 10px 10px;
    -webkit-border-radius:10px 0 10px 10px;
    border-radius:10px 0 10px 10px;
    -moz-box-shadow: 3px 4px 20px rgba(0,0,0,.5);
    -webkit-box-shadow: 3px 4px 20px rgba(0,0,0,.5);
    box-shadow: 3px 4px 20px rgba(0,0,0,.5);    
    line-height:200px;
    text-align:center;
    color:#dbdbdb;
}

.demo:before {
    content: '';
    width: 50px;
    position: absolute;
    right: 0px;
    top: -26px;
    height: 16px;
    background: #fff;
    -moz-border-radius:10px 10px 0 0;
    -webkit-border-radius:10px 10px 0 0;
    border-radius:10px 10px 0 0;
    display: block;
}

.demo:after {
    width: 10px;
    height: 10px;
    background: transparent;
    top: -10px;
    right: 50px;
    position: absolute;
    content: '';
    border-bottom-right-radius: 100%;
    box-shadow: 50px 0px 0px 50px white;
    clip: rect(0px, 60px, 50px, 0px);
    display: block;
}

fiddle