Cá nhân, tôi nghĩ rằng đó là quá mức cần thiết, nhưng nó có thể được thực hiện như thế này:
HTML:
<div class='outer'>
<div class='content'><!--stuff here--></div>
<div class='label l1'></div>
<div class='label l2'></div>
</div>
CSS:
.outer {
position: relative;
width: 500px; /* whole thing breaks if this is not a multiple of 100px */
border: solid .5em rgba(0,0,255,.5);
border-bottom: solid 0px transparent;
margin: 7em auto 0;
background: rgba(0,0,0,.5);
background-clip: padding-box;
}
.outer:before, .outer:after {
position: absolute;
top: 100%;
height: .5em;
background: rgba(0,0,255,.5);
content: ''
}
.outer:before { left: -.5em; width: 15%; border-left: solid .5em transparent; }
.outer:after { right: -.5em; width: 55%; border-right: solid .5em transparent; }
.content {
padding: .5em;
margin: 1.5em;
border-bottom: solid 1.5em transparent;
background: lightblue;
background-clip: padding-box;
}
.label {
overflow: hidden;
position: absolute;
top: 100%;
width: 15%;
height: 3em;
}
.l1 { left: 15%; }
.l2 { left: 30%; }
.label:before {
position: absolute;
top: -.5em;
width: 100%;
height: 2.5em;
border: solid .5em rgba(0,0,255,.5);
background: rgba(0,0,0,.5);
background-clip: padding-box;
content: '';
}
.l1:before { left: 9%; transform: skewX(30deg); }
.l2:before { right: 9%; transform: skewX(-30deg); }
Nó hoạt động trong Firefox, Chrome, Opera và Safari (Tôi sợ để kiểm tra nó trong IE9, mặc dù cả hai transform
và background-clip
làm việc) nhưng chỉ khi width
cho .outer
có một giá trị đó là một bội số của 100px
.
Trừ khi sử dụng width
đó là bội số của 100px
, nó chỉ hoạt động trong Firefox và Chrome (có một chút trục trặc trong Chrome - có thể được khắc phục bằng cách sử dụng Gradient chỉ từ trái sang phải sang phải) màu xanh bán trong suốt thực sự gần với sự bắt đầu).
Nó phá vỡ trong Opera và Safari (nếu sử dụng một width
đó không phải là một bội số của 100px
):
đẹp thách thức! Tôi sẽ xem những gì tôi có thể làm ... – Ana