2015-09-14 2 views
0

Предположим, у меня есть html table, где ячейки содержат span s. Некоторые действия заставляют divs span s изменить свое положение, например, я реконструирую таблицу транспонированных.Анимированное ретрансляция веб-страницы

Рассмотрим

<table> 
<tr> 
    <td id='cell1'>1</td> 
    <td id='cell2'>2</td> 
</tr> 
<tr> 
    <td id='cell3'>3 
     <div id='el'>foo</div> 
    </td> 
    <td id='cell4'>4</td> 
</tr> 

и

setTimeout(function() { 
     document.getElementById('cell2').appendChild(document.getElementById('el')) 
    }, 2000); 

Как я могу оживить позиционную изменить span S'?

Мое первое решение проблемы заключается в том, чтобы создать новую таблицу, скрытую сверху старого, сохранить абсолютные позиции каждого span, старых и новых, разместить абсолютно позиционные копии span s поверх старых , оживить их до новых позиций, удалить старую таблицу, открыть новую таблицу и, наконец, удалить абсолютно позицию span копий.

Есть ли лучший способ?

+0

Этот вопрос уходит в мою репутацию. Я бы не догадался. Кто-нибудь знает, почему? – Martin

+1

Если бы мне пришлось угадать, я бы сказал, вставьте код из скрипки и создайте здесь сценарий. Удачи. –

+0

Является ли этот вопрос «слишком широким», т. Е. Согласно определению a) слишком много возможных ответов или b) ответы будут очень длинными. Что касается b, строго это ответ «да» или «нет», но, конечно, я жду более длинного ответа. Но я дал один ответ, и это не очень долго. Но, возможно, все остальное намного дольше, и если так, я бы очень хотел узнать. Поскольку у меня есть одно решение, в этом случае я бы пошел с ним. Что касается a, вполне возможно. Я был бы очень рад получить только несколько или только один из тех многочисленных возможных ответов. – Martin

ответ

2

Если я правильно понял ваш вопрос, как насчет использования свойства CSS transition?

Я не думаю, что вам нужно создать копию всей таблицы и выполнить любые вычисления.

Для примера предположим, что вы хотите переместить обновленный пролет вверх. Вы можете определить класс CSS, который содержит необходимое дополнение, например, в my example, и просто добавить этот класс CSS в область, которую вы обновляете.

Одна линия CSS, как это, позволяет анимировать движение пролетов:

transition: all 0.5s ease; 

EDIT

я смог оживить вашу скрипку с помощью this article by Tim Taubert

You can find the updated fiddle here

+0

Да, я планировал использовать свойство перехода, хотя я не думаю, что он будет работать сам по себе, если я не понял. Я сделал скрипку: https://jsfiddle.net/Lpx8abdh/ – Martin

+0

oh классный пример помогает!дайте мне посмотреть, смогу ли я что-то выяснить –

+0

очень благодарен !!! – Martin

Смежные вопросы