2012-04-12 4 views
0

ранее я задал следующий вопрос на переполнение стека: create a scroll bar in a sidebarПочему css не позволяет элементам изменять размер, чтобы заполнить экран?

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

У меня есть много ответов, говорящих как: «Как селектор знает высоту другого элемента? Это не то, для чего нужны CSS».

Теперь, мой вопрос: почему вы не можете это сделать, это css? Почему css не позволяет вам установить два div, чтобы занимать столько места, сколько им нужно, а div между ними заполняет остальную часть пространства? Разве это не общая проблема, которая должна быть решена?

+2

Извините, но спрашивает, почему программное обеспечение X не имеет функции Y может привести только к «мнению, дискуссиям, аргументам, опросу или расширенному обсуждению», и это не то, для чего используется переполнение стека. –

+0

Не в ответ на ваш вопрос - я должен согласиться с @ ÁlvaroG.Vicario здесь, но чтобы помочь вам с вашей целью для боковой панели, вот что-то, что может вас заинтересовать: http://jsfiddle.net/wBSPg/ –

+0

@ ÁlvaroG.Vicario, я новичок в css, но я задал вопрос о том, как что-то сделать в css, и мне сказали, что это не то, что css. Мне не сказали, что это невозможно в css, если бы это было так, я бы принял это. Но мне сказали, что это не то, что css для - я спрашиваю, почему было бы философски неправильно использовать css для этой цели. – dan

ответ

0

Да, это распространенная проблема, и насколько я знаю, это касается спецификаций для будущих версий CSS. Что касается этого, я не мог сказать.

Странно, столы знают, как это сделать (http://jsfiddle.net/45YJE/), поэтому, вероятно, нет даже технической причины, почему это не должно работать с div. Вам просто нужно научиться жить с ним.

1

Вы можете сделать это в CSS, он просто не поддерживается так, как вы надеетесь. С помощью функции CSS calc вы можете назначить динамические значения так, как вы описали.

Вы хотите удалить overflow: hidden из #sidebar, и назначить высоту с функцией известково в #main, что-то подобное:

height: calc(100% - 30px);

Самый большой недостаток в том, что calc не является поддерживаемый всеми браузерами, что наиболее важно, текущая стабильная версия Chrome. Однако он доступен в Chrome 19 (поэтому он будет доступен в ближайшее время) под префиксом webkit. Аналогично, он находится под префиксом moz в Firefox. IE9 также поддерживает его.

Пример: http://jsfiddle.net/XGyHP/

+1

Разбивка поддержки расчета: http://caniuse.com/#search=calc –

-1

Как это this для вас? Я уверен, что он работает и во всех браузерах.

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