Использование встроенного блока и встроенного блока, похоже, не работает так, как я ожидал

*, html, body { padding: 0; margin: 0; font-family: -apple-system, "Helvetica Neue", Arial, sans-serif; background: #ffe6eb; color: #4E2B99;}
.container { margin: 0px auto; max-width: 1000px; text-align: center; }
.header img { width: 5em; }

/* item */
.item { max-width: 500px; display: inline-block; }
.item .byf { font-style: italic; }
.item .byf-avatar { max-width: 1em; border-radius: 1em; }
.item .content { margin-top: 10px; min-height: 200px; background-color: white; border-radius: 5px; }
<html>
  <head>
    <title>Friends of Friends - Peach</title>
  </head>
  <body>
    <div id = "container" class = "container">
      <!-- Begin Header -->
      <div id = "header" class = "header">
        <img src = "http://peach.cool/images/[email protected]" alt = "logo" />
      </div>
      <!-- End Header-->

      <!-- Begin Content -->
      <div id = "content" class = "content">
        <div id = "items" class = "items">

          <!-- Begin Item -->
          <div id = "item-1" class = "item">
            <span class = "byf">Because you follow <img src = "https://scontent.fcmh1-1.fna.fbcdn.net/v/t1.0-9/38600406_695730037430614_8379042433521942528_o.jpg?_nc_cat=103&oh=e3b71b3b819c1bd035c98057e5b7a69a&oe=5C4FEC80" alt = "avatar-1" class = "byf-avatar" /> <strong>Name</strong>... </span>
            <div id = "content" class = "content">
              <div class = "content-list">
                <div class = "content-list-item">
                  <span class = "cli-name">Name</span> @<span class = "cli-handle"></span>
                </div>
              </div>
            </div>
          </div>
          <!-- End Item -->

          <!-- Begin Item -->
          <div id = "item-1" class = "item">
            <span class = "byf">Because you follow <img src = "image" alt = "avatar-1" class = "byf-avatar" /> <strong>Name</strong>... </span>
            <div id = "content" class = "content">
              <div class = "content-list">
                <div class = "content-list-item">
                  <span class = "cli-name">Name</span> @<span class = "cli-handle"></span>
                </div>
              </div>
            </div>
          </div>
          <!-- End Item -->

        </div>
      </div>
      <!-- End Content -->
    </div>
  </body>
</html>

https://jsfiddle.net/56jgh7Lx/

У меня есть различные предметы (class = "item"), для которых я пытаюсь создать сетку. Каждый элемент должен иметь максимальную ширину 500, а контейнер, в котором они находятся, имеет переменную ширину 1000 пикселей. Когда я использую display: inline для класса элемента, он меняет ширину всех элементов на 1000 пикселей, что явно не то, что я ищу. Если я использую display: inline-block, он меняет ширину до 200 пикселей.

Я немного смущен, почему это происходит, тем более что моя ширина установлена ​​на максимум 500 пикселей. Я новичок в CSS и хотел бы узнать и понять больше.

Улучшение производительности загрузки с помощью 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
0
38
3

Ответы 3

Проблема в max-width, а не в display. И inline-block, и inline делали то, что должны были делать. К встроенным элементам width, примененные в CSS, не применяются. На inline-block они есть.

Однако CSS max-width действует только в том случае, если контент шире, чем max-width. В настоящее время ваш контент не превышает 500 пикселей в ширину. Вам необходимо установить свойство width, чтобы max-width вступил в силу, как это.

.item{
    max-width:500px;
    width: 100%;
    display:inline-block;
 }

В идеальном сценарии встроенный контейнер не может содержать элементы уровня блока. В вашем случае class = "item" вы пытаетесь иметь встроенный элемент, который содержит дочерний элемент class = "content", который является блочным элементом, и, как и ожидалось, ширина встроенного контейнера будет соответствовать дочернему элементу блока.

display:inline-block; принимает высоту и ширину и будет отображаться рядом друг с другом, в то время как display:inline не принимает высоту и ширину, но будет отображаться друг для друга. для вас max-width:500px работает, потому что ваш контент имеет ширину только 200px, если вы расширите свое содержимое, вы получите эффект прокрутки или ваш контент выйдет за пределы контейнера, если его размер превышает 500 пикселей.

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