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

Учитывая этот HTML:

<div>foo</div><div>bar</div><div>baz</div>

Как сделать так, чтобы они отображались в строке вот так:

foo bar baz

не так:

foo
bar
baz

Приемы 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 сценарий полностью изменился.
269
0
926 898
19
Перейти к ответу Данный вопрос помечен как решенный

Ответы 19

Попробуйте написать это так:

div { border: 1px solid #CCC; }
    <div style = "display: inline">a</div>
    <div style = "display: inline">b</div>
    <div style = "display: inline">c</div>

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

Steve Perks 31.12.2008 19:10
<style type = "text/css">
div.inline { display:inline; }
</style>
<div class = "inline">a</div>
<div class = "inline">b</div>
<div class = "inline">c</div>
Ответ принят как подходящий

Тогда что-то еще:

div.inline { float:left; }
.clearBoth { clear:both; }
<div class = "inline">1<br />2<br />3</div>
<div class = "inline">1<br />2<br />3</div>
<div class = "inline">1<br />2<br />3</div>
<br class = "clearBoth" /><!-- you may or may not need this -->

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

Necronet 05.03.2011 02:28

Имена классов css здесь не следует использовать в качестве примера. Используйте правильное семантическое именование, например: css-tricks.com/semantic-class-names

Berik 20.03.2013 18:44

<span>?

Я думаю, мы говорим о встраивании блочных элементов, которые могут иметь ширину и высоту. Представьте себе div с фоновым изображением, которое вы хотите встроить в текст.

NexusRex 03.08.2011 20:21

Встроенный div - это чудо Интернета, и его следует избивать, пока он не станет диапазоном (по крайней мере, 9 раз из 10) ...

<span>foo</span>
<span>bar</span>
<span>baz</span>

... отвечает на исходный вопрос ...

Бывают случаи, когда вы хотите, чтобы блоки div отображались встроенными, например, когда вы хотите добавить поля слева и справа от элемента. Я не думаю, что это можно сделать с размахом. Стив, вероятно, должен использовать float вместо inline.

Darryl Hein 07.10.2010 10:20

Не уверен, что я следую за Даррилом, вы можете добавить поля или отступы к диапазону >> <span style = "color: white; background-color: black; margin: 10px; paddin‌ g: 20px;"> xxxxx </ span‌>

bochgoch 07.10.2010 17:30

А как насчет того, чтобы иметь div с потоком фонового изображения, встроенным в абзац текста. Часто более желательно использовать div с изображением bg, установленным с помощью CSS, чем использовать тег img.

NexusRex 03.08.2011 20:26
border:solid плохо работает с пролётами. Если вы хотите, чтобы два изображения отображались на одном уровне и имели границу, это не подходит.
James P. 01.09.2011 16:15

К сожалению, HTML5 не поддерживает размещение div внутри <span>. Раньше я использовал <span> для помещения стилей CSS в раздел и не заставлял браузер интерпретировать раздел как блок и заставлять меня его макет. Но я только что обнаружил сегодня при переносе моей страницы на JQuery Mobile + HTML5, что если у вас есть <div> внутри <span>, валидатор HTML5 будет жаловаться, что это недействительный HTML5, поэтому есть случаи, когда используется тег <span> вместо встроенный <div> невозможен, по крайней мере, с HTML5.

Kmeixner 10.01.2013 03:12

... на самом деле он не отвечает на исходный вопрос, который включал «Учитывая этот HTML».

KrisF 01.10.2013 12:45

Иногда вы живете в мире, который не создавали, и единственное, что вы можете изменить в CSS. В этом случае style = "display: inline" работает нормально.

Matthew Lock 17.10.2014 06:06

Если вы не «застряли» в использовании div, это хороший ответ. Но может быть множество причин, по которым вам нужно использовать div, но чтобы они отображались как встроенные элементы.

Bobble 01.09.2015 13:06

«Встроенный div - это чудо Интернета, и его следует избивать, пока он не превратится в диапазон» - почему?

reducing activity 01.08.2018 15:57

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

http://www.quirksmode.org/css/display.html#inlineblock

@NexusRex есть работа, чтобы заставить IE вести себя правильно, однако display: inline - правильный ответ. Я считаю, что можно обойтись следующим образом: display: inline-block; * дисплей: встроенный; * масштабирование: 1; установка масштабирования заставляет IE рассматривать элемент как блочный.

Chris Stephens 18.10.2011 02:37

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

Приношу свои извинения Дэррилу. Я читаю class = "inline" как style = "display: inline". У вас есть правильный ответ, даже если вы используете семантически сомнительные имена классов ;-)

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

Если вы хотите поместить в эти divs не только встроенные элементы, то вам следует перемещать эти div, а не делать их встроенными.

Плавающие блоки:

===== ======= ==   **** ***** ******   +++++ ++++
===== ==== =====   ******** ***** **   ++ +++++++
=== ======== ===   ******* **** ****   
===== ==== =====                       +++++++ ++
====== == ======

Встроенные div:

====== ==== ===== ===== == ==== *** ******* ***** ***** 
**** ++++ +++ ++ ++++ ++ +++++++ +++ ++++

Если вы предпочитаете первое, то это ваше решение и потеряйте эти теги br:

<div style = "float: left;" >
  <p>block level content or <span>inline content</span>.</p>
  <p>block level content or <span>inline content</span>.</p>
</div>
<div style = "float: left;" >
  <p>block level content or <span>inline content</span>.</p>
  <p>block level content or <span>inline content</span>.</p>
</div>
<div style = "float: left;" >
  <p>block level content or <span>inline content</span>.</p>
  <p>block level content or <span>inline content</span>.</p>
</div>

обратите внимание, что ширина этих div-ов является плавной, поэтому не стесняйтесь устанавливать для них ширину, если вы хотите контролировать поведение.

Спасибо, Стив

Я просто стараюсь сделать их фиксированной шириной, чтобы они составляли общую ширину страницы - вероятно, работает только в том случае, если вы используете страницу с фиксированной шириной. Также «плавают».

Вам нужно содержать три div. Вот пример:

CSS

div.contain
{
  margin:3%;
  border: none;
  height: auto;
  width: auto;
  float: left;
}

div.contain div
{
  display:inline;
  width:200px;
  height:300px;
  padding: 15px;
  margin: auto;
  border:1px solid red;
  background-color:#fffff7;
  -moz-border-radius:25px; /* Firefox */
  border-radius:25px;
}

Примечание: атрибуты border-radius не являются обязательными и работают только в браузерах, совместимых с CSS3.

HTML

<div class = "contain">
  <div>Foo</div>
</div>

<div class = "contain">
  <div>Bar</div>
</div>

<div class = "contain">
  <div>Baz</div>
</div>

Обратите внимание, что каждый из div'ов 'foo' 'bar' и 'baz' содержится внутри div'а 'contain'.

Я знаю, что люди говорят, что это ужасная идея, но на практике она может быть полезна, если вы хотите сделать что-то вроде мозаичных изображений с комментариями под ними. например Picasaweb использует его для отображения эскизов в альбоме. См., Например, / demo http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/inline_block_quirks.html (класс goog-inline-block; здесь я сокращаю его до ib)

/* below is a set of hacks to make inline-block work right on divs in IE. */
html > body .ib { display:inline-block; }
.ib {display:inline-block;position:relative;}
* html .ib { display: inline; }
:first-child + html .ib { display:inline; }

Учитывая этот CSS, установите свой div в класс ib, и теперь он волшебным образом является встроенным блочным элементом.

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

Я считаю, что мы говорим о встроенном div с текстом или другом, а не о перемещении в одну сторону.

NexusRex 03.08.2011 20:23

При использовании float: left с overflow: auto для содержащего div, как / когда может появиться полоса прокрутки, при которой переполнение может вступить в игру?

cellepo 23.10.2014 02:10

Просто используйте div-обертку с "float: left" и поместите внутрь коробки, также содержащие float: left:

CSS:

wrapperline{
width: 300px;
float: left;
height: 60px;
background-color:#CCCCCC;}

.boxinside{
width: 50px;
float: left;
height: 50px;
margin: 5px;
background-color:#9C0;
float:left;}

HTML:

<div class = "wrapperline">
<div class = "boxinside">Box 1</div>
<div class = "boxinside">Box 1</div>
<div class = "boxinside">Box 1</div>
<div class = "boxinside">Box 1</div>
<div class = "boxinside">Box 1</div>
</div>

Используйте display:inline-block с полем и медиа-запросом для IE6 / 7:

<html>
  <head>
    <style>
      div { display:inline-block; }
      /* IE6-7 */
      @media,
          {
          div { display: inline; margin-right:10px; }
          }
   </style>
  </head>
  <div>foo</div>
  <div>bar</div>
  <div>baz</div>
</html>

мы можем сделать это как

.left {
    float:left;
    margin:3px;
}
<div class = "left">foo</div>
<div class = "left">bar</div>
<div class = "left">baz</div>
<div class = "cdiv">
<div class = "inline"><p>para 1</p></div>
 <div class = "inline">
     <p>para 1</p>
     <span>para 2</span>
     <h1>para 3</h1>
</div>
 <div class = "inline"><p>para 1</p></div>

http://jsfiddle.net/f8L0y5wx/

неплохо для меня :

<style type = "text/css">
    div{
        position: relative;
        display: inline-block;
        width:25px;
        height:25px;
    }
</style>
<div>toto</div>
<div>toto</div>
<div>toto</div>

Я думаю, вы можете использовать этот способ без использования CSS -

<table>
    <tr>
        <td>foo</td>
    </tr>
    <tr>
        <td>bar</td>
    </tr>
    <tr>
        <td>baz</td>
    </tr>
</table>

Прямо сейчас вы используете элемент уровня блока, таким образом, вы получаете нежелательный результат. Итак, вы можете встроить элемент, такой как span, small и т. д.

<span>foo</span><span>bar</span><span>baz</span>

You should use <span> instead of <div> for correct way of inline. because div is a block level element, and your requirement is for inline-block level elements.

Вот html-код в соответствии с вашими требованиями:

<div class = "main-div">
 <div>foo</div>
 <div>bar</div>
 <div>baz</div>`
</div>

У вас есть два способа сделать это


  • используя простой display:inline-block;
  • или используя float:left;

поэтому вы должны принудительно изменить свойство отображения display:inline-block;

Пример первый

div {
    display: inline-block;
}

Пример второй

div {
    float: left;
}

you need to clear float

.main-div:after {
    content: "";
    clear: both;
    display: table;
}
<div>foo</div><div>bar</div><div>baz</div>
//solution 1
<style>
    #div01, #div02, #div03 {
                                float:left;
                                width:2%;
    }   
 </style>
 <div id = "div01">foo</div><div id = "div02">bar</div><div id = "div03">baz</div>

 //solution 2

 <style>
      #div01, #div02, #div03 {
                                  display:inline;
                                  padding-left:5px;
      }   
</style>
<div id = "div01">foo</div><div id = "div02">bar</div><div id = "div03">baz</div>

 /* I think this would help but if you have any other thoughts just let me knw      kk */

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