如果文本比當前輸入寬度寬,我想顯示輸入類型文本的內容。懸停時暫時設置輸入類型文字的動畫
當我將鼠標懸停在該字段上時,我希望文字滾動到左側或類似的位置,以便查看隱藏文字。
謝謝。
請注意:請告訴我是否必須添加/更改問題的標籤。
如果文本比當前輸入寬度寬,我想顯示輸入類型文本的內容。懸停時暫時設置輸入類型文字的動畫
當我將鼠標懸停在該字段上時,我希望文字滾動到左側或類似的位置,以便查看隱藏文字。
謝謝。
請注意:請告訴我是否必須添加/更改問題的標籤。
我想過我會如何做到這一點,這就是我想出的。
在輸入懸停我要採取輸入值,並把它放在一個div(或任何其他元素)。然後獲取該div的寬度並將其與輸入的寬度進行比較。如果div比輸入寬,那麼我將根據寬度的差異爲輸入文本縮進設置動畫效果。
$('input').hover(function(){
var temp = $('div').html($(this).val()).width();
if($(this).width() < temp){
$(this).animate({
textIndent: $(this).width()-temp
}, 100);
}
});
你可以看到完整的解決方案在這裏:http://jsfiddle.net/taneleero/tB5C5/2/
應該足以讓你去。
我會稍微測試一下,謝謝。 –
因爲瀏覽器處理輸入的方式非常不同,所以其他解決方案在Firefox中不起作用。 我已經更新了我的小提琴,包括鼠標離開時的重置以及檢查輸入何時獲得焦點,以便停止動畫並重置。 http://jsfiddle.net/taneleero/tB5C5/1/ –
它在你提供的鏈接中工作,但我使用其他的div元素,所以你可以改變它,所以它只會針對一個元素?如果這項工作,我會接受你的答覆作爲答案。謝謝。 –
呃,儘管我確實發表了這個評論。自己無法抵擋這一個。使用jQuery:
<input type="text" id="txt" value="A very long text goes here very long text goes here very long text goes here very long text goes here very long text goes here indeed."></input>
$('#txt').hover(
function() {
$(this).animate({"scrollLeft": this.scrollWidth}, this.value.length*50)
},
function() {
$(this).stop();
this.scrollLeft = 0;
}
)
這裏的jQuery .animate()
用於動態輸入字段內的文本.scrollLeft
位置。動畫持續時間與文本長度有關,所以對於各種文本,速度應該是相同的。當鼠標離開輸入控制 - 滾動位置重置爲原始。
如果你用Google搜索了一下的「輸入文本向左滾動」,你會發現像this答案,它使用jQuery文檔上hover組合和animate你會拼湊的解決方案自己。
它適用於谷歌瀏覽器,但出於某種原因不適用於Firefox。 –
Yup剛剛注意到,這隻適用於基於WebKit的瀏覽器(Chrome,Safari,Opera)。將不得不找出原因 –
問題很好,清楚地表明,但你有沒有嘗試過自己?很高興看到一些研究或代碼的努力。 –