將:after
元素設置爲絕對時存在問題。我無法弄清楚爲什麼。但如果你把它放在相對的位置,問題就沒有了。
我已經更新了你的提琴:http://jsfiddle.net/NicoO/Lt3Wb/1/
這裏是新的CSS(有一些實驗性增加)
$pad:10px;
div{
padding:$pad;
border:1px solid #CCC;
height:120px;
position:relative;
&:before
{
position:relative;
color:#999;
content:"Write a comment...";
}
}
div:focus
{
border-color: red;
}
div:not(:empty):before{
display: none;
}
剩下唯一的問題是,您可以專注的文字背後:before
元素。這就是你爲什麼要絕對的原因。交互也:如果您將僞元素設置爲float: left;
,它將顯示與position:absolute;
上相同的行爲。
更新
當你不得不使用上peseudo元素絕對的,似乎是目前唯一的一個解決方案。只要它是空的和專注的,爲盒子定義另一個填充。遊樂場:http://jsfiddle.net/NicoO/Lt3Wb/5/
$pad:10px;
#test
{
padding: $pad;
border:1px solid #CCC;
height:120px;
position:relative;
overflow: hidden;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
&:empty:focus
{
padding: #{($pad*2)+6} $pad;
}
&:before
{
position:absolute;
color:#999;
top: $pad;
left: $pad;
content: "Leave a comment"
}
}
似乎是一個老問題:http://stackoverflow.com/questions/1987435/contenteditable-cursor-position-style- in-firefox –
我仍然注意到它。 – Dex
@Dex--那是因爲他們沒有修復它......如果你關心這個,你應該「明星」。有一個鏈接到我的問題中報告的錯誤(底部) – vsync