Pergunta

Eu defini css da div

height:130px;
overflow:hidden;

Eu quero uma animação de altura atual à altura origem como este , mas eu não posso obter o caminho posible origem height.one é depois de dom carregado, armazenar a altura em js, como este

$(function(){
    $('.detail').data('originHeight',$('.detail').height());
    $('.detail').css({height:'130px',overflow:'hidden'})
})

mas fazendo isso, o div mostrará primeiro de tudo, em seguida, definir a altura para 130px.

alguma sugestão?

Foi útil?

Solução

Eu fiz isso antes usando a propriedade scrollHeight do elemento.

document.getElementById('element').scrollHeight;

este lhe diz o quão alto o elemento seria se a altura foi definido para auto e overflow foi habilitado.

Outras dicas

O método que você tem é o caminho certo, mas você pode precisar de alguns hacks para evitar a cintilação visual que isso vai lhe dar.

Tente mover a div fora da tela, verificando a altura e, em seguida, movê-lo de volta. Além disso, enquanto nós estamos aqui, evite usar vários jQuery look-ups, se possível $('.detail') pois isso pode ser uma operação muito caro.

var $detail = $('.detail');
$detail
    .css({position : 'absolute', left: '-10000px'})
    .data('origHeight', $detail.height())
    .css({position : '', left : '', height : '130px', overflow : 'hidden'})
;

Como alternativa, se isso não está funcionando para você, não funcionam contra ele, trabalhar com ele. Pode pagar para estudar formas de adaptá-lo em seu projeto, por exemplo, a partir de seu tamanho completo e, em seguida, a animação volta para 130px. Isso permitirá que você verifique graciosamente seu tamanho normal, bem como permitir que o conhecimento do usuário que não há mais informações para ser visto lá.

Você não pode expandir as divs removendo o css atributos vez?

$('.detail').css({height:'', overflow:''})

Eu acho que isso é a única maneira. Porque se você modificou a altura usando CSS no jQuery, a altura tornou-se a altura modificada. E a altura modificado é aquele que você vai acessar.

O cenário só é possível que eu posso pensar é a loja a altura original usando jQuery ou talvez fornecer a sua altura fixa e dizer jQuery quanto tempo iria expandir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top