ユーザーがテキストを入力できる編集可能なdivがあります。これはチャットウィジェットの一部なので、デザインはボックスを底に固定する必要があります。編集可能なdivの高さの変更を使用して、他のDOM要素にクラスを追加したり削除したりできます。
ユーザーが入力するとき必要に応じて要素にサイズ変更とクラスをキャッチするためにjavascriptが必要です。
ボックスのサイズを上げることができましたが、もう一度それを元に戻すのに苦労しました。
私は数日間このことに取り残されています。だから、どんな助けになっても大歓迎です。
は私が機能し、ここでは基本的なUIのバージョンを持っているJSFiddle
そのおそらく本当にシンプルですが、私は
var chatBoxSize = {
oldHeight : 0,
scrollHeight : 0,
lastClass : 1,
minClass : 1,
maxClass : 5,
min_height : 0,
last_size : 0,
getClass : function (size){
var sizes = [chatBoxSize.min_height, chatBoxSize.min_height * 2, chatBoxSize.min_height * 3, chatBoxSize.min_height * 4, chatBoxSize.min_height * 5];
switch (size){ case sizes[0] : return 1; break; case sizes[1] : return 2; break; case sizes[2] : return 3; break; case sizes[3] : return 4; break; case sizes[4] : return 5; break; };
//is not exact
var r = null;
console.log(size);
for(var x = 0; x < sizes.length; x++){
if(x < sizes.length){
if(size >= sizes[x] && size < sizes[(x + 1)]){
return (x + 1);
}
}
}
return chatBoxSize.maxClass;
}
};
$(function() {
chatBoxSize.min_height = parseInt($('#msgWriteArea').height());
chatBoxSize.max_height = chatBoxSize.min_height * 4;
chatBoxSize.last_size = chatBoxSize.min_height;
});
function updateChatSize() {
var id = '#msgWriteArea';
var element = document.querySelector(id);
var size = $(id)[0].scrollHeight;
var container = $('.container');
var toRemove = 'size_' + chatBoxSize.lastClass;
console.log(chatBoxSize.getClass(size));
chatBoxSize.lastClass = chatBoxSize.getClass(size);
console.log('Add new class', chatBoxSize.lastClass);
chatBoxSize.last_size = size;
$(id).removeClass(toRemove);
$(id).addClass('size_' + chatBoxSize.lastClass);
container.removeClass(toRemove);
container.addClass('size_' + chatBoxSize.lastClass);
$('#display').val('Removed ' + toRemove + ' Added ' + chatBoxSize.lastClass);
};
$(function(){
$('#msgWriteArea').bind('change keydown input', function() {
if(event.type == 'keydown'){
updateChatSize();
}
});
})
私はこれを考え出す運を持っていないのです高さをautoに設定することを考えましたが、それは残りのUI要素では機能しません。
(Offtopic)編集可能な高さによって色が変わるのはどんな種類のチャットですか...私は(完全なデザインを知っていれば)他のUI要素を調整するのは簡単かもしれません.... –
$( '#msgWriteArea')から始めて、コード全体を複雑にしています。bind( 'change keydown input'、function(){' - ' $( 'msgWriteArea') ( 'input'、updateChatSize); ' –
色を変えないで、クラスの変更を表示するために使用しています。バインドの代わりにonを使用するとクリーナーですが、サイズはまだ小さくなりません。 –