cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk membuat elemen mengisi bekasnya menggunakan CSS?

Bagaimana kita boleh membuat elemen margin mengisi item Flexbox yang bukan Flexbox itu sendiri?

Elemen (walaupun elemen bersarang dengan jidar) boleh mengisi bekasnya dengan mudah menggunakan position:absolute - jika ia bukan di dalam projek Flexbox. Mengapa ini tidak berfungsi untuk elemen dalam projek Flexbox?

<main>
  <nav>NAV</nav>
  <section>
    <div>DIV</div>
  </section>
</main>


<style>

html, body {
  position:absolute; top:0; left:0; right:0; bottom:0;
  margin: 0;
}

main {
  position:absolute; top:0; left:0; right:0; bottom:0;
  display: flex;
}

nav {
  flex-basis: 250px;
  background-color: #eee;
}

section {
  flex-basis: 100%;
  background-color: #ccc;
  margin: 10px;
}

div {
  /* position:absolute; top:0; left:0; right:0; bottom:0; */
  /* why doesn't the above line work? */

  background-color: #cfc;
  margin: 10px;
}

</style>

Terdapat banyak soalan serupa seperti ini dan soalan ini yang sebenarnya tidak sesuai untuk item di dalam kotak flex atau item dengan jidar. Terdapat banyak penyelesaian kes khas, seperti align-self:stretchheight:100%box-sizing:border-box 在本例中不起作用,因为嵌套的 margin atau fakta bahawa Flexbox sendiri tidak bersarang. Masalah terus timbul dengan penggodam satu kali ini...

Jadi apakah cara umum untuk mengisi projek Flexbox? position:absolute Apa masalahnya di sini? Apakah cara paling umum untuk mempunyai elemen mengisi bekasnya?

P粉514458863P粉514458863281 hari yang lalu407

membalas semua(2)saya akan balas

  • P粉333395496

    P粉3333954962024-02-22 16:22:19

    Berikut adalah beberapa idea yang mungkin anda fikir berbaloi untuk diterokai? Saya akan nav 作为 main 的兄弟而不是孩子。这对于 CSS 来说不是必需的,但结构最有意义。理想情况下,您有 headernav``mainfooter,也可能有 aside. Anda benar-benar mahu mengelakkan semua kedudukan mutlak. Ia tidak dimainkan dengan baik pada mudah alih - bayangkan apa yang akan berlaku jika anda meletakkan kotak teks atau kawasan teks pada halaman dan pengguna mudah alih mengklik padanya dan papan kekunci lembut muncul.

    body {
      display: grid;
      grid-template-columns: [left] 196px [main] 1fr [right];
      grid-template-rows: [top] 1fr [bottom];
      grid-gap: 4px;
      outline: 1px dashed #616161;
      min-height: 100vh;
      min-width: 0;
    }
    body > nav {
      outline: 1px dashed red;
      grid-column-start: left;
      grid-column-end: main;
      grid-row-start: top;
      grid-row-end: bottom;
    }
    body > main {
      outline: 1px dashed blue;
      grid-column-start: main;
      grid-column-end: right;
      grid-row-start: top;
      grid-row-end: bottom;
      display: flex;
      flex-flow: column nowrap;
    }
    section {
      flex: 1 1 auto;
      display: flex;
      flex-flow: column nowrap;
    }
    div {
      flex: 1 1 auto;
      margin: 4px;
      outline: 1px dotted green;
      min-height: auto;
    }
    
    
    DIV

    balas
    0
  • P粉071602406

    P粉0716024062024-02-22 14:47:35

    DIV

    balas
    0
  • Batalbalas