Как сделать так, чтобы два элемента <div> перекрывались?

Мне нужно два div, чтобы они выглядели примерно так:

    |               |
 ---|    LOGO       |------------------------
|   |_______________|  LINKS                |
|             CONTENT                       |

Какой самый изящный / элегантный способ сделать так, чтобы они аккуратно накладывались друг на друга? Логотип будет иметь фиксированную высоту и ширину и будет касаться верхнего края страницы.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
161
0
364 632
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

При абсолютном или относительном позиционировании вы можете делать всевозможные перекрытия. Вероятно, вы хотите, чтобы логотип был стилизован под такой стиль:

div#logo {
  position: absolute;
  left: 100px; // or whatever
}

Примечание: абсолютное положение имеет свои эксцентриситет. Возможно, вам придется немного поэкспериментировать, но делать то, что вы хотите, не должно быть слишком сложно.

Может ли это привести к тому, что логотип будет перекрывать текст там, где есть ссылки? Или отодвинет ссылки в сторону?

Jay Mooney 07.11.2008 01:06

Нет, absolute эффективно удаляет тег из потока. Было бы так, как если бы его не было.

sblundy 07.11.2008 01:11

Используя CSS, вы устанавливаете абсолютное положение div логотипа и устанавливаете z-порядок выше второго div.

#logo
{
    position: absolute:
    z-index: 2000;
    left: 100px;
    width: 100px;
    height: 50px;
}
Ответ принят как подходящий

Я мог бы подойти к этому так (CSS и HTML):

html,
body {
  margin: 0px;
}
#logo {
  position: absolute; /* Reposition logo from the natural layout */
  left: 75px;
  top: 0px;
  width: 300px;
  height: 200px;
  z-index: 2;
}
#content {
  margin-top: 100px; /* Provide buffer for logo */
}
#links {
  height: 75px;
  margin-left: 400px; /* Flush links (with a 25px "padding") right of logo */
}
<div id = "logo">
  <img src = "https://via.placeholder.com/200x100" />
</div>
<div id = "content">
  
  <div id = "links">dssdfsdfsdfsdf</div>
</div>

есть ли способ сделать контент, просто избегая пространства, используемого логотипом?

Javier 07.11.2008 01:22

хм можешь уточнить? Я так понимаю, вы просто хотите, чтобы логотип был над контентом? если это так, это просто нормальный поток div (поэтому удалите left, top, position из #logo). у меня такое чувство, что вы имеете в виду что-то другое! :)

Owen 07.11.2008 01:36

Я думаю, что имелось в виду, что контент (текст) будет обтекать логотип.

Davy8 07.11.2008 01:56

ах хм, я почти уверен, что нет. проблема в том, что элемент может быть перемещен или позиционирован, но не то и другое вместе. пока они не выработают своего рода идею float: center ...

Owen 07.11.2008 02:47

Просто используйте отрицательные поля, во втором div скажите:

<div style = "margin-top: -25px;">

И не забудьте установить свойство z-index, чтобы получить желаемое расположение слоев.

Это, безусловно, самый простой метод, и его можно легко адаптировать для перекрытия нижних колонтитулов с помощью нижнего поля в содержимом страницы. Спасибо!

Peter DeWeese 02.03.2012 20:29

это решение, похоже, зависит от DOCTYPE, не так ли? потому что он не работал с HTML5 DOCTYPE, когда я пытался.

alumi 12.08.2013 21:22

Это должен быть принятый ответ, абсолютное положение имеет тенденцию вызывать проблемы.

Dmitriy 30.11.2018 18:02

Невозможно использовать z-index без установки позиции на что-то иное, чем статическое. К сожалению, этот ответ не позволяет вам выбрать z-порядок.

Hugo Delannoy 13.11.2020 19:45

Если вы хотите, чтобы логотип занимал место, вам, вероятно, лучше переместить его влево, а затем сдвинуть содержимое с помощью поля, примерно так:

#logo {
    float: left;
    margin: 0 10px 10px 20px;
}

#content {
    margin: 10px 0 0 10px;
}

или любую маржу, которую вы хотите.

Другие вопросы по теме