2017-02-01 3 views
0

У меня есть строка текста со списком под ней. Я хотел бы щелкнуть по тексту, и список опустится - в частности, один элемент за другим в быстрой последовательности, чтобы дать приятный плавный эффект. Надеюсь, это ясно. Каков наилучший способ достичь этого? Код ниже. Благодарю.Выпадающий список (элемент после элемента) по клику

Примечание: на данный момент знаний javascript/jquery практически нет. Извиняюсь.

HTML:

<p class="facilities" style="color:#009ee3" id="perth-features">Key features</p>   
    <ul class="facilities" id="perth-list"> 
    <li>15,000m² heavy duty concrete hardstand open storage</li> 
    <li>1,900m² heavy duty concrete undercover canopy area</li> 
    <li>5,550m² high truss warehouse space</li> 
    <li>1,600m² maintenance facility</li> 
    <li>45,000 Litre self bunded diesel fuelling station</li> 
    <li>700m² Spare parts area for fleet &amp; rental spares</li> 
    <li>460m² segregated undercover</li> 
    <li>90m² truck wash bay facility with oil separation system</li> 
    <li>Onsite lifting to 16tonne</li> 
    </ul> 
</p> 

CSS

#perth-list { 
    display: none; 
} 
+0

Попробуйте [это] (http://stackoverflow.com/questions/22055914/jquery-smoothscroll-and-select-option) ответ – LowMatic

+0

@LowMatic Это Безразлично» Кажется, это то, что я ищу. Извините, если это не ясно. Я хочу, чтобы при нажатии «ключевых функций» появился неупорядоченный список. Я просто хочу, чтобы это отображалось каждым элементом списка, сползающим вниз (или слева от него) отдельно. –

ответ

1

Использование JQuery вы можете сделать что-то вдоль этих линий:

var speed = 100 
 

 
$("#perth-features").click(function() { 
 
    var canAnimate = true; 
 
    $("ul#perth-list li").each(function(index) { 
 
    if ($(this).is(":animated")) 
 
     return canAnimate = false; 
 
    }); 
 

 
    if (canAnimate) 
 
    $("ul#perth-list li").each(function(index) { 
 
     if (!$(this).is(":visible")) 
 
     $(this).delay(speed * index).slideDown(speed); 
 
     else 
 
     $(this).delay(speed * ($("ul#perth-list li").length - index)).slideUp(speed); 
 
    }); 
 
});
ul#perth-list li { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p class="facilities" style="color:#009ee3" id="perth-features">Key features</p> 
 
<ul class="facilities" id="perth-list"> 
 
    <li>15,000m² heavy duty concrete hardstand open storage</li> 
 
    <li>1,900m² heavy duty concrete undercover canopy area</li> 
 
    <li>5,550m² high truss warehouse space</li> 
 
    <li>1,600m² maintenance facility</li> 
 
    <li>45,000 Litre self bunded diesel fuelling station</li> 
 
    <li>700m² Spare parts area for fleet &amp; rental spares</li> 
 
    <li>460m² segregated undercover</li> 
 
    <li>90m² truck wash bay facility with oil separation system</li> 
 
    <li>Onsite lifting to 16tonne</li> 
 
</ul>

$("#perth-features").click(func.... когда элемент с идентификатором Перта функций щелкают ...

$("ul#perth-list li").each(function(index) для каждого из элементов в списке - с использованием индекса в качестве ... В параметре

$(this).delay(400 * index).fadeIn(300); Проявления каждого элемента в список с постепенным замедлением замирания.

+0

Отлично! Простой и отлично работает. Благодаря! Две небольшие изменения - могу ли я заставить их скользить вниз, а не исчезать? Я также должен иметь возможность закрыть его снова. РЕДАКТИРОВАТЬ: Сдвиньте слайд вниз (измените fadeIn на slideDown), но это всего лишь эффект раскрытия. Я хочу, чтобы элементы списка сами физически скользнули вниз от названия. –

+0

@ColinStewart Я обновил свой пост - надеюсь, это поможет ... Пожалуйста, подробно остановитесь на том, что вы имеете в виду с помощью slideDown ... Отправляйтесь на пару в течение нескольких часов, так что до сих пор оставайтесь довольны. – Zze

+0

Работает отлично! Не беспокойтесь о скольжении вниз. Большое спасибо! –

0

Если вы предпочитаете придерживаться только HTML:

Для выпадающего списка в HTML можно использовать тег <select>. Обычно это используется, когда пользователю предлагается выбрать опцию из списка. Но, я думаю, вы все равно можете использовать этот метод только для показа в вашем случае.

http://www.w3schools.com/tags/tag_select.asp

Ваша первая строка текста будет идти в первый вариант тега.

Вместо <li> метки используют <option>

<select> 
    <li>15,000m² heavy duty concrete hardstand open storage</li> 
    <li>1,900m² heavy duty concrete undercover canopy area</li> 
    <li>5,550m² high truss warehouse space</li> 
    <li>1,600m² maintenance facility</li> 
    <li>45,000 Litre self bunded diesel fuelling station</li> 
    <li>700m² Spare parts area for fleet &amp; rental spares</li> 
    <li>460m² segregated undercover</li> 
    <li>90m² truck wash bay facility with oil separation system</li> 
    <li>Onsite lifting to 16tonne</li> 
</select> 
Смежные вопросы