Nano Hash - криптовалюты, майнинг, программирование

Svg отображает задачи со свойством подсчета столбцов

У меня есть список блоков, которые я хочу отобразить в нескольких столбцах (не менее 2 столбцов). В моих блоках у меня есть заголовок с заголовком и значок svg.

Если я использую свойство css "column-count" для разделения содержимого на столбцы, некоторые svg исчезают в Google Chrome. (нет проблем с Firefox)

Вот демо:

section {
  width: 500px;
  margin-right: 100px;
  float: left;
}
.container {
  border: 1px solid black;
  margin: 0 auto;
  padding: 0.25em;
  margin-top: 1.25em;
}
.container.withcolumns {
  column-count: 2;
  column-gap: 2em;
}
.block {
  break-inside: avoid-column;
}
.block header {
  font-weight: bold;
  padding: 0.5em 0;
  border-bottom: 1px solid grey;
}
.block header svg {
  width: 15px;
  height: 15px;
  margin-right: 0.5em;
}
ul,
li {
  margin: 0;
  padding: 0;
  list-style-type: none;
}
li {
  margin: 0.25em 0;
}
<section>
<h1>First block without columns</h1>
<div class='container'>
  <div class='block'>
    <header>
      <svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>
      Block 1</header>
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>  
      <li>Item 3</li>
    </ul>
  </div>
  <div class='block'>
    <header><svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>Block 2</header>
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      
    </ul>
  </div>
  <div class='block'>
    <header><svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>Block 3</header>
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>      
    </ul>
  </div>
  <div class='block'>
    <header><svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>Block 4</header>
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
      <li>Item 4</li>
      <li>Item 5</li>
    </ul>
  </div>
</div>
</section>
<section>
  <h1>Same code with columns</h1>
<div class='container withcolumns'>
  <div class='block'>
    <header>
      <svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>
      Block 1</header>
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>   
      <li>Item 3</li>
    </ul>
  </div>
  <div class='block'>
    <header><svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>Block 2</header>
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
    </ul>
  </div>
  <div class='block'>
    <header><svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>Block 3</header>
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>      
    </ul>
  </div>
  <div class='block'>
    <header><svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>Block 4</header>
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
      <li>Item 4</li>
      <li>Item 5</li>
    </ul>
  </div>
  </section>
</div>
  <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
  <symbol id="svg-capacity" viewBox="0 0 17.293 20">
    <path d="M2674.323,1341a2.012,2.012,0,1,0-1.437-.575,2,2,0,0,0,1.437.575Zm1.52,1h-3.053a2.012,2.012,0,0,0-2.027,2v5.494h1.52V1357h4.067v-7.507h1.533V1344a2.022,2.022,0,0,0-2.039-2Zm-11.693-1a2,2,0,1,0-2.027-2,2.023,2.023,0,0,0,2.027,2Zm1.52,1h-3.04a2.015,2.015,0,0,0-2.04,2v5.493h1.533V1357h4.067v-7.507h1.52V1344a2.015,2.015,0,0,0-2.04-2Z" transform="translate(-2660.59 -1337)"></path>
  </symbol>  
</svg>

Кто-нибудь знает, как это исправить?

С Уважением


Ответы:


1

У меня была точно такая же проблема, и, наконец, после некоторого поиска, следующее заставило Chrome правильно отображать мои SVG:

-webkit-backface-visibility: hidden;

В приведенном выше коде, если вы добавите следующее, он будет работать:

.block header {
     font-weight: bold;
     padding: 0.5em 0;
     border-bottom: 1px solid grey;
     -webkit-backface-visibility: hidden;
  }
03.12.2019
  • Мой герой :) Отлично. Я попробовал это на svg, но не на заголовке. Спасибо за вашу помощь. 03.12.2019
  • Без проблем :) . 05.12.2019

  • 2

    Это наверняка ошибка, но вот другой код, использующий SVG в качестве фона, чтобы добиться того же без ошибки:

    section {
      width: 500px;
      margin-right: 100px;
      float: left;
    }
    .container {
      border: 1px solid black;
      margin: 0 auto;
      padding: 0.25em;
      margin-top: 1.25em;
    }
    .container.withcolumns {
      column-count: 2;
      column-gap: 2em;
    }
    .block {
      break-inside: avoid-column;
    }
    .block header {
      font-weight: bold;
      padding: 0.5em 18px;
      border-bottom: 1px solid grey;
      background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17.293 20" width="15"> <path d="M2674.323,1341a2.012,2.012,0,1,0-1.437-.575,2,2,0,0,0,1.437.575Zm1.52,1h-3.053a2.012,2.012,0,0,0-2.027,2v5.494h1.52V1357h4.067v-7.507h1.533V1344a2.022,2.022,0,0,0-2.039-2Zm-11.693-1a2,2,0,1,0-2.027-2,2.023,2.023,0,0,0,2.027,2Zm1.52,1h-3.04a2.015,2.015,0,0,0-2.04,2v5.493h1.533V1357h4.067v-7.507h1.52V1344a2.015,2.015,0,0,0-2.04-2Z" transform="translate(-2660.59 -1337)"></path></svg>') left top 0.5em/15px 15px no-repeat;
      
    }
    
    ul,
    li {
      margin: 0;
      padding: 0;
      list-style-type: none;
    }
    li {
      margin: 0.25em 0;
    }
    <section>
    <h1>First block without columns</h1>
    <div class='container'>
      <div class='block'>
        <header>
          Block 1</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>  
          <li>Item 3</li>
        </ul>
      </div>
      <div class='block'>
        <header>Block 2</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>
          
        </ul>
      </div>
      <div class='block'>
        <header>Block 3</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>      
        </ul>
      </div>
      <div class='block'>
        <header>Block 4</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>
          <li>Item 3</li>
          <li>Item 4</li>
          <li>Item 5</li>
        </ul>
      </div>
    </div>
    </section>
    <section>
      <h1>Same code with columns</h1>
    <div class='container withcolumns'>
      <div class='block'>
        <header>
          
          Block 1</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>   
          <li>Item 3</li>
        </ul>
      </div>
      <div class='block'>
        <header>Block 2</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>
        </ul>
      </div>
      <div class='block'>
        <header>Block 3</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>      
        </ul>
      </div>
      <div class='block'>
        <header>Block 4</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>
          <li>Item 3</li>
          <li>Item 4</li>
          <li>Item 5</li>
        </ul>
      </div>
      </section>
    </div>

    25.11.2019
  • Спасибо за помощь, но я не могу использовать svg в качестве фонового изображения. 26.11.2019

  • 3

    В вашей разметке есть ошибка, когда вы закрываете раздел перед закрытием последнего блока. Тем не менее это не решает проблему. Вероятно, это ошибка. Чтобы заставить его работать, я удалил преобразование и пересчитал атрибут d.

    section {
      width: 500px;
      margin-right: 100px;
      float: left;
    }
    .container {
      border: 1px solid black;
      margin: 0 auto;
      padding: 0.25em;
      margin-top: 1.25em;
    }
    .container.withcolumns {
      column-count: 2;
      column-gap: 2em;
    }
    .block {
      break-inside: avoid-column;
    }
    .block header {
      font-weight: bold;
      padding: 0.5em 0;
      border-bottom: 1px solid grey;
    }
    .block header svg {
      width: 15px;
      height: 15px;
      margin-right: 0.5em;
    }
    ul,
    li {
      margin: 0;
      padding: 0;
      list-style-type: none;
    }
    li {
      margin: 0.25em 0;
    }
     <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
      <symbol id="svg-capacity" viewBox="0 0 17.293 20">
        <path d="M13.73,4a2.012,2.012,0,1,0,-1.437,-0.575a2,2,0,0,0,1.437,0.575zm1.52,1h-3.053a2.012,2.012,0,0,0,-2.027,2v5.494h1.52v7.506h4.067v-7.507h1.533v-5.493a2.022,2.022,0,0,0,-2.039,-2zm-11.693,-1a2,2,0,1,0,-2.027,-2a2.023,2.023,0,0,0,2.027,2zm1.52,1h-3.04a2.015,2.015,0,0,0,-2.04,2v5.493h1.533v7.507h4.067v-7.507h1.52v-5.493a2.015,2.015,0,0,0,-2.04,-2z" ></path>
      </symbol>  
    </svg>
    
    
    <section>
      <h1>Same code with columns</h1>
    <div class='container withcolumns'>
      <div class='block'>
        <header>
          <svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>
          Block 1</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>   
          <li>Item 3</li>
        </ul>
      </div>
      <div class='block'>
        <header><svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>Block 2</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>
        </ul>
      </div>
      <div class='block'>
        <header><svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>Block 3</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>      
        </ul>
      </div>
      <div class='block'>
        <header><svg><use href="#svg-capacity" xlink:href="#svg-capacity"></use></svg>Block 4</header>
        <ul>
          <li>Item 1</li>
          <li>Item 2</li>
          <li>Item 3</li>
          <li>Item 4</li>
          <li>Item 5</li>
        </ul>
      </div>
      </div>
    </section>

    25.11.2019
  • Видимо я что-то пропустил. Двойной вызов для кросс-браузерной совместимости? href="#svg-capacity" xlink:href="#svg-capacity" 25.11.2019
  • @Alexandr_TT абсолютно, для кросс-браузерной совместимости 02.12.2019
  • @enxaneta: спасибо за помощь. Проблема в том, что у меня есть несколько возможных svg, и я экспортирую их благодаря Adobe XD, поэтому я не могу изменить код. 02.12.2019
  • Новые материалы

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

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..