2013-02-18 88 views

回答

5

你能以某種方式效仿:

http://jsfiddle.net/6Vhcw/

<span class="holo"><input type="text" /></span> 
span.holo > input[type='text'] { 
    border:none; 
    outline:none; 
    padding:0px; 
} 
span.holo { 
    border-bottom:solid 1px blue; 
    position:relative; 
    overflow:hidden; 
    padding:1px 0px; 
} 
span.holo:after, 
span.holo::after { 
    content:' '; 
    overflow:hidden; 
    width:10px; 
    height:10px; 
    display:inline-block; 
    position:absolute; 
    left:99%; 
    bottom:-1px; 
    -moz-box-sizing:border-box; 
    box-sizing:border-box; 
    border:solid 5px transparent; 
    border-bottom-color:blue; 
    border-right-color:blue; 
} 

只有Chrome桌面和Palemoon(火狐桌面叉),雖然上測試。

奇怪的left:99%是因爲如果使用left:100%(在Chrome桌面上),將會有一個像素邊距。如果你不介意使用calc(),您可以添加

left:99%; 
left:-webkit-calc(100% - 1px); 
left:-moz-calc(100% - 1px); 
left:calc(100% - 1px); 

http://jsfiddle.net/6Vhcw/1/

編輯

剛剛意識到,我可以使用padding爲 「包括」 三角進span

http://jsfiddle.net/6Vhcw/2/

span.holo { 
    padding-right:10px; 
} 
span.holo:after, 
span.holo::after { 
    right:0px; 
} 

編輯#2:

微調 「修復」 怪異bottom:-1px

http://jsfiddle.net/6Vhcw/3/

span.holo { 
    -moz-box-sizing:border-box; 
    box-sizing:border-box; 
} 
span.holo:after, 
span.holo::after { 
    bottom:0px; 
} 
+0

真棒!謝謝!另外爲了解釋,我試圖在輸入元素中做到這一點,而不是跨度,這樣做的具體原因是什麼? – Tsundoku 2013-02-19 06:45:21

+0

@LuisArmando最主要的原因是我似乎無法在'':)之後獲得'::) – Passerby 2013-02-19 07:02:54