Může být CSS column-fill použít při rozdělování určité sloupce?

hlasů
1

Nedávno jsem byl snaží využít šikovný pod používaný majetek column-fill: balance, když jsem si všiml, něco trochu zvláštního. Některé ze sloupů jsem distribuovaných takto vypadala opravdu zvláštní, protože z posledních vlečných položky. Čekal jsem, že něco takového:

Test Test Test Test

Test Test Test Test

test test

Ale místo toho jsem dostal výsledek, jako je tento:

Test Test Test Test

Test Test Test

Test Test Test

Z pohledu designéra, že to nebude létat ... Vzal jsem se na W3 specifikace a všiml si, že očekávají tento výsledek, ale nenabízejí žádné řešení pro něj. To je pro mě myslím, že to asi nijak explicitně použít column-fillk dosažení tohoto cíle, ale zajímalo by mě, jestli existuje nějaký zajímavý css trik mohu použít k dosažení tohoto cíle, a to buď společně column-fill, nebo s gridnebo flexboxmísto.

Pamatujte : jedná se o 4 kolony s 3 řádky každý, ne 3 řadách 4 sloupcích každý. Vím, že jen jeden z rodičů síť by nejprve očekávat řádky. Také flex-wraps max-heightbude mít podobný problém jako výše, a to by bylo méně flexibilní, protože by to vyžadovalo explicitní výšky.

Za předpokladu, že následující soubory HTML, může to být provedeno bez dalšího šablony psát?

<div class=container>
  <p class=item>Test</p>
  <p class=item>Test</p>
  <p class=item>Test</p>
  <p class=item>Test</p>
  <p class=item>Test</p>
  <p class=item>Test</p>
  <p class=item>Test</p>
  <p class=item>Test</p>
  <p class=item>Test</p>
  <p class=item>Test</p>
</div>
Položena 10/10/2019 v 00:37
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Stručná odpověď zní ne, to není možné column-fill, a vy nemůžete nic použít vedle ní jeden. Měl jsem tušení.

Podle W3 specifikace , očekávají, že tento výsledek, a to se objeví column-fillnemovitost nabízí jinou možnost, aby byl průtok nějak jinak.

Jak zdůraznila LGSon v komentářích, můžete použít flexbox místo . Můžete nastavit počet sloupců flexboxjednoduše pomocí šířku procento na každé položce. Klíčovým rozdílem je, flexboxrozděluje položky jinak než column-fillv přesně požadovaným způsobem uvedeným v této otázce.

*{margin: 0;}

.container {
  display: flex;
  flex-wrap: wrap;
}
.item {
  width: 25%;
}
<div class="container">
  <p class="item">Test</p>
  <p class="item">Test</p>
  <p class="item">Test</p>
  <p class="item">Test</p>
  <p class="item">Test</p>
  <p class="item">Test</p>
  <p class="item">Test</p>
  <p class="item">Test</p>
  <p class="item">Test</p>
  <p class="item">Test</p>
</div>

Odpovězeno 10/10/2019 v 20:44
zdroj uživatelem

hlasů
0

Můžete použít tento kód

   
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <title>Hello, world!</title>
    <style type="text/css">
        body {
            margin: 0;
            padding: 0;
        }
        .main {
            -webkit-column-count: 4;
            -moz-column-count: 4;
            column-count: 4;
            height: auto;
            background-color: #eeeeee;
            padding: 15px;
        }        
        .item {
            -moz-column-fill: auto;
            column-fill: auto;
            background-color: #ffffff;
        }              
    </style>
</head>
<body>
    <div class="container">
        <div class="main">
            <p class="item">Test</p>
            <p class="item">Test</p>
            <p class="item">Test</p>
            <p class="item">Test</p>
            <p class="item">Test</p>
            <p class="item">Test</p>
            <p class="item">Test</p>
            <p class="item">Test</p>
            <p class="item">Test</p>
            <p class="item">Test</p>
        </div>
    </div>
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>

Odpovězeno 10/10/2019 v 11:36
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more