Я использую JS-библиотека Form.IO для разработки новой формы. Мне нужно создать DataGrid с 11 компонентами внутри, поэтому единственный способ вписать все в строку — использовать overflow: auto
правило CSS (на самом деле overflow-x: auto; overflow-y: hidden
).
Вот в чем проблема. Из-за этих двух правил CSS, когда я открываю компонент select
, открытые варианты списка становятся видимыми внутри компонента DataGrid, чего я не хочу, потому что он скрывает все варианты. Я поигрался с z-index
, но безуспешно ?.
Может ли кто-нибудь подсказать, как успешно отобразить раскрывающийся список за пределами DataGrid? Заранее спасибо!
Это старый и странный вопрос CSS, о котором мы время от времени читаем.
По сути, вам необходимо:
overflow-y: hidden
, так и для вашего списка select
. Эта оболочка должна быть позиционируетсяposition: absolute
в поле, содержащем список ваших раскрывающихся параметров (т.е. список, который должен обходить объявление overflow-y: hidden
)После всего этого, особенно если вы используете стороннюю библиотеку, которая поставляется с собственными файлами css, вам почти наверняка потребуется немного подправить правила css библиотеки по умолчанию.
Вот фрагмент (с использованием библиотеки и компонентов Fomantic-UI):
$('#selection').dropdown();
body {
padding: 1rem;
}
.wrapper {
position: relative; /* "positioned" common ancestor to list and overflow hidden box */
}
.long--box {
padding: 20px;
width: 100%;
height: 80px;
background-color: lightcoral;
white-space: nowrap;
overflow-x: auto;
overflow-y: hidden;
}
#selection.ui.selection.dropdown .menu {
width: 196px;
max-width: 196px;
min-width: 196px;
top: 58px;
left: 21px;
position: absolute; /* absolute positioning for the list */
z-index: 10;
}
#selection.ui.selection.dropdown {
width: 196px;
transform: none;
position: static !important; /* no positioning for the list parent (the first "positioned" one has to be the common ancestor)*/
}
input {
height: 36px;
width: 150px;
border-radius: 4px;
border: 1px solid #cccccc;
font-family: sans-serif;
padding: 0 0 0 10px;
}
<link href = "https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.8/semantic.min.css" rel = "stylesheet" />
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.8/semantic.min.js"></script>
<body>
<div class='wrapper'>
<div class='long--box'>
<div class='ui selection dropdown' id='selection'>
<div class='default text'>Select...</div>
<div class='menu'>
<div class = "item" data-value = "0">Cat</div>
<div class = "item" data-value = "1">Dog</div>
<div class = "item" data-value = "2">Bird</div>
<div class = "item" data-value = "3">Rabbit</div>
<div class = "item" data-value = "4">Squirrel</div>
<div class = "item" data-value = "5">Horse</div>
</div>
</div>
<div class='ui input'>
<input type = "text" placeholder = "input">
</div>
<div class='ui input'>
<input type = "text" placeholder = "input">
</div>
<div class='ui input'>
<input type = "text" placeholder = "input">
</div>
<div class='ui input'>
<input type = "text" placeholder = "input">
</div>
<div class='ui input'>
<input type = "text" placeholder = "input">
</div>
<div class='ui input'>
<input type = "text" placeholder = "input">
</div>
</div>
</div>
</body>