有没有办法可以在 CSS 中制作这个形状图像?CSS3很好,不需要IE兼容。渐变部分不重要,就是右下角的那条曲线,我看不出来怎么做。我见过各种 jQuery 角插件,但到目前为止没有什么对我有用。我不能使用背景图片,因为其中的内容是可变长度的。
编辑:感谢您的回复,非常令人印象深刻!但有一件事 - 在图像本身中,有一个蓝色背景和一个无缝的灰色边框,包括右侧的曲线。如果解决方案涉及对额外元素的边界半径“hacks”,则可能无法保留此边界,但如果也可以保留此边界,那就更好了。
有没有办法可以在 CSS 中制作这个形状图像?CSS3很好,不需要IE兼容。渐变部分不重要,就是右下角的那条曲线,我看不出来怎么做。我见过各种 jQuery 角插件,但到目前为止没有什么对我有用。我不能使用背景图片,因为其中的内容是可变长度的。
编辑:感谢您的回复,非常令人印象深刻!但有一件事 - 在图像本身中,有一个蓝色背景和一个无缝的灰色边框,包括右侧的曲线。如果解决方案涉及对额外元素的边界半径“hacks”,则可能无法保留此边界,但如果也可以保留此边界,那就更好了。
我创造了一些东西。可能有更好的解决方案,但这可能会有所帮助。
CSS:
.bubble {
width: 200px;
height: 30px;
}
.bubble .content {
background: #00f;
height: 100%;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
margin-right: 20px;
}
.bubble .blue,
.bubble .white,
.bubble .white .innerwhite {
width: 10px;
height: 100%;
float: right;
}
.bubble .blue {
background: #00f;
border-top-right-radius: 10px;
}
.bubble .white {
background: #00f;
}
.bubble .white .innerwhite {
background: #fff;
border-bottom-left-radius: 10px;
}
HTML:
<div class="bubble">
<div class="white">
<div class="innerwhite"></div>
</div>
<div class="blue"></div>
<div class="content"></div>
</div>
这是形状的CSS。你需要多种形状来完成你想要的。
body{background:white;}
.Shape{margin:20px 30px;}
.Shape1{
position:relative;
width:200px;
height:65px;
background:blue;
border-radius:20px;
border:2px solid white;
z-index:2;
top:0px;
left:0px;}
.Shape2{
position:relative;
width:70px;
height:40px;
background:blue;
border-radius:12px;
border-bottom:2px solid white;
z-index:3;
top:-42px;
left:170px;}
.Shape3{
position:relative;
width:20px;
height:20px;
background:blue;
z-index:4;
top:-64px;
left:170px;}
.Shape4{
position:relative;
width:40px;
height:46px;
background:white;
top:-110px;
left:202px;
z-index:3;
box-shadow:inset 2px 0px 4px lightgray;
border-bottom-left-radius:40px;}
.Shape5{
position:relative;
height:1px;
width:218px;
background:transparent;
box-shadow:0px 0px 8px black;
left:18px;
top:-110px;}
.Shape6{
position:relative;
height:50px;
width:20px;
background:white;
top:-160px;
left:236px;
z-index:4;}
.Shape7{
position:relative;
height:10px;
width:50px;
background:white;
top:-210px;
left:203px;
z-index:4;}
和 HTML:
<div class="Shape">
<div class="Shape1"></div>
<div class="Shape2"></div>
<div class="Shape3"></div>
<div class="Shape4"></div>
<div class="Shape5"></div>
<div class="Shape6"></div>
<div class="Shape7"></div>
</div>
这是用于输出的 JsBin 。
圆形边框无法使用标准 CSS 在单个 DOM 对象上完成,但您可以使用 CSS 通过添加额外元素来完成。
这样做的诀窍是使用 CSS:before
和:after
选择器在主元素的任一侧有效地创建一个额外的元素,然后使用适当border-radius
的background
形状来适应它。
这并不容易,但将它用于标签已成为一种很常见的技巧。例如,请参阅此处以获取良好的教程。
希望有帮助。