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

Горизонтальная прокрутка с сеткой CSS

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

#series {
    display: grid;
    grid-gap: 16px;
    overflow-x: scroll;
    padding: 16px;
    grid-template-columns: repeat(4, 1fr);
    grid-auto-flow: column;
}

Используя это, я получаю ниже вывод

введите описание изображения здесь

Но, знаете, я хочу получить такие же, как «четыре столбца» и полосу прокрутки, чтобы увидеть больше.

В чем проблема.


  • width каждого столбца должен быть динамическим или примерно таким же, как на изображении выше? 16.02.2019
  • Нет, я пробовал использовать grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));, но все остальные элементы, которые не могут быть на экране, не отображаются 17.02.2019
  • Можете ли вы опубликовать ссылку jsfiddle или codepen? Я думаю, что вы должны установить overflow-x: scroll в родительском элементе сетки, а не в сетке. 17.02.2019
  • Я предполагаю, что определение ширины сетки до некоторых, но не всех элементов сетки может оказаться невозможным; то же самое и с flexboxes. 17.02.2019
  • Это мой код codeandbox.io/s/m77m8ory9j, но я не знаю, почему он не работает. 17.02.2019
  • Поскольку ваш минимальный размер элемента сетки составляет 160 пикселей, и если вы можете сохранить этот размер фиксированным, вы можете использовать overflow для элемента-оболочки (ширина которого составляет примерно 4 * 160 пикселей) блока сетки. и grid-auto-flow: column как в вопросе. 17.02.2019

Ответы:


1

Попробуйте вот так:

display: grid;
grid-gap: 16px;
padding: 16px;
grid-template-columns: repeat(auto-fill,minmax(160px,1fr));
grid-auto-flow: column;
grid-auto-columns: minmax(160px,1fr);
overflow-x: auto;

grid-auto-flow: column; заставит сетку добавлять ваши элементы в виде столбцов вместо того, чтобы следовать за свободным пространством.

grid-auto-columns: minmax (160px, 1fr); элементы, добавленные за пределами области просмотра, не соответствуют автоматическому размещению, поэтому они не получат размер, определенный в вашем шаблоне. Поэтому вам нужно снова определить его с помощью grid-auto-columns.

overflow-x: auto; auto добавит полосу прокрутки

18.02.2019
  • Когда я пытался сделать это внутри div, который помещается в заголовок с position: sticky, вся страница прокручивается 03.06.2020
  • @eddy не уверен, что это может относиться к вашей проблеме, без дополнительной информации. Но просмотрите следующую ссылку, чтобы получить несколько советов о комбинации между position: sticky и grid melanie-richards.com/blog/css-grid-sticky/?ref=heydesigner 18.01.2021

  • 2

    Горизонтальная прокрутка контейнеров в правильном направлении! Источник

    :root {
      --gutter: 20px;
    }
    
    .app {
      padding: var(--gutter) 0;
      display: grid;
      grid-gap: var(--gutter) 0;
      grid-template-columns: var(--gutter) 1fr var(--gutter);
      align-content: start;
    }
    
    .app > * {
      grid-column: 2 / -2;
    }
    
    .app > .full {
      grid-column: 1 / -1;
    }
    
    .hs {
      display: grid;
      grid-gap: calc(var(--gutter) / 2);
      grid-template-columns: 10px repeat(6, calc(50% - var(--gutter) * 2)) 10px;
      grid-template-rows: minmax(150px, 1fr);
      
      overflow-x: scroll;
      scroll-snap-type: x proximity;
      padding-bottom: calc(.75 * var(--gutter));
      margin-bottom: calc(-.5 * var(--gutter));
    }
    
    .hs:before,
    .hs:after {
      content: '';
    }
    
    /* Hide scrollbar */
    .hide-scroll {
      overflow-y: hidden;
      margin-bottom: calc(-.1 * var(--gutter));
    }
    
    
    /* Demo styles */
    
    html,
    body {
      height: 100%;
    }
    
    body {
      display: grid;
      place-items: center;
      background: #456173;
    }
    
    ul {
      list-style: none;
      padding: 0;
    }
    
    h1,
    h2,
    h3 {
      margin: 0;
    }
    
    .app {
      width: 375px;
      height: 667px;
      background: #DBD0BC;
      overflow-y: scroll;
    }
    
    .hs > li,
    .item {
      scroll-snap-align: center;
      padding: calc(var(--gutter) / 2 * 1.5);
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      background: #fff;
      border-radius: 8px;
    }
    <div class="app">
      <h1>Some headline</h1>
    
      <div class="full hide-scroll">
    
        <ul class="hs">
          <li class="item">test</li>
          <li class="item">test</li>
          <li class="item">test</li>
          <li class="item">test</li>
          <li class="item">test</li>
          <li class="item">test</li>
        </ul>
    
      </div>
    
      <div class="container">
        <div class="item">
          <h3>Block for context</h3>
        </div>
      </div>
    </div>

    17.02.2019
  • Извините, мне не нравится этот подход, потому что нужно использовать JavaScript для установки количества элементов сетки. Просто установите grid-auto-flow: column; и grid-auto-columns с тем же значением, что и grid-template-columns, и будут работать! 23.06.2021

  • 3

    Ваша проблема в том, что вы используете блок 1fr. Вместо этого введите 25% (используйте расчет для любых зазоров). Это изменит размер ваших столбцов относительно доступной ширины экрана. Конечно, вы также должны применить 25% к сетке-автоматическим столбцам.

    10.10.2020

    4

    Думаю, в этой средней статье есть ответ: https://uxdesign.cc/creating-horizontal-scrolling-containers-the-right-way-css-grid-c256f64fc585

    В основном это сводится к тому, что отдельные карты должны иметь фиксированную ширину вместо динамической, чтобы браузер не сжимал их вместе.

    16.02.2019
  • Братан, я пробовал с grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));, но у меня не появляется полоса прокрутки, такая же, как и другие элементы, не существует 16.02.2019

  • 5

    попробуй это:

    .container{
       display: grid;
       grid-auto-columns: max-content;
       grid-template-rows: 1fr;
       width: 100%;
       overflow-x: auto;
     }
    .child{
       grid-row: 1;
       grid-column: auto;
      }
    
    22.06.2021
    Новые материалы

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

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

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

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

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

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

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