有没有办法在 CSS3 中做一个倒圆角,类似于下面(粗略)图中的左下角?
/-------\
| |
| |
| |
| ______/
|/ <---The left side is flush (straight), the slant should be rounded
也许边界半径可以与这种技术相结合?
编辑:我不是在寻找气泡,而只是一种弯曲左下角点右侧的方法。
有没有办法在 CSS3 中做一个倒圆角,类似于下面(粗略)图中的左下角?
/-------\
| |
| |
| |
| ______/
|/ <---The left side is flush (straight), the slant should be rounded
也许边界半径可以与这种技术相结合?
编辑:我不是在寻找气泡,而只是一种弯曲左下角点右侧的方法。
好吧,这纯粹是疯狂,但肯定有办法实现这一点:-) 不是跨浏览器,但让我们看看:
我们的加价:
<div id="bubble">
<p>This is madness!</p>
</div>
我们的 CSS:
#bubble {
width:200px;
height:100px;
border:1px solid #000;
-webkit-border-radius:20px;
-moz-border-radius:20px;
border-radius:20px;
}
#bubble p {
margin: 1em;
font-family:Comic Sans MS;/* well, madness it is! */
}
#bubble:before {
content:'';
border:20px solid;
border-color:#fff transparent transparent;
position:absolute;
top:110px;
left:25px;
z-index:2;
}
#bubble:after {
content:'';
border:20px solid;
border-color:#000 transparent transparent;
position:absolute;
top:111px;
left:25px;
z-index:1;
}
结果:http: //jsfiddle.net/MrLWY/
我只在 Firefox 3.6.3 中对此进行了测试,但想法很明确 :-)
这里是两个:
#bubble {
width:200px;
height:100px;
border:1px solid #000;
position:relative;
-webkit-border-radius:20px 20px 20px 0;
-moz-border-radius:20px 20px 20px 0;
border-radius:20px 20px 20px 0;
}
#bubble p {
margin: 1em;
font-family:Comic Sans MS;
}
#bubble:before {
content:'';
width:20px;
height:20px;
background:#fff;
border-left:1px solid #000;
position:absolute;
top:100px;
left:-1px;
}
#bubble:after {
content:'';
-webkit-border-radius:20px 0 0 0;
-moz-border-radius:20px 0 0 0;
border-radius:20px 0 0 0;
border:solid #000;
border-width:1px 0 0 1px;
width:20px;
height:19px;
position:absolute;
top:100px;
left:0;
}
结果:http: //jsfiddle.net/ajeN7/
也许这可以通过多种方式增强:
我还不能发表评论,但这是一个新的答案(关于 Gryzzlys 的答案):
Gryzzlys 的第一个示例没有处理不同的背景颜色(用于背景和气泡)。
但第二个可以。这是应用背景颜色的示例:
(我还添加了border-radius 属性,以便它为除Firefox 之外的其他浏览器呈现边框)。
这样就达到了FF中的效果。border-radius
为其他浏览器使用适当的变体。本质上,您使用的是 3div
系统,其中一个具有相同的背景颜色。仅适用于具有纯色的背景。
<div class="top">some text here</div>
<div class="bottom"><div class="bottom2"></div></div>
和CSS:
body
{
background-color:red;
}
.top
{
display: block;
width: 200px;
height: 50px;
background-color:white;
padding:5px;
-moz-border-radius-topleft:10px;
-moz-border-radius-topright:10px;
-moz-border-radius-bottomright:10px;
}
.bottom
{
display: block;
width: 20px;
height: 20px;
background-color: white;
}
.bottom2
{
display: block;
width: 20px;
height: 20px;
background-color: red;
-moz-border-radius-topleft:20px;
}
您可以通过仅使用 CSS 来解决此问题。我已经决定对标签使用一种技术——但可以很容易地适应气泡。
我在这里介绍了一个基本示例,说明如何在 CSS (here) 中制作反向边框半径。这使用了边框大小的技巧来使用内部,您可能需要进行一些定位才能使其正常工作,但是您可以看到它是可能的。
如果您想获得这种外观(语音气球),最好只使用图像:)