Как мне сохранить CSS в одну строку?

Я хочу, чтобы два элемента были в одной строке, используя float: left для элемента слева.

У меня нет проблем добиться этого в одиночку. Проблема в том, что я хочу, чтобы два элемента были оставаться в одной строке даже когда вы изменяете размер браузера очень маленьким. Знаете ... как это было со столами.

Цель состоит в том, чтобы элемент справа не оборачивался не важно что.

Как сообщить браузеру с помощью CSS, что я предпочитаю растянуть содержащий div, чем обертывать его, чтобы div float: right; находился ниже float: left;div?

что я хочу:

                                   \
 +---------------+  +------------------------/
 | float: left;  |  | float: right;          \
 |               |  |                        /
 |               |  |content stretching      \   Screen Edge
 |               |  |the div off the screen  /  <---
 +---------------+  +------------------------\
                                             /

Насколько круто было бы, если бы StackOverlow добавил небольшой виджет для рисования, чтобы мы могли создавать эти диаграммы с помощью мыши? Может быть более подходящим для ориентированных на дизайн сайтов SE ... но, тем не менее, это было бы круто.

JoeCool 09.11.2012 00:19

@JoeCool На сайте UX SE уже есть инструмент для создания макетов. meta.ux.stackexchange.com/questions/1291/…

frank hadder 05.06.2013 21:51
Приемы 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 сценарий полностью изменился.
216
2
142 253
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

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

Оберните свои плавающие <div> в контейнер <div>, который использует этот кроссбраузерный хак с минимальной шириной:

.minwidth { min-width:100px; width: auto !important; width: 100px; }

Вам также нужно установить май "переполнение", но, вероятно, нет.

Это работает, потому что:

  • Объявление !important в сочетании с min-width заставляет все оставаться в той же строке в IE7 +
  • IE6 не реализует min-width, но в нем есть ошибка, заключающаяся в том, что width: 100px переопределяет объявление !important, в результате чего ширина контейнера составляет 100 пикселей.

Это отлично работает для двух поплавков, но не для трех. Может на троих работать ??

tylerthemiler 15.04.2012 03:23

Единственная проблема заключается в том, что он устанавливает фиксированную минимальную ширину.

Matt Montag 23.07.2012 22:25

Это не решение, это просто минимальная ширина, когда ваш контент становится очень маленьким (см. Вопрос), поэтому ниже 100 пикселей у вас такая же проблема. Это остается проблемой, особенно с ячейками таблицы.

Sanne 21.12.2013 22:23

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

Shawn J. Molloy 23.08.2014 23:12

Это может работать с div, но я только что протестировал его с ul / li, и он не работает :(

AsGoodAsItGets 28.08.2014 18:59

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

Andy 01.08.2015 02:16

@MattM. не говоря уже о том, что работа с контентом произвольной длины не гарантируется.

Andy 01.08.2015 02:17

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

ahnbizcad 07.08.2015 02:51

Вы уверены, что плавающие элементы уровня блока - лучшее решение этой проблемы?

Часто с трудностями CSS на моем опыте выясняется, что причина, по которой я не вижу способа сделать то, что я хочу, заключается в том, что я застрял в туннельном видении в отношении моей разметки (думая: «как я могу сделать эти элементы делают это? ") вместо того, чтобы вернуться назад и посмотреть, чего именно мне нужно достичь, и, возможно, немного переработать свой html, чтобы облегчить это.

ну, он работает практически для всего, и существующий макет основан на нем, я просто пытаюсь исправить проблему с разрывом макета, когда вы слишком увеличиваете размер текста ИЛИ изменяете размер окна браузера менее 700 пикселей в ширину

Jiaaro 05.11.2008 21:15

Другой вариант: не перемещайте правую колонку; просто дайте ему левое поле, чтобы переместить его за пределы поплавка. Чтобы исправить IE6, вам понадобится один или два взлома, но это основная идея.

Решение 1:

display: table-cell (широко не поддерживается)

Решение 2:

столы

(Ненавижу хаки.)

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

Оберните ваши поплавки в div с минимальной шириной больше, чем объединенная ширина + поля для плавающих объектов.

Никаких хаков или HTML-таблиц не требуется.

Другой вариант - вместо плавающего установить свойство white-space nowrap для родительского div:

.parent {
     white-space: nowrap;
}

и сбросьте пустое пространство и используйте отображение встроенного блока, чтобы блоки div оставались на одной строке, но вы все равно можете задать ширину.

.child {
    display:inline-block;
    width:300px;
    white-space: normal;
}

Вот JSFiddle: https://jsfiddle.net/9g8ud31o/

Определенно лучшее решение, которое я видел. Он работает для моего варианта использования, но мне интересно, насколько хорошо он поддерживается. К счастью, использование поплавков для ВСЕГО постепенно уходит в прошлое.

Ryan Ore 22.02.2013 21:49

Вы можете объяснить, как это работает? или хоть какие-то ссылки?

Anirudhan J 27.02.2014 16:16

@AnirudhanJ Это не так уж сложно. Inline-block заставляет элементы перемещаться нормально со встроенным текстом (но сохраняет некоторые возможности заполнения / поля блока), и вы буквально просто говорите CSS не переносить текст с помощью опции white-space: nowrap (применяя «normal "снова ребенку, чтобы он не распространился на все)

Brian 01.03.2014 01:02

Но как сделать так, чтобы div справа перемещался в правую часть экрана? Это просто помещает два встроенных блока рядом друг с другом, которые не разрывают строку.

addMitt 15.03.2016 21:16

вы также можете использовать межбуквенный интервал: -3 пикселя (или любое другое значение, которое вам подходит), чтобы удалить пространство между элементами встроенного блока. PS: лучше, чем принятый ответ;

Claudiu 04.11.2016 22:50

Я решил использовать jQuery. Причина, по которой я сделал это таким образом, заключалась в том, что A и B были шириной в процентах.

HTML:

<div class = "floatNoWrap">
    <div id = "A" style = "float: left;">
        Content A
    </div>
    <div id = "B" style = "float: left;">
        Content B
    </div>
    <div style = "clear: both;"></div>
</div>

CSS:

.floatNoWrap
{
    width: 100%;
    height: 100%;
}

jQuery:

$("[class~='floatNoWrap']").each(function () {
    $(this).css("width", $(this).outerWidth());
});

Фреймворк для CSS? У меня есть -jquery для поиска ВСЕ JavaScript, и из-за полного и полного игнорирования качества мы должны начать явный поиск CSS с -jquery? Делай это правильно или не делай вообще.

John 04.04.2015 23:34

Когда пользователь уменьшает размер окна по горизонтали и это приводит к тому, что числа с плавающей запятой складываются по вертикали, удалите числа с плавающей запятой, а во втором div (это было число с плавающей запятой) используйте margin-top: -123px (ваше значение) и margin-left: 444px (ваше значение), чтобы разместите блоки так, как они появились, с помощью поплавков. Когда это сделано таким образом, когда окно сужается, правый блок div остается на месте и исчезает, когда страница становится слишком узкой для его включения. ... что (для меня) лучше, чем когда правый div "прыгает" вниз ниже левого div, когда окно браузера сужается пользователем.

Добавьте эту строку в свой селектор плавающих элементов

.floated {
    float: left;
    ...
    box-sizing: border-box;
}

Это предотвратит добавление отступов и границ к ширине, поэтому элемент всегда останется в строке, даже если у вас, например, есть. три элемента шириной 33,33333%

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