2015-01-19 3 views
0

У меня есть список городов, отображающих встроенные.JQuery slideToggle, вызывающий пробел с встроенными блоками div

<div class="accordion-container"> 
    <a href="#" class="accordion-toggle">Rome</a> 
    <div class="accordion-content"> 
     <p>..</p> 
    </div> 
</div> 

При выборе заголовка города, используя функцию slideToggle, я показываю некоторую информацию об этом городе.

accordionContent.slideToggle(250); 

Но он также скользит вниз по городу рядом с ним, вызывая большую зону белого пространства. Есть ли способ только сдвинуть divs ниже выбранного div?

Вот jsfiddle

+0

Почему у вас нет отдельных столбцов? –

ответ

2

вы можете установить выравнивание по вертикали для top в вашем CSS, чтобы держать другой заголовок, где:

.accordion-container { 
    width: 49%; 
    margin: 0 0 20px; 
    clear: both; 
    display: inline-block; 
    vertical-align:top; 
} 

EXAMPLE 1

ИЛИ

Вы можете установить контент position: absolute, так что порывает это контейнер:

.accordion-content { 
    background: #FFF; 
    display: none; 
    padding: 20px; 
    overflow: auto; 
    position: absolute; 
    z-index: 2; 
} 

EXAMPLE 2

+0

Мне нравится эта вертикально-выровнять: сверху; удерживает заголовки в верхней части соответствующих «рядов». Но это все еще вызывает проблему с пробелами в контенте. это единственный способ получить то, что я ищу, чтобы использовать таблицу? –

+0

Нет, единственный способ не создавать пробелы - использовать пример 2, все остальное (в потоке документа) собирается подтолкнуть эти заголовки вниз. @AarronH – jmore009

+0

как бы вы изменили поток документа для достижения эффекта, который я ищу? @ jmore009 –

0

Не слишком уверен, как года хотят, чтобы она выглядела. Но простое исправление добавляет vertical-align: top;

.accordion-container { 
    width: 49%; 
    margin: 0 0 20px; 
    clear: both; 
    display: inline-block; 
    vertical-align: top; 
} 
2

Я думаю, что вы собираетесь иметь две отдельные колонки для этого, то:

.accordion-container { 
    margin: 0 0 20px; 
    display: block; 
} 
.column { 
    display: inline-block; 
    width: 49%; 
    vertical-align: top; 
} 

http://jsfiddle.net/cone06kr/10/

Вам нужно перенести содержимое, чтобы вернуть его в исходном порядке.

Если вы создаете этот контент, вам понадобятся две петли, одна для другой - для выравнивания.

+0

Мне очень нравится этот путь, потому что он отлично смотрится для сайта статического размера. но если мне нужно, чтобы он был отзывчивым, как в количестве столбцов, которые можно изменить на основе размера экрана, могу ли я это достичь? –

+0

Хммм, это сложно. Возможно, вы сможете использовать скрипт для определения количества столбцов, полученных в результате ваших медиа-запросов, а затем переустановить карты между ними, так сказать. Эта библиотека http://wicky.nillia.ms/enquire.js/ выглядит так, как будто она может быть удобной для реагирования на изменения. – stovroz

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