2012-09-03 92 views

回答

12

您還可以使用邊框和:after僞選擇:http://jsfiddle.net/qQySU/

#pointed { 
    position: relative; 
    margin: 0 auto; 
    width: 200px; 
    height: 200px; 
    background-color: white; 
} 

#pointed:after, 
#pointed::after { 
    position: absolute; 
    top: 100%; 
    left: 50%; 
    margin-left: -50%; 
    content: ''; 
    width: 0; 
    height: 0; 
    border-top: solid 150px red; 
    border-left: solid 100px transparent; 
    border-right: solid 100px transparent; 
} 

我着色,易於識別的邊界的一角。在最後3行的邊框寬度上播放,以獲得所需的提示。

編輯:

參考爲保持兼容:http://caniuse.com/css-gencontent

編輯2:

以交換語義,你可以得到更跨瀏覽器,你可以將STLE上的內元素而不是:after僞選擇器。

+0

這會阻止您繼續使用三角形文本。 – Chris

+1

如果將其置於內容之外並在其上使用其他容器來保留文本,則不適用。 – rcdmk

+1

這正是我正在尋找的,謝謝! – codek

5

最簡單的(的代碼量最少)方法:只使用一個CSS linear-gradienthttp://dabblet.com/gist/3610406

HTML:

<div class='box'>Text goes here...</div> 

CSS:

.box { 
    width: 26em; 
    min-height: 31em; 
    padding: 1em; 
    outline: solid 1px lightblue; 
    margin: 0 auto; 
    background: linear-gradient(45deg, dimgrey 47%, black 50%, transparent 50%) 
        no-repeat 0 100%, 
       linear-gradient(-45deg, dimgrey 47%, black 50%, transparent 50%) 
        no-repeat 100% 100%;; 
    background-size: 50% 14em; 
} 

更好的兼容性&更好看:你可以使用一個pseudo-elementbox-shadowhttp://dabblet.com/gist/3610548

HTML:

<div class='box'>text goes here... hover me ;)</div> 

CSS:

html { background: darkgrey; } 
.box { 
    box-sizing: border-box; 
    position: relative; 
    width: 20em; 
    height: 20em; 
    padding: 1em; 
    margin: 3em auto 0; 
    background: white; 
} 
.box:before { 
    position: absolute; 
    right: 14.65%; /* 50% - 35.35% */ bottom: -35.35%; /* half of 70.71% */ 
    width: 70.71%; /* 100%*sqrt(2)/2 */ 
    height: 70.71%; 
    box-shadow: 2px 2px 1px dimgrey; 
    transform: rotate(45deg); 
    background: white; 
    content: ''; 
} 
.box:hover, .box:hover:before { 
    background: plum; 
} 
+2

**謝謝**向我介紹[dabblet.com](http://dabblet.com)。我不知道爲什麼有人會使用[jsFiddle](http://jsfiddle.net)進行僅用於CSS的演示,因爲它有更好的替代方法:) – Chris