Как выровнять элемент div по правому краю

Я пытаюсь разместить гамбургер-меню справа от моей страницы.

Как выровнять элемент div по правому краю

Мне просто удалось разместить его на одной строке с заголовком, но между элементами нет желаемого разрыва.

Как выровнять элемент div по правому краю

Что я сделал:

margin-left:auto;    
margin-right:0px;

ничего не делает. Если я перемещаю элемент вправо, он переходит на следующую строку, тогда как я хочу, чтобы два элемента находились в одной строке.

    #drop_menu{
        display:inline-block;
        float: right;
    }

Как выровнять элемент div по правому краю

Вот полный код:

Я также попробовал:

#title_and_menu{
    position:relative;
    }

#drop_menu{
    display:inline-block;
    right: 200px;
    /*float: right;*/
}

#drop_menu {
  display: inline-block;
  /*float: right;*/
}

#hamburger_menu {
  width: 35px;
  height: 1px;
  background-color: black;
  margin: 6px 0;
}

img {
  width: 100%;
  height: auto;
  max-width: 100%;
  display: inline-block;
}

#myHeader {
  display: inline-block;
  background-color: white;
  color: black;
  text-align: left;
  padding-top: 25px;
  padding-bottom: 25px;
  padding-left: 25px;
  padding-right: 25px;
}

#myHeader:hover {
  background-color: black;
  color: white;
}

body {
  padding-top: 25px;
  padding-botttom: 25px;
  padding-left: 25px;
  padding-right: 25px;
}
<div id = "title_and_menu">
  <div id = "myHeader">
    <h1>9.</h1>
  </div>
  <div id = "drop_menu">
    <div id = "hamburger_menu"></div>
    <div id = "hamburger_menu"></div>
    <div id = "hamburger_menu"></div>
  </div>
</div>
<img src = "home_image.jpg" alt = "home image">

Добавляем следующий код:

#title_and_menu {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

Делает верхнюю панель гамбургер-меню вдвое толще двух нижних: временное решение

Обратите внимание, что наличие нескольких одинаковых атрибутов id не допускается.

Sean 26.08.2024 17:44

Этот вопрос похож на: Управление количеством места в justify-content: space-between. Если вы считаете, что это другое, отредактируйте вопрос, поясните, чем он отличается и/или как ответы на этот вопрос не помогают решить вашу проблему.

Sean 26.08.2024 17:45

Что вы имеете в виду под словами «не допускается наличие нескольких одинаковых атрибутов идентификатора», а также какие из них не разрешены? Если бы вы могли назвать имена идентификаторов, было бы здорово

RUMBIDZAI MUKUNGUNUGWA 26.08.2024 18:00

Это означает, что ваша опубликованная разметка недействительна, поскольку идентификатор ДОЛЖЕН быть уникальным для всего документа, ссылка: Developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/‌​id

Mark Schultheiss 26.08.2024 18:57
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
4
55
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете использовать flexbox для #title_and_menu, с justify-content: space-between; для распределения влево/вправо и align-items: center; для вертикального центрирования обоих:

#drop_menu {
  display: inline-block;
  /*float: right;*/
}

.hamburger_menu {
  width: 35px;
  height: 1px;
  background-color: black;
  margin: 6px 0;
}

img {
  width: 100%;
  height: auto;
  max-width: 100%;
  display: inline-block;
}

#myHeader {
  display: inline-block;
  background-color: white;
  color: black;
  text-align: left;
  padding-top: 25px;
  padding-bottom: 25px;
  padding-left: 25px;
  padding-right: 25px;
}

#myHeader:hover {
  background-color: black;
  color: white;
}

body {
  padding-top: 25px;
  padding-bottom: 25px;
  padding-left: 25px;
  padding-right: 25px;
}

#title_and_menu {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
<div id = "title_and_menu">
  <div id = "myHeader">
    <h1>9.</h1>
  </div>
  <div id = "drop_menu">
    <div class = "hamburger_menu"></div>
    <div class = "hamburger_menu"></div>
    <div class = "hamburger_menu"></div>
  </div>
</div>
<img src = "home_image.jpg" alt = "home image">

Я попробовал ваше решение, но при этом гамбургер-меню испортилось. Так как верхний стержень толще, чем 2 нижних стержня. Я опубликую картинку в вопросе.

RUMBIDZAI MUKUNGUNUGWA 26.08.2024 17:54

Как видите, это работает в моем фрагменте, который содержит весь предоставленный вами код. Поэтому должен быть какой-то дополнительный код, который вызывает это и который вы не опубликовали.

Johannes 26.08.2024 17:59

Рассмотрите возможность исправления повторяющихся идентификаторов здесь.

Mark Schultheiss 26.08.2024 18:52

@MarkSchultheiss Готово — я не хотел менять какой-либо исходный код (просто добавьте это одно правило CSS), но, конечно, повторяющиеся идентификаторы («#hamburger_menu») являются недействительным HTML, поэтому я заменил их на класс с тем же именем.

Johannes 26.08.2024 19:04

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

#title_and_menu {
  position: relative;
}

#myHeader {
  display: inline-block;
  background-color: white;
  color: black;
  text-align: left;
  padding: 25px;
}

#drop_menu {
  position: absolute;
  top: 50%;
  right: 25px;
  transform: translateY(-50%);
  cursor: pointer;
}

.hamburger_menu {
  width: 35px;
  height: 3px;
  background-color: black;
  margin: 6px 0;
}

img {
  width: 100%;
  height: auto;
  max-width: 100%;
  display: inline-block;
}

#myHeader:hover {
  background-color: black;
  color: white;
}

body {
  padding: 25px;
}
<div id = "title_and_menu">
  <div id = "myHeader">
    <h1>9.</h1>
  </div>
  <div id = "drop_menu">
    <div class = "hamburger_menu"></div>
    <div class = "hamburger_menu"></div>
    <div class = "hamburger_menu"></div>
  </div>
</div>
<img src = "home_image.jpg" alt = "home image">

Для получения дополнительной информации вы можете использовать документацию position , чтобы понять, как работает позиционирование.

Nijat Mursali 26.08.2024 17:57

Рассмотрите возможность исправления повторяющихся идентификаторов здесь.

Mark Schultheiss 26.08.2024 18:53

@MarkSchultheiss правильно, совсем забыл об этом. Исправлен код. Спасибо, что заметили.

Nijat Mursali 26.08.2024 19:33

Вы видите то, что обычно называют «стопкой блинов» с заголовком/телом/нижним колонтитулом - или, может быть, без нижнего колонтитула, но я включил один для иллюстрации.

Много уродливого лишнего CSS, чтобы сделать визуальный эффект более заметным.

Исправлена ​​проблема с дублирующимся идентификатором, сделав все классы и использовав их в CSS.

padding-botttom: 25px; было написано с ошибкой, но использовался более современный em подход, при котором я делаю размер шрифта 16 пикселей, который в любом случае является значением по умолчанию для большинства браузеров.

body,
* {
  font-size: 16px;
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  display: grid;
  place-items: center;
  padding: 1.5m;
}

.page-container {
  height: 100vh;
  display: grid;
  grid-template-rows: auto 1fr auto;
  border: 1px #00ff0044 solid;
}

.header-container {
  display: grid;
  grid-template-columns: auto 2em;
  background-color: #00bedf44;
  margin: 0.5em;
  border: solid 1px #0000ff;
  align-items: center;
  padding-right: 1em;
}

.content-container {
  display: grid;
  place-items: center;
  border: solid 1px #ffdd00;
  background-color: #ffdd0011;
}

.footer-container {
  display: grid;
  place-items: center;
  margin-top: 0.5em;
  border: solid 1px #ffdd00;
  background-color: #ff000033;
  width: 100vw;
}

.my-header>* {
  font-size: 2em;
}

.my-header {
  display: grid;
  align-items: center;
  margin-left: 1em;
  height: 2.5em;
  background-color: white;
  color: black;
}

.my-header:hover {
  background-color: black;
  color: white;
}

.drop-menu {
  display: grid;
  grid-template-rows: repeat(3, 1fr);
  grid-template-columns: 3em;
  align-items: center;
  background-color: #ff00df44;
  border: dashed 1px #ff0000;
  text-align: center;
  height: 2em;
}

.hamburger-menu {
  width: 1em;
  background-color: black;
  height: 0.15em;
  margin-top: 0.25em;
  margin-bottom: 0.25em;
}

.home-logo {
  width: 100%;
  max-width: 100%;
  border: solid red 1px;
}
<div class = "page-container">
  <div class = "header-container title-and-menu">
    <div class = "my-header">
      <h1>9.</h1>
    </div>
    <div class = "drop-menu">
      <div class = "hamburger-menu"></div>
      <div class = "hamburger-menu"></div>
      <div class = "hamburger-menu"></div>
    </div>
  </div>
  <div class = "content-container">
    <h2>Introduction to introductions</h2>
    <img class = "home-logo" src = "home_image.jpg" alt = "home image">
    <div>I have some cool content we all agreee!</div>
  </div>
  <div class = "footer-container">
    <div>footer I am</div>
    <img class = "home-logo" src = "home_image.jpg" alt = "home image">
  </div>
</div>

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