2015-10-22 2 views
0

У меня есть меню боковой панели с выпадающими списками и длинный список, в котором нужен скроллер.Меню боковой панели с прокруткой скрывает выпадающие списки

Проблема, с которой я столкнулся, - это либо полоса прокрутки с экрана, либо выпадающее меню скрыто из-за overflow: hidden; или обоих.

Вот мой CSS:

/* I want dropdowns to be on the left */ 
.dropdown-menu { 
    top: 0; 
    left: -160px; 
} 
#rightbar { 
    position: fixed; 
    right: 0; 
    height: 100%; 
    background: lightgray; 
    width: 300px; 
} 
/* Normally, you'd do this, but this makes the dropdown not show; ALSO, the scrollbar is off the screen */ 
#wrap { 
    height:100%; 
    overflow:hidden; 
} 
#bottomStuff { 
    height: 100%; 
    overflow-y: auto; 
} 

https://jsfiddle.net/cp0fqyt9/

Как получить выпадающие и скроллбары работать в position: fixed боковой панели (без JS)?

+0

#wrap {height: 100%; переполнение: hidden;} скрытый переполнения скрывает выпадающее окно – Bosc

+0

Я знаю, но как мне получить обертку 'bottomStuff' на 100% высоту того, что осталось на экране ... это не кажется возможным без JS. – Jeff

ответ

1

Проблема здесь #bottomStuff { height: 100% }. height: 100% представляет собой высоту окна просмотра, но #bottomStuff смещен сверху, из-за #topStuff и hr, поэтому элемент выходит за пределы высоты окна просмотра.

(Скажем, ваш браузер 500px высокий, то #bottomStuff является 500px высока, но если #topStuff является 100px высокий, только 400px из #bottomStuff видна в окне, а нижний 100px не видно, потому что он выходит за пределы окна просмотра, и вы никогда не увидите переполнения из-за position: fixed)

Если браузерами вам нужна поддержка поддержка CSS3-х calc() (вы можете проверить поддержку браузера для calc() на http://caniuse.com/#search=calc), вы можете использовать его, как это, если вы знаете высоту #topStuff + hr:

#bottomStuff { 
    height: calc(100% - 200px); /* Where 200px is the height of #topStuff + hr */ 
} 

Демо-версия: https://jsfiddle.net/jonsuh/xo1z0yyg/

+0

Хорошее решение, и вы можете использовать JavaScript для расчета высоты topStuff и установки CSS в bottomStuff (если ваш topStuff является динамическим) примерно так: height: calc (100% - topStuffHeight) – makshh

+0

Итак, это продолжает давать мне высоту: calc (-100%) ', потому что он обрабатывает PX как% в функции calc. – Jeff

+0

@Jeff В браузере, который вы тестируете, поддерживается CSS3 'calc()'? Если вы проверите демонстрационную ссылку в Chrome или в современном браузере, она работает так, как ожидалось. – jonsuh

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