Stół do ładowania bez paska / obramowań

191

Trochę utknąłem z problemem CSS podczas korzystania z Bootstrap. Używam również Angular JS z Angular UI.bootstrap (co może być częścią problemu).

Tworzę stronę internetową, która wyświetla dane w tabeli. Czasami dane zawierają obiekt, który muszę wyświetlić w tabelach. Dlatego chcę umieścić tabele bez obramowania w normalnym stole, zachowując wewnętrzne linie separacji dla tabel bez obramowania.

Ale wydaje się, że nawet jeśli wyraźnie powiem, aby nie pokazywać granic na stole, jest to wymuszone:

HTML:

<table class='table borderless'>

CSS:

.borderless table {
    border-top-style: none;
    border-left-style: none;
    border-right-style: none;
    border-bottom-style: none;
}

Więc tutaj chcę tylko wewnętrznych granic.

Romain
źródło
1
Jakiej wersji Bootstrap używasz?
Martin Bean,
2
Używam bootstrap 2.3.1
Romain
z bootstrap 4: .borderless tr td, .borderless tr th {border: none;}
Jewhenii Szaszkow

Odpowiedzi:

286

Obramowanie jest ustawione na tdelementach.

HTML:

<table class='table borderless'>

css:

.borderless td, .borderless th {
    border: none;
}

Aktualizacja: Od wersji Bootstrap 4.1 możesz .table-borderlessusunąć obramowanie.

https://getbootstrap.com/docs/4.1/content/tables/#borderless-table

Brett Henderson
źródło
11
Uwaga: należy również dodać .borderless th, ponieważ dotyczy to <th>również stylu Bootstrap .
Benjamin,
11
Jeśli używasz Bootstrap 3, sprawdź moją odpowiedź .
Davide Pastore
42
Musiałem dodać granicę: brak! Ważne; aby działało.
Srikanth Jeeva
@ SrikanthJeeva .. lub po prostu dodajesz styl css zgodnie z linią style=lub umieszczasz go w niestandardowym pliku i upewniasz się, że jest on ładowany później niż plik css Bootstrap , aby zastąpić domyślny styl Bootstrap. CSS są ładowane z zamówieniem; ten drugi zastępuje ten pierwszy, im bardziej konkretny, tym bardziej ogólny.
WesternGun,
1
Dla boostrap> 4.1 użyj <table class='table table-borderless'>na Max poniżej
grobowiec
339

Korzystając z Bootstrap 3.2.0 miałem problem z rozwiązaniem Brett Henderson (zawsze były tam granice), więc go poprawiłem:

HTML

<table class="table table-borderless">

CSS

.table-borderless > tbody > tr > td,
.table-borderless > tbody > tr > th,
.table-borderless > tfoot > tr > td,
.table-borderless > tfoot > tr > th,
.table-borderless > thead > tr > td,
.table-borderless > thead > tr > th {
    border: none;
}
Davide Pastore
źródło
2
Nie zapomnij o thelemencie w ciele: .borderless tbody tr th(jak w przykładach )
Wietse
2
@DavidePastore Jeśli dotyczy to tylko tabel, być może poprzedza je .table-, tak jak Bootstrap 3 w przypadku innych klas związanych z tabelami (na przykład table-stripeditp.). Tak będzie nazwa table-borderless.
arogachev
1
Działa z wersją 4.0.0-alpha.2. Dzięki!
Dominofoe
Nadal otrzymywałem obramowanie wzdłuż dolnej części tabeli, dopóki nie dodałem .table-borderless,na początku specyfikacji tego stylu.
Christopher King
Nie widzę table-borderlessw tym dokumencie getbootstrap.com/docs/3.3/css/#tables . Skąd to przyszło?
Arup Rakshit
24

podobne do pozostałych, ale bardziej szczegółowe:

    table.borderless td,table.borderless th{
     border: none !important;
}
Sam Jones
źródło
Nie powinieneś mieć znaczenia w .table.borderless
Nie
@Sam Jones - Czy to wpływa na cały stół? Chcę, aby niektóre wiersze miały dolną ramkę. Chcę odejść od granicy.
MarcoZen,
! ważne jest bardzo ważne
FLICKER
18

Nie dodawaj .tableklasy do <table>tagu. Z dokumentów Bootstrap w tabelach :

Do podstawowej stylizacji - lekkiej wyściółki i tylko poziomych przekładek - dodaj klasę podstawową .tabledo dowolnej <table>. Może się to wydawać zbędne, ale biorąc pod uwagę powszechne użycie tabel w innych wtyczkach, takich jak kalendarze i selektory dat, zdecydowaliśmy się wyodrębnić nasze niestandardowe style tabel.

Martin Bean
źródło
Nawet tak: html: <table class = 'borderless'> css: .borderless {border: none; } To nie działa.
Romain,
2
Sugerowałbym wtedy użycie Inspektora sieci w Chrome i sprawdzenie, gdzie stosowane są jakiekolwiek obramowania, ponieważ tabele domyślnie nie mają obramowań podczas używania Bootstrap do współdziałania z innymi komponentami, takimi jak wybieracze dat itp.
Martin Bean
6
Działa to świetnie, po prostu używam „tabeli skondensowanej” i innych wariantów bez klasy „tabeli” i pozbyłem się granic. Świetna wskazówka, ponieważ doktorzy mnie tam trochę rzucić.
chrismacp
5

W moim CSS:

.borderless tr td {
    border: none !important;
    padding: 0px !important;
}

W mojej dyrektywie:

<table class='table borderless'>
    <tr class='borderless' ....>

Nie umieściłem „bez obramowania” dla elementu td.

Przetestowane i działało! Wszystkie obramowania i wypełnienia są całkowicie zdjęte.

Daniel C. Deng
źródło
4

Rozszerzyłem style tabel Bootstrap, jak zrobił to Davide Pastore, ale dzięki tej metodzie style są również stosowane do wszystkich tabel potomnych i nie mają zastosowania do stopki.

Lepszym rozwiązaniem byłoby naśladowanie podstawowych stylów tabeli Bootstrap, ale z nową klasą:

.table-borderless>thead>tr>th
.table-borderless>thead>tr>td
.table-borderless>tbody>tr>th
.table-borderless>tbody>tr>td
.table-borderless>tfoot>tr>th
.table-borderless>tfoot>tr>td {
    border: none;
}

Wtedy, gdy użyjesz <table class='table table-borderless'>tylko określonej tabeli z klasą, zostanie ona otoczona, a nie jakakolwiek tabela w drzewie.

shellco
źródło
3

Spróbuj tego:

<table class='borderless'>

CSS

.borderless {
 border:none;
}

Uwaga: To, co robiłeś wcześniej, nie działało, ponieważ Twój kod css był kierowany na tabelę w tabeli .borderless (która prawdopodobnie nie istniała)

Danield
źródło
3

Wiem, że to stary wątek i wybrałeś odpowiedź, ale pomyślałem, że opublikuję to, ponieważ jest to istotne dla każdego, kto obecnie szuka.

Nie ma powodu, aby tworzyć nowe reguły CSS, po prostu cofnij obecne reguły, a ramki znikną.

    .table> tbody> tr> th,
    .table> tbody> tr> td {
        border-top: 0;
    }

idąc naprzód, wszystko w stylu

    .stół

nie pokaże granic.

Don Escobar
źródło
2

Skorzystaj z border-klasy z Boostrap 4

<td class="border-0"></td>

lub

<table class='table border-0'></table>

Pamiętaj, aby zakończyć wprowadzanie klasy ostatnią zmianą, którą chcesz wprowadzić.

Steffo Dimfelt
źródło
1

Ten działał dla mnie.

<td style="border-top: none;">;

Kluczem jest to, że musisz dodać obramowanie do <td>

Używane samochody
źródło
4
Wbudowane atrybuty CSS są uważane za złą praktykę .
Martin van Driel,
1

Spóźniłem się tutaj na grę, ale FWIW: dodanie .table-bordereddo .tablewłaśnie owija tabelę ramką, aczkolwiek poprzez dodanie pełnej ramki do każdej komórki.

Ale usunięcie .table-borderednadal pozostawia linie reguł. To kwestia semantyczna, ale zgodnie z nomenklaturą BS3 + użyłem tego zestawu przesłonięć:

.table.table-unruled>tbody>tr>td,
.table.table-unruled>tbody>tr>th {
  border-top: 0 none transparent;
  border-bottom: 0 none transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<div class="container">
  <div class="row">
    <div class="col-xs-5">
      .table
      <table class="table">
        <thead>
          <tr>
            <th>a</th>
            <th>b</th>
            <th>c</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>a</td>
            <td>b</td>
            <td>c</td>
          </tr>
          <tr>
            <td>a</td>
            <td>b</td>
            <td>c</td>
        </tbody>
        <tfoot>
          <tr>
            <th>a</th>
            <th>b</th>
            <th>c</th>
          </tr>
        </tfoot>
      </table>
    </div>
    <div class="col-xs-5 col-xs-offset-1">
      <table class="table table-bordered">
        .table .table-bordered
        <thead>
          <tr>
            <th>a</th>
            <th>b</th>
            <th>c</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>a</td>
            <td>b</td>
            <td>c</td>
          </tr>
          <tr>
            <td>a</td>
            <td>b</td>
            <td>c</td>
        </tbody>
        <tfoot>
          <tr>
            <th>a</th>
            <th>b</th>
            <th>c</th>
          </tr>
        </tfoot>
      </table>
    </div>
  </div>

  <div class="row">
    <div class="col-xs-5">
      <table class="table table-unruled">
        .table .table-unruled
        <thead>
          <tr>
            <th>a</th>
            <th>b</th>
            <th>c</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>a</td>
            <td>b</td>
            <td>c</td>
          </tr>
          <tr>
            <td>a</td>
            <td>b</td>
            <td>c</td>
        </tbody>
        <tfoot>
          <tr>
            <th>a</th>
            <th>b</th>
            <th>c</th>
          </tr>
        </tfoot>
      </table>
    </div>
    <div class="col-xs-5 col-xs-offset-1">
      <table class="table table-bordered table-unruled">
        .table .table-bordered .table-unruled
        <thead>
          <tr>
            <th>a</th>
            <th>b</th>
            <th>c</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>a</td>
            <td>b</td>
            <td>c</td>
          </tr>
          <tr>
            <td>a</td>
            <td>b</td>
            <td>c</td>
        </tbody>
        <tfoot>
          <tr>
            <th>a</th>
            <th>b</th>
            <th>c</th>
          </tr>
        </tfoot>
      </table>
    </div>
  </div>

</div>

fnostro
źródło
1

Posługiwać się hidden zamiast none:

.hide-bottom {
    border-bottom-style: hidden;
}
dev pro
źródło
1

Większość przykładów wydaje się być zbyt specyficzna i / lub rozdęta.

Oto moje ograniczone rozwiązanie za pomocą Bootstrap 4.0.0 (4.1 zawiera .table-borderlessale wciąż alfa) ...

.table-borderless th{border:0;}
.table-borderless td{border:0;}

Podobne do wielu proponowanych rozwiązań, ale minimalne bajty 😉

Uwaga: skończyłem tutaj, ponieważ przeglądałem referencje BS4.1 i nie mogłem zrozumieć, dlaczego .table-borderlessnie działa z moimi źródłami 4.0 (np .: błąd operatora, duh) 💩

Mavelo
źródło
Korekta: 4.1 nie jest alfą. Zakładam, że było tak, ponieważ nie korzystałem z tej wersji 🤣
Mavelo,
1

W niektórych przypadkach należy również użyć odstępów między ramkami w klasie tabeli, takich jak:

odstępy między krawędziami: 0! ważne;

GARPENHOLM
źródło
0

Zainstaluj bootstrap z linkiem npm lub cdn

<table class="table table-borderless">
<thead>
<tr>
  <th scope="col">#</th>
  <th scope="col">First</th>
  <th scope="col">Last</th>
  <th scope="col">Handle</th>
</tr>
</thead>
<tbody>
<tr>
  <th scope="row">1</th>
  <td>Mark</td>
  <td>Otto</td>
  <td>@mdo</td>
</tr>
<tr>
  <th scope="row">2</th>
  <td>Jacob</td>
  <td>Thornton</td>
  <td>@fat</td>
  </tr>
  <tr>
  <th scope="row">3</th>
    <td colspan="2">Larry the Bird</td>
    <td>@twitter</td>
   </tr>
 </tbody>
</table>

uzyskaj referencję z tym linkiem

sanjay
źródło