2

CSSを使用して、次のようなツールチップを作成しようとしています:

逆丸角

これは私がそれを解決しようとしている方法です: http://jsfiddle.net/NXLuZ/

だから、基本的に私はcss3マスキングを使用しています:

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;
}

通常のディスプレイでは問題なく表示されますが、Retina ディスプレイで表示している場合や拡大しようとすると問題が発生することがあります。

問題

グラデーションをマスクとして使用しているため、グラデーションで色が変わると少しぼやけて見えます。背景はその後ろに固定されていないため、丸みを帯びた角は透明にする必要があることに注意してください。

どうすればこの問題を解決できますか?

4

1 に答える 1

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;
}

フィドル

于 2014-01-10T20:19:37.790 に答える