Div справа: html — Как расположить DIV с картинкой справа от UL?

Как выровнять этот промежуток справа от div?

Как выровнять этот промежуток справа от div?

У меня есть следующий HTML:

<div>
    <span>Cumulative performance</span>
    <span>20/02/2011</span>
</div>

с этим CSS:

.title
{
    display: block;
    border-top: 4px solid #a7a59b;
    background-color: #f6e9d9;
    height: 22px;
    line-height: 22px;
    padding: 4px 6px;
    font-size: 14px;
    color: #000;
    margin-bottom: 13px;
    clear:both;
}

Если вы проверите это jsFiddle: http://jsfiddle.net/8JwhZ/

Вы можете видеть, что Имя и Дата склеены. Есть ли способ, чтобы я мог выровнять дату по правому краю? Я попробовал float: right;на втором, <span>но он испортил стиль, и выдвигает дату за пределы заключающего div

html  css 

— DaveDev
источник



Ответы:


Если вы можете изменить HTML: http://jsfiddle. net/8JwhZ/3/

<div>
  <span>Cumulative performance</span>
  <span>20/02/2011</span>
</div>
.title .date { float:right }
.title .name { float:left }

— Phrogz
источник




Работа с поплавками немного грязная:

Это, как и многие другие «тривиальные» трюки макета, можно сделать с помощью flexbox.

   div.container {
     display: flex;
     justify-content: space-between;
   }

В 2017 году я думаю, что это предпочтительное решение (с плавающей точкой), если вам не нужно поддерживать устаревшие браузеры: https://caniuse.com/#feat=flexbox

Проверьте, как отличается использование float от flexbox («может включать несколько конкурирующих ответов»): https://jsfiddle.net/b244s19k/25/ . Если вам все еще нужно придерживаться float, я, конечно, рекомендую третью версию.

— Risord
источник





Альтернативным решением для поплавков является использование абсолютного позиционирования:

.title {
  position: relative;
}
.title span:last-child {
  position: absolute;
  right: 6px;   /* must be equal to parent's right padding */
}

Смотрите также скрипку .

— Philipp
источник


Вы можете сделать это без изменения HTML. http://jsfiddle.net/8JwhZ/1085/

<div>
<span>Cumulative performance</span>
<span>20/02/2011</span>
</div>
.title span:nth-of-type(1) { float:right }
.title span:nth-of-type(2) { float:left }

— Kerel
источник


Решение с использованием flexbox без justify-content: space-between.

<div>
  <span>Cumulative performance</span>
  <span>20/02/2011</span>
</div>
.title {
  display: flex;
}
span:first-of-type {
  flex: 1;
}

Когда мы используем flex:1первое <span>, оно занимает все оставшееся пространство и перемещает второе <span>вправо. Скрипка с этим решением: https://jsfiddle.net/2k1vryn7/

Здесь https://jsfiddle.net/7wvx2uLp/3/ вы можете увидеть разницу между двумя подходами flexbox: flexbox with justify-content: space-betweenи flexbox with flex:1на первом <span>.

— hydro17
источник

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.

Licensed under cc by-sa 3.0 with attribution required.

выровнять элемент справа от центрированного div без перекрытия/абсолютного позиционирования? [html, css]


Поэтому я уверен, что этот вопрос задавали раньше, но я не мог понять это, просматривая ответы. У меня есть div с максимальной шириной 900 пикселей по центру. Мне нужен еще один маленький div справа от него, но я не хочу, чтобы он толкал центрированный div влево/вызывал другой хаос. Мне удалось сделать это, используя абсолютное позиционирование элемента, который я хочу справа, и толкнув его вниз, дополнив его вверх, но мне не нравится это решение, так как я чувствую, что мне не нужно дополнять его, чтобы получить там, где я хочу, и если я уменьшу окно на моем огромном экране, текст в абсолютно позиционированном элементе перекроет мой центрированный элемент. Центральный элемент — это изображение, и я хотел бы, чтобы элемент, выровненный по правому краю, был выровнен по горизонтали с верхним краем изображения.

Вот как выглядят мои классы (изображение — это элемент, который мне нужен в центре, информация — тот, который я хочу справа):

.image {
    max-width: 900px;
    display: block;
    margin:auto;
    padding-bottom: 2em;
    position: relative;
}
#info{
    position: absolute;
    right: 0;
    top: 10em;
    margin: auto;
}

Спасибо и извините, если это лишний вопрос. РЕДАКТИРОВАТЬ: вот скрипка: http://jsfiddle.net/7xmQ6/


html css

person jack    schedule 10.03.2014    source источник



Ответы (4)

arrow_upward
1
arrow_downward

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

.image, #info {
  display: inline-block;
  vertical-align: top;
}

Чтобы это работало, они должны быть братьями и сестрами, а #info должен стоять вторым в DOM.

<div>...</div>
<div>...</div>

person Matt Pileggi    schedule 10.03.2014


arrow_upward
0
arrow_downward

Вам не нужно использовать CSS для элемента справа. В HTML-коде вы можете просто использовать

<div align="right">
  INSERT YOUR #INFO HERE
</div> 

person lancethestudent    schedule 10.03.2014


arrow_upward
0
arrow_downward

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

ДЕМО здесь

Give it a try

person kheya    schedule 10. 03.2014


arrow_upward
0
arrow_downward

Хорошо, я понял это, но для моего решения требуется flexbox, это — это руководство, которое я использовал, и в значительной степени именно эта установка. Не знаю, почему это так сложно, учитывая, что на множестве сайтов есть такие макеты. Либо так, либо я действительно тупой, скорее всего последнее исходя из опыта. Спасибо всем за вашу помощь.

person jack    schedule 10.03.2014

Свойство права CSS

❮ Предыдущий Полное руководство по CSS Далее ❯


Пример

Установите правый край позиционированного элемента

на 150 пикселей левее правого края его ближайшего позиционированного предка:

div.absolute {
  position: absolute;
  справа: 150 пикселей;
  ширина: 200 пикселей;
  высота: 120 пикселей;
  граница: 3 пикселя сплошная зеленый;

Попробуйте сами »

Другие примеры «Попробуйте сами» ниже.


Определение и использование

Свойство right влияет на горизонтальное положение позиционируемого элемента. Это свойство не влияет на непозиционированные элементы.

  • Если положение: абсолютное; или положение: фиксированное; — Свойство right устанавливает правый край элемента на единицу вправо правого края своего ближайшего расположенного предка.
  • Если положение: относительное; — правый Свойство устанавливает правый край элемента на единицу слева/справа от его нормальное положение.
  • Если положение: липкое; — свойство right ведет себя так, как будто его позиция относительный, когда элемент находится внутри области просмотра, и, как и его положение, фиксируется, когда он снаружи.
  • Если позиция: статическая; — свойство right не действует.

Показать демо ❯

Значение по умолчанию: авто
Унаследовано: нет
Анимация: да. Читать про анимированный Попробуй
Версия: CSS2
Синтаксис JavaScript: объект .style.right=»200px» Попробуй


Поддержка браузера

Числа в таблице указывают первую версию браузера, которая полностью поддерживает это свойство.

Собственность
справа 1,0 5,5 1,0 1,0 5,0



Синтаксис CSS

справа: авто| длина |начальный|наследовать;

Значения свойств

Значение Описание Демо
авто Позволяет браузеру вычислить положение правого края. Это по умолчанию Демонстрация ❯
длина Задает положение правого края в пикселях, см и т. д. Допускаются отрицательные значения. Читать о единицах длины Демонстрация ❯
% Задает положение правого края в % от содержащего элемента. Допускаются отрицательные значения Демонстрация ❯
начальный Устанавливает для этого свойства значение по умолчанию. Читать о начальный
унаследовать Наследует это свойство от родительского элемента. Читать о унаследовать


Дополнительные примеры

Пример

Используйте правильное свойство с отрицательным значением и для элемента без позиционированные предки:

div.b {
  позиция: абсолютная;
справа: -20px;
  ширина: 100 пикселей;
  высота: 120 пикселей;
  граница: 3 пикселя сплошного синего цвета;
}

div. c {
  позиция: абсолютная;
  справа: 150 пикселей;
  ширина: 200 пикселей;
высота: 120 пикселей;
  граница: 3 пикселя сплошного зеленого цвета;
}

Попробуйте сами »


Связанные страницы

Учебник CSS: Позиционирование CSS

Ссылка CSS: свойство left

❮ Предыдущий Полное руководство по CSS Далее ❯


ВЫБОР ЦВЕТА



Лучшие учебники
Учебное пособие по HTML
Учебное пособие по CSS
Учебное пособие по JavaScript
Учебное пособие
Учебное пособие по SQL
Учебное пособие по Python
Учебное пособие по W3.CSS
Учебное пособие по Bootstrap
Учебное пособие по PHP
Учебное пособие по Java
Учебное пособие по C++
Учебное пособие по jQuery

9008 Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3. CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery

Лучшие примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery

FORUM | О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.

Copyright 1999-2022 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.

УСС.

Все способы выравнивания элементов слева и справа. | Петр Шибицкий | 12 разработчиков источник: https://www.andiamo.co.uk/resources/right-to-left-languages/

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

Допустим, у нас есть следующие элементы для оформления.

И желаемый конечный эффект будет таким:

Надеюсь, что моих навыков PAINT достаточно, чтобы проиллюстрировать задачу. Два элемента слева и один элемент справа. Давайте посмотрим на наши варианты. 🙂 Код HTML находится внизу этой статьи.

Исторически, как это было сделано (и у вас все еще есть этот вариант). Вы можете использовать поплавки. Чтобы добиться того, что вы хотите, вы можете обернуть div 1 и 2 в родительский div, и вот что вы получите:

Черная рамка — это граница родительского div, которую вы должны добавить, а оранжевые границы — это границы вокруг самих элементов.

Это будет работать, но есть 2 проблемы с этим подходом.

  • Один Если один из элементов окажется больше контейнера, то он выйдет за его границы (ведь элемент плавающий, поэтому удаляется из нормального рендеринга DOM). Поэтому мы должны применить clearfix.
  • Два без соответствующих медиазапросов элементы начнут перекрывать друг друга. Если пользователь слишком сильно сжимает браузер.

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

CSS

CSS 2.1:

И расширение к предыдущей версии спецификации. Оно принесло свойство: позиционирование . Может принимать несколько значений. Но тот, который нас интересует, это: абсолютный и относительный . Как это работает, это хорошо описано во всем Интернете. Поэтому я не буду пытаться изобретать велосипед.

Все, что мне нужно сделать, это установить относительное позиционирование на контейнере и абсолютное на правой обертке (левая обертка будет автоматически выровнена по левому краю), а затем установить свойство right на 0. право. Эффект будет в основном таким же, как и выше, но нет необходимости в яснофикс . Браузер автоматически изменит родительские размеры, чтобы они соответствовали всем дочерним элементам.

Однако элементы все равно будут перекрываться, если мы сузим окно браузера. Это хорошее решение. Он будет работать во всех браузерах. Но все же, давайте рассмотрим другие варианты.

Итак, в CSS3 мы получили новый способ позиционирования элементов, также известный как flexbox. Это мощный и интуитивно понятный инструмент. Об этом опять же написаны тома. Статью, которая мне больше всего нравится, можно найти по этой ссылке. Все, что мне нужно сделать, это поставить display: flex в элементе контейнера и добавьте justify-content: space-between . Все это означает, что расстояние между дочерними элементами будет равным вдоль главной оси (по умолчанию это горизонтальная линия). И поскольку у нас всего два элемента (левая и правая обертки), это работает. Поскольку даже пространство в случае всего двух элементов означает максимальное доступное пространство.

CSS

Опять же, это хорошее решение. Если вам не нужно поддерживать IE6. Так как элементы не будут перекрываться. Появится полоса прокрутки. Опять же, современный адаптивный дизайн должен учитывать это, но ошибки случаются, и, по крайней мере, таким образом контент все еще можно использовать.

Существует несколько способов снять шкуру с кошки. Особенно с флексбоксом. Предположим, что по каким-то базарным причинам вы не можете использовать обертку div. Все, что у вас есть, это дерево div, содержащее число (это хороший вопрос для интервью :)).

Опять же, мы можем использовать flex:1 для второго элемента. Это сокращение для flex: 1 0 auto; или вы можете просто написать flex-grow: 1 . Все это означает, что мы хотим, чтобы элемент 2 рос как можно больше без разрыва строки. Это, однако, имеет проблему, если вы хотите добавить эффект наведения на второй элемент, он будет размещен на всем большом элементе и может выглядеть или не выглядеть желательным. Обходной путь, конечно, состоял бы в том, чтобы добавить 4-й элемент между 2 и 3 и увеличить его. Как я уже говорил, есть несколько способов содрать шкуру с кошки.

Если по какой-то причине вы не хотите добавлять лишний элемент. Все, что у вас есть, это контейнер и 3 элемента div, с которыми вы можете сделать что-то очень умное. Поместите display: flex в контейнер, а затем margin-right: auto во второй элемент.

Это даст вам следующее:

CSS

И это все, что я, очевидно, не рассмотрел некоторые другие способы сделать это, особенно CSS grid или использование display: table или возню со свойством flex-basis . Но это потому, что я считаю эти решения излишними.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *