cari

Rumah  >  Soal Jawab  >  teks badan

CSS nth-chlld hanya berfungsi pada elemen yang kelihatan?

Saya tahu :nth-child sebenarnya sedang menyemak "kanak-kanak" vs "kanak-kanak kelihatan", tetapi adakah terdapat pemilih yang mengendalikan kanak-kanak yang kelihatan?

Andaikan saya mempunyai meja dan saya menetapkan baris ganjil kepada warna yang berbeza

Saya mempunyai penapis carian yang menyembunyikan baris yang tidak sepadan dengan carian. Sekarang apabila saya mencari, baris tidak lagi bertukar warna.

Sudah tentu saya boleh menambah/mengalih keluar kelas pada setiap elemen, yang pada asasnya saya sudah lakukan untuk menyembunyikan/menunjukkannya, tetapi saya fikir saya akan bertanya sama ada terdapat cara CSS untuk melakukan ini.

const searchElem = document.querySelector('input');
const tableElem = document.querySelector('table');

function search() {
  const str = searchElem.value.toLowerCase();
  const rows = tableElem.querySelectorAll('tr');

  rows.forEach(function(row){
    const text = row.textContent.toLowerCase();
    if (str.length && !text.includes(str)) {
      row.classList.add('hide');
    } else {
      row.classList.remove('hide');
    }
  });
}

searchElem.addEventListener('keyup', search);
tr {
  background-color: #CDF;
}

tbody>tr:nth-child(odd) {
  background-color: #DEF;
}

thead>tr {
  background-color: lightgreen;
}

.hide {
  display: none;
}
<input type="search" placeholder="search">
<table>
  <thead>
    <tr><td>Name</td><td>Amount</td></tr>
  </thead>
  <tbody>
    <tr><td>Apple</td><td>220</td></tr>
    <tr><td>Watermelon</td><td>465</td></tr>
    <tr><td>Orange</td><td>94</td></tr>
    <tr><td>Pear</td><td>567</td></tr>
    <tr><td>Cherry</td><td>483</td></tr>
    <tr><td>Strawberry</td><td>246</td></tr>
    <tr><td>Nectarine</td><td>558</td></tr>
    <tr><td>Grape</td><td>535</td></tr>
    <tr><td>Mango</td><td>450</td></tr>
    <tr><td>Blueberry</td><td>911</td></tr>
    <tr><td>Pomegranate</td><td>386</td></tr>
    <tr><td>Carambola</td><td>351</td></tr>
    <tr><td>Plum</td><td>607</td></tr>
    <tr><td>Banana</td><td>292</td></tr>
    <tr><td>Raspberry</td><td>912</td></tr>
    <tr><td>Mandarin</td><td>456</td></tr>
    <tr><td>Jackfruit</td><td>976</td></tr>
    <tr><td>Papaya</td><td>200</td></tr>
    <tr><td>Kiwi</td><td>217</td></tr>
    <tr><td>Pineapple</td><td>710</td></tr>
    <tr><td>Lime</td><td>983</td></tr>
    <tr><td>Lemon</td><td>960</td></tr>
    <tr><td>Apricot</td><td>647</td></tr>
    <tr><td>Grapefruit</td><td>861</td></tr>
    <tr><td>Melon</td><td>226</td></tr>
    <tr><td>Coconut</td><td>868</td></tr>
    <tr><td>Avocado</td><td>385</td></tr>
    <tr><td>Peach</td><td>419</td></tr>
  </tbody>
</table>

P粉077701708P粉077701708330 hari yang lalu405

membalas semua(1)saya akan balas

  • P粉245489391

    P粉2454893912024-01-30 09:27:08

    Tiada pemilih, tetapi jika anda bersedia menerima penyelesaian khusus untuk kes ini, maka anda boleh bergantung pada kecerunan seperti ini:

    const searchElem = document.querySelector('input');
    const tableElem = document.querySelector('table');
    
    function search() {
      const str = searchElem.value.toLowerCase();
      const rows = tableElem.querySelectorAll('tr');
    
      rows.forEach(function(row){
        const text = row.textContent.toLowerCase();
        if (str.length && !text.includes(str)) {
          row.classList.add('hide');
        } else {
          row.classList.remove('hide');
        }
      });
    }
    
    searchElem.addEventListener('keyup', search);
    thead>tr {
      background-color: lightgreen;
    }
    
    .hide {
      display: none;
    }
    
    table {
      position:relative; /* relative to all the table */
      z-index: 0;
    }
    td {
      line-height: 1.2em; /* the height */
      clip-path: inset(0); /* clip the pseudo element to td */
    }
    tbody td:before {
      content: "";
      position: absolute;
      z-index: -1;
      inset: 0;
      background:
        repeating-linear-gradient(
          #CDF  0 calc(1.2em + 4px), /* height   + 2*border-spacing */
          #DEF  0 calc(2.4em + 8px)  /* 2*height + 4*border-spacing */
        ); 
    }
    
    
    NameAmount
    Apple220
    Watermelon465
    Orange94
    Pear567
    Cherry483
    Strawberry246
    Nectarine558
    Grape535
    Mango450
    Blueberry911
    Pomegranate386
    Carambola351
    Plum607
    Banana292
    Raspberry912
    Mandarin456
    Jackfruit976
    Papaya200
    Kiwi217
    Pineapple710
    Lime983
    Lemon960
    Apricot647
    Grapefruit861
    Melon226
    Coconut868
    Avocado385
    Peach419

    balas
    0
  • Batalbalas