以代碼在這裏:做一個<input>看起來像普通的文本段落中的
<p>Lorem ipsum <input type="text" value="algo" /> dolor sit ...</p>
樣品:http://codepen.io/dbugger/pen/KrAmPx
我怎樣才能使輸入看起來完全正常的文字,段落裏面?我將它設置爲display: inline
,但寬度似乎仍然固定。
以代碼在這裏:做一個<input>看起來像普通的文本段落中的
<p>Lorem ipsum <input type="text" value="algo" /> dolor sit ...</p>
樣品:http://codepen.io/dbugger/pen/KrAmPx
我怎樣才能使輸入看起來完全正常的文字,段落裏面?我將它設置爲display: inline
,但寬度似乎仍然固定。
元素從瀏覽器繼承某些默認值。你需要「重置」所有的人都在爲了使輸入元素表現爲周圍的文字:
p input {
border: none;
display: inline;
font-family: inherit;
font-size: inherit;
padding: none;
width: auto;
}
這是接近你可以用CSS獨自一人的。如果你想要一個可變寬度,你將不得不求助於JS而不是CSS,因爲調整一個元素到它的值超出了CSS的範圍。基於用戶輸入或由於即時效應所做的更改,在事實之後修改元素是JS/jQuery的用途。
請注意,根據您使用的瀏覽器(以及由於未來瀏覽器可能做的事情與現今的做法截然不同),此列表不一定是詳盡無遺的。
的唯一方法可以在「假」以清潔的方式而不JS這種效果是使用一個元件與contenteditable
屬性,該屬性(不同於輸入元件)將用戶輸入存儲在所述元素的含量而不是它的價值。有關此技術的示例,請參閱this answer
儘管您不需要JS來獲取該效果,但您需要它來檢索該元素的內容。過去我可以想象的唯一用途是如果您提供的是可打印文檔,無需編程處理輸入或存儲它。
這沒有奏效。你試過了嗎? –
是的,儘管我馬上編輯了它並做了進一步的解釋,但由於原始答案不一定符合您的要求。這個回答關於*外觀*(這是CSS可以處理的部分),而不是*功能* – TheThirdMan
好吧,但我問**使它看起來像普通文本一樣。這本身就是**外觀** –
是的,可以通過模仿CSS的樣式和使用javascript自動調整文本的長度來做到這一點。
您可以最好地模仿@TheThirdMan建議的樣式。
將輸入調整爲其內容大小。
$(function(){
$('#hide').text($('#txt').val()).hide();
$('#txt').width($('span').width());
}).on('input', function() {
$('#hide').text($('#txt').val());
$('#txt').width($('span').width());
});
#txt,
#hide{
font:inherit;
margin:0;
padding:0;
}
#txt{
border:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Lorem ipsum
<span id="hide"></span><input id="txt" type="text" value="type here ...">
egestas arcu.
</p>
downvoter可能與我有這個答案相同的問題:它比需要更嘮叨,只是表面上試圖解決外觀問題(你甚至將Arial設置爲字體,完全不知道文本的其餘部分使用什麼字體 - 請參閱我如何解決這一問題的答案),而只關注將輸入擴展到所需寬度的功能。然而,你做了一個很好的解決方案來做到這一點,並且如果你把它發佈在評論中的鏈接中(這些嘗試大致相同,但在我看來不是那麼好),我會讚揚那些。 – TheThirdMan
@ TheThirdMan我感謝您花時間發表評論。你的觀點已經注意到了,謝謝。字體必須設置爲強制輸入和正文相同。 – Obsidian
根本不是 - 通過使用'font-family:inherit;',元素將繼承下一個最低值,這將是'p'元素使用的字體系列。考慮到你的'p'和'body'字體系列可能不同,這就是你想要的行爲。 – TheThirdMan
我不相信這是可能的,一個至少不能沒有訴諸JavaScript進行上漿。什麼是用例?你想達到什麼目的?可能還有其他選擇,例如使用contenteditable =「true」而不是輸入的span元素。 – HaukurHaf
有更多的方法來做我想要的。我只是想知道這是否可行。 –
這使用Javascript,可能不會完全回答你的問題,但 - 你有看看嗎? https://stackoverflow.com/questions/3392493/adjust-width-of-input-field-to-its-input#3392617 – TuringTux