Создание раскрывающегося списка с использованием эффекта Scriptaculous и prototype BlindDown или SlideDown

Я пытаюсь создать раскрывающийся список javascript, используя scriptaculous и prototype. Я знаю, что это можно сделать с помощью псевдоселекторов CSS: hover, но я хотел бы добавить к этому немного дополнительного чутья. Проблема в том, что, хотя я могу заставить работать эффект выпадающего / раскрывающегося списка, он кажется очень нестабильным. Есть простой способ сделать это, или я должен придерживаться зависаний? Вот CSS, который я использую.

<style type = "text/css">
ul {list-style-type: none}

#navbar>li {
 position: relative;
 float: left;
 padding-right: 20px;
 height: 2em;
 background-color: #002;
}

ul.dropdown {
 display: block;
 position: absolute;
 top: 2em;
 left: 0px;
 background-color: #00c;
}
</style>

И вот html (я добавил style = "display: none" для документа, в котором говорилось, что нужно поместить его туда, а не в таблицу стилей, если вы хотите, чтобы цель изначально была скрыта).

<ul id = "navbar">
  <li
    onmouseover = "Effect.BlindDown('dropdownone', { duration: 0.8 })"
    onmouseover = "Effect.BlindUp('dropdownone', { duration: 0.8 })"><a href = "">Menu Link 1</a>
    <ul id = "dropdownone" class = "dropdown" style = "display: none">
      <li>Drop Down Link 1</li>
      <li>Drop Down Link 2</li>
      <li>Drop Down Link 3</li>
    </ul>
  </li>
  <li><a href = "">Menu Link 2</a>
    <ul id = "dropdowntwo" class = "dropdown">
      <li>Drop Down Link 1</li>
      <li>Drop Down Link 2</li>
      <li>Drop Down Link 3</li>
      <li>Drop Down Link 4</li>
      <li>Drop Down Link 5</li>
    </ul>
  </li>
  <li><a href = "">Menu Link 3</a>
    <ul id = "dropdownthree" class = "dropdown">
      <li>Drop Down Link 1</li>
      <li>Drop Down Link 2</li>
    </ul>
  </li>
</ul>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
10 295
4

Ответы 4

Этот эффект вроде работает нормально с событиями onclick

Но с onmouseover, Я читаю вам нужно использовать эффект очередь, чтобы ваши блайнды вверх и вниз не наступали друг на друга, как в этом сценарии.

A queue is a list of events (in the current context Effects). These events take occur one after the other (or parallel) for the purpose of preventing disturbence of current actions.

Очереди, похоже, не помогают. Попробовав разные вещи в течение часа, я собираюсь отказаться и просто придерживаться простых меню при наведении курсора. Это забавно, потому что я предположил, что это был своего рода базовый эффект улучшения пользовательского интерфейса, который эти библиотеки должны были облегчить.

Жаль это слышать. Вы проверяли тот же тип меню с помощью события onclick? Тогда это сработает? (хотя это не то, что вам нужно)

VonC 17.11.2008 15:18

BlindDown можно носить так:

onmouseover = "if ($ ('dropdownone'). style.display == 'none') {Effect.BlindDown ('dropdownone', {duration: 0.8})}»

Я работаю над BlindUp для события onmouseout, но не могу заставить его работать. :(

Использование: Effect.toggle ('id_of_element', 'слепой', {продолжительность: 2.0});

headfirstproductions.ca/prototype-and-scriptaculous-drop-down-menu

Другие вопросы по теме