"break-inside: escape-column" не работает в Firefox

Я новичок в этом, и я создаю столбцы в нижнем колонтитуле.

Я понял, что он хорошо работает для Chrome и IE, используя:

column-count: 4
break-inside: avoid-column

У меня проблемы с Firefox, я получаю свойство перечеркнутый

Что я могу делать? Можешь протянуть руку? Заранее спасибо.

Редактировать: Используя page-break-inside: avoid, я получаю что-то вроде это. Некоторые предметы перемещаются над его позицией, например «Предмет 9».

В Google Chorme

Например: HTML:

<ul id = "columnasFooter">
    <li>Title column 1
        <ul>
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
            <li>Item 4</li>
            <li>Item 5</li>
            <li>Item 6</li>
            <li>Item 7</li>
            <li>Item 8</li>
        </ul>
    </li>
    <li>Title column 2
        <ul>
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
            <li>Item 4</li>
            <li>Item 5</li>
            <li>Item 6</li>
            <li>Item 7</li>
            <li>Item 8</li>
            <li>Item 9</li>
        </ul>
    </li>
    <li>Title column 3
        <ul>
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
            <li>Item 4</li>
            <li>Item 5</li>
        </ul>
    </li>
</ul>

CSS:

#columnasFooter{
  column-count: 3;
}
#columnasFooter li{
  break-inside: avoid-column;
  page-break-inside: avoid;
}

это не поддерживается в firefox, см. здесь: developer.mozilla.org/en-US/docs/Web/CSS/break-inside

לבני מלכה 04.06.2018 13:38
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
8
1
4 873
5

Ответы 5

попробуйте это, я думаю, его работа

page-break-inside: avoid;

Не работает правильно. Теперь я заставляю некоторые предметы перемещаться по его позиции.

eugneio dsjgfo 04.06.2018 14:00

Fire fox не поддерживает break-inside, см. Здесь: https://developer.mozilla.org/en-US/docs/Web/CSS/break-inside

ТАК
Используйте page-break-inside: для firefox:

column-count: 4;
break-inside: avoid-column;
page-break-inside:avoid;

См. Здесь про page-break-inside:avoid;:
https://developer.mozilla.org/en-US/docs/Web/CSS/page-break-inside

Используя page-break-inside в Firefox, он показывает мне четыре столбца, но некоторые элементы, которые они находятся в элементе li, перемещаются в другой столбец. Прикрепил картинку в ОП.

eugneio dsjgfo 04.06.2018 14:10

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

לבני מלכה 04.06.2018 14:12

Я попробовал исправить ошибку с page-break-inside: avoid, но для меня это не сработало только с этим свойством и значением в Firefox.

Затем я использовал следующее решение, которое в моем случае хорошо работает для Firefox, Chrome и Edge:

#columnasFooter {
  column-count: 3;
}

#columnasFooter li {
  /* for Chrome and Edge */
  break-inside: avoid-column;
  /* for Firefox */
  display: inline-grid;
  page-break-inside: avoid;
}

/* for Chrome and Edge */
@supports (break-inside: avoid-column) {
  #columnasFooter li  {
    display: block;
  }
}

Как видите, я использовал правило @supports для исправления ошибок. Может быть, кому-нибудь пригодится

Правильно работает в Firefox с overflow: hidden, но не работает в Chrome. Поэтому мы должны использовать запрос @support для контроля переполнения. Приведенный ниже код отлично работает в Chrome и Firefox.

#columnasFooter {
  column-count: 3;
}

#columnasFooter li {
  break-inside: avoid-column;
  page-break-inside: avoid;
  overflow: hidden; /* fix for firefox */
}

@supports (break-inside: avoid-column) {
  #columnasFooter li {
    overflow: visible; /* for chrome */
  }
}
<ul id = "columnasFooter">
  <li>Title column 1
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
      <li>Item 4</li>
      <li>Item 5</li>
      <li>Item 6</li>
      <li>Item 7</li>
      <li>Item 8</li>
    </ul>
  </li>
  <li>Title column 2
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
      <li>Item 4</li>
      <li>Item 5</li>
      <li>Item 6</li>
      <li>Item 7</li>
      <li>Item 8</li>
      <li>Item 9</li>
    </ul>
  </li>
  <li>Title column 3
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
      <li>Item 4</li>
      <li>Item 5</li>
    </ul>
  </li>
</ul>

Просто применив overflow: hidden к li вместе с breakInside: "avoid", я устранил проблему в Firefox, и он продолжал работать в Chrome

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