Выпадающие опции не перемещаются с полем выбора - PullRequest
0 голосов
/ 01 ноября 2019

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

Создание собственного раскрывающегося спискаэто не вариант. А также сделать вышеупомянутый div абсолютным или фиксированнымДелать выпадающее размытие тоже не вариант. Может кто-нибудь сказать мне, если это поведение по умолчанию может быть каким-то образом изменено?

  1. Клиент не согласен для пользовательского решения.
  2. Клиент не хочет, чтобы вышеупомянутый div плавал или позиционировалабсолютное или фиксированное. Он хочет такую ​​же настройку, но эта вещь исправлена.
  3. Закрытие поля выбора или использование blur () также не то, чего хочет клиент.

    <!DOCTYPE html>
    <html>
    <script
    src="https://code.jquery.com/jquery-2.2.4.min.js"
    integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
    crossorigin="anonymous"></script>
    <body>
    <div class='war'>SOME RANDOM CODE which gets hidden after 5 seconds. Make sure to open the drop down</div>
    <select>
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="opel">Opel</option>
    <option value="audi">Audi</option>
    </select>
    <script>
    setTimeout(function(){ $(".war").hide(); }, 3000);
    </script>
    </body>
    </html>
    

1 Ответ

0 голосов
/ 01 ноября 2019

Как насчет этого обходного пути:

- Когда выбирается меню выбора, он получает атрибут размера, равный всем содержащим его элементам опций, так что он перемещается вместе с элементом в окне, так как онисчезает.
- Если вы добавите немного стиля CSS, пользователю не станет очевидным, что размер элемента выделения изменился, пока он / она находится в процессе выбора опции.
- К сожалению, стандартная стрелкастиль отличается в зависимости от браузера. Мое решение выглядит лучше в chrome, но не оптимально в Firefox, например, поэтому следует добавить дополнительную оптимизацию для конкретного браузера.
Вот соответствующий код:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>example</title>
<style>
  #box {
    width: 100px;
    height: 100px;
    border: 1px solid black;
  }
  
  #options {
    overflow: hidden;
  }
  
  #first::after {
  content: "  ⯆ ";
  font-size: 10px;
  }

  </style>
  </head>
<body>
<div id="box"></div>
  <select name="selectionarea" id="options" onclick="makeBoxDisappear();expandSelect()" onfocusout="minimizeSelect()">
    <option value="option1" id="first">option1</option>
    <option value="option2">option2</option>
    <option value="option3">option3</option>
    <option value="option4">option4</option>
    <option value="option5">option5</option>    
  </select>
  <script>
  
  function makeBoxDisappear() {
    setTimeout(() => document.getElementById("box").style.display = "none", 1000);
  }

  
  function expandSelect() {
    document.getElementById("options").size="5";
  }


  function minimizeSelect() {
    document.getElementById("options").size="1";
  }

  </script>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...