Учитывая следующий HTML:
<div id="container">
<!-- Other elements here -->
<div id="copyright">
Copyright Foo web designs
</div>
</div>
Я хотел бы #copyright
придерживаться нижней части #container
.
Могу ли я достичь этого без использования абсолютного позиционирования? Если бы свойство float поддерживало значение 'bottom', то это бы сработало, но, к сожалению, это не так.
Ответы:
Скорее всего нет.
Присвоить
position:relative
к#container
, а затемposition:absolute; bottom:0;
в#copyright
.источник
На самом деле, принятый ответ @User будет работать только в том случае, если окно высокое, а содержимое короткое. Но если содержимое длинное, а окно короткое, оно поместит информацию об авторских правах поверх содержимого страницы, а затем прокрутив вниз, чтобы увидеть содержимое, вы получите плавающее уведомление об авторских правах. Это делает это решение бесполезным для большинства страниц (например, этой страницы).
Наиболее распространенный способ сделать это - продемонстрированный подход «липкий нижний колонтитул CSS», или немного более тонкий вариант. Этот подход прекрасно работает - если у вас есть нижний колонтитул фиксированной высоты.
Если вам нужен нижний колонтитул переменной высоты, который будет отображаться в нижней части окна, если содержимое слишком короткое, и в нижней части содержимого, если окно слишком короткое, что вы будете делать?
Проглоти свою гордость и используй стол.
Например:
Попробуйте это. Это будет работать для любого размера окна, для любого количества контента, для любого размера нижнего колонтитула, в любом браузере ... даже IE6.
Если вам не хватает мысли об использовании таблицы для разметки, найдите секунду, чтобы спросить себя, почему. Предполагалось, что CSS сделает нашу жизнь проще - и в целом так оно и есть - но факт в том, что даже после всех этих лет это все еще сломанный, нелогичный беспорядок. Это не может решить все проблемы. Это неполно
Таблицы не крутые, но, по крайней мере, на данный момент, они иногда являются лучшим способом решения проблемы дизайна.
источник
Подход Flexbox!
В поддерживаемых браузерах вы можете использовать следующее:
Пример здесь
Показать фрагмент кода
Решение, приведенное выше, возможно, более гибкое, но вот альтернативное решение:
Пример здесь
Показать фрагмент кода
Как примечание, вы можете добавить префиксы поставщиков для дополнительной поддержки.
источник
column-reverse
родителей, так что вам вообще не нужно ничего добавлять ребенку?Да, вы можете сделать это без
absolute
позиционирования и без использованияtable
s (который винт с разметкой и тому подобное).DEMO
Это проверено для работы с IE> 7, Chrome, FF и это действительно легко добавить в существующий макет.
Это эффективно делает то,
float:bottom
что, даже учитывая проблему, указанную в ответе @Rick Reilly!источник
<!DOCTYPE>
набор для того, чтобы это работало на IE (по крайней мере, <= 8); эти старые версии поддерживаются толькоdisplay:table-XXX
в «стандартном» режиме. Но режим стандартов также сломает много страниц, которые были разработаны, скажем, для IE6..foot{display: table-footer-group}
. Мне не нужноvertical-align
,height
илиborder-collapse
.#container
только содержит#foot
и не другой контент?Это старый вопрос, но это уникальный подход, который может помочь в нескольких случаях.
Чистый CSS, без абсолютного позиционирования, без фиксирования высоты, кросс-браузер (IE9 +)
проверьте, что рабочая скрипка
Поскольку нормальный поток «сверху вниз», мы не можем просто попросить, чтобы
#copyright
div придерживался основания его родителя без какого-либо абсолютного позиционирования, но если бы мы хотели#copyright
div придерживался вершины его родителя, это будет очень просто - потому что это нормальный путь потока.Поэтому мы будем использовать это в наших интересах. мы изменим порядок
div
s в HTML, теперь#copyright
div находится вверху, а контент сразу же следует за ним. мы также делаем контент div растянутым до конца (используя псевдоэлементы и методы очистки)теперь это просто вопрос обращения этого порядка обратно в поле зрения. это можно легко сделать с помощью CSS-преобразования.
Мы поворачиваем контейнер на 180 градусов, и теперь: вверх-вниз. (и мы возвращаем содержимое обратно, чтобы оно снова выглядело нормальным)
Если мы хотим, чтобы в области содержимого была полоса прокрутки, нам нужно применить немного больше магии CSS. Как может быть показано здесь [в этом примере содержимое находится ниже заголовка - но это та же идея]
источник
Создайте еще один контейнер
div
для элементов выше#copyright
. Чуть выше авторского права добавьте новоеdiv
:<div style="clear:both;"></div>
оно заставит нижний колонтитул находиться под всем остальным, как в случае использования относительного позиционирования (bottom:0px;
).источник
Попробуй это;
источник
Хотя ни один из ответов, представленных здесь, похоже, не подходит или не работает в моем конкретном случае, я натолкнулся на эту статью, которая предоставляет это аккуратное решение:
Я считаю, что это очень полезно для применения адаптивного дизайна для мобильного дисплея без необходимости переупорядочивать весь HTML-код веб-сайта, настройка
body
себя в виде таблицы.Обратите внимание, что только первый
table-footer-group
илиtable-header-group
будет отображаться как таковой: если их больше одного, остальные будут отображаться какtable-row-group
.источник
CSS Grid
Поскольку использование CSS Grid увеличивается, я хотел бы предложить
align-self
элемент, который находится внутри контейнера сетки.align-self
может содержать любое из значений:end
,self-end
,flex-end
для следующего примера.источник
Вы можете действительно
align
окно кbottom
без использования ,position:absolute
если вы знаетеheight
из#container
использования выравнивания текста особенностиinline-block
элементов.Здесь вы можете увидеть это в действии.
Это код:
источник
Использование translateY и свойства top
Просто установите дочерний элемент в положение: относительное, а затем переместите его наверх: 100% (это 100% высоты родителя) и придерживайтесь нижнего края родителя с помощью преобразования: translateY (-100%) (это -100% высоты ребенок).
Льготы
Но все еще просто обходной путь :(
Не забудьте префиксы для старого браузера.
источник
Ссылка на CodePen здесь .
источник
Если вы хотите, чтобы он «прилипал» ко дну, независимо от высоты контейнера, то абсолютное позиционирование - это путь. Конечно, если элемент copyright является последним в контейнере, он всегда будет внизу.
Можете ли вы расширить свой вопрос? Объясните, что именно вы пытаетесь сделать (и почему вы не хотите использовать абсолютное позиционирование)?
источник
Также, если есть условия с использованием
position:absolute;
илиposition:relative;
, вы всегда можете попробоватьpadding
родителяdiv
или положитьmargin-top:x;
. Не очень хороший метод в большинстве случаев, но в некоторых случаях он может пригодиться.источник
Может быть, это кому-то поможет: вы всегда можете поместить div вне другого div, а затем подтолкнуть его вверх, используя отрицательное поле:
источник
источник
Не хочу использовать "position: absolute" для нижнего колонтитула. Тогда вы можете сделать это так:
источник
Если вы не знаете высоту дочернего блока:
http://jsbin.com/ULUXIFon/3/edit
Если вы знаете высоту дочернего блока, добавьте дочерний блок, затем добавьте padding-top / margin-top:
источник
Просто потому, что это вообще не упоминалось, что обычно хорошо работает в таких ситуациях, как ваша:
Размещение div-объекта авторского права после div -контейнера
Вам нужно будет только отформатировать copyright-div аналогично другому контейнеру (такая же общая ширина, центрирование и т. Д.), И все в порядке.
CSS:
HTML:
Единственный случай, когда это не может быть идеальным, это когда ваш контейнер-div объявлен с
height:100%
, и пользователю нужно прокрутить вниз, чтобы увидеть авторские права. Но даже в этом случае вы можете обойтись (например,margin-top:-20px
когда высота вашего элемента авторского права составляет 20 пикселей).В стороне: я знаю, что ОП попросил решение, которое "... прилипает к нижней части" контейнера "div ..." , а не что-то под ним, но давай, люди ищут здесь хорошие решения, и это это один!
источник
margin-top: -{element height}
.Вот подход, направленный на то, чтобы элемент с известной высотой и шириной (по крайней мере приблизительно) плавал вправо и оставался внизу, в то же время ведя себя как встроенный элемент для других элементов. Он сфокусирован внизу справа, потому что вы можете легко разместить его в любом другом углу с помощью других методов.
Мне нужно было создать панель навигации, в которой были бы реальные ссылки в правом нижнем углу и случайные элементы родного брата, при этом следя за тем, чтобы сама панель растягивалась правильно, не нарушая компоновку. Я использовал элемент "shadow", чтобы занять пространство ссылок панели навигации, и добавил его в конец дочерних узлов контейнера.
источник
В
float:bottom
CSS ничего не называется . Лучше всего использовать позиционирование в таких случаях:источник
Для тех, у кого только один дочерний элемент в контейнере, вы можете использовать подход
table-cell
and,vertical-align
который надежно работал для позиционирования одного div в нижней части его родительского элемента.Обратите внимание, что использование в
table-footer-group
качестве других упомянутых ответов нарушит расчет высоты родителяtable
.источник
По данным: w3schools.com
Таким образом, вам нужно расположить родительский элемент с чем-то относительным или абсолютным и т. Д. И установить желаемый элемент в абсолютное значение, а последним установить дно в 0.
источник
Div of style,
position:absolute;bottom:5px;width:100%;
работает, но потребовалось больше ситуации прокрутки.источник