Potrzebuję prostego rozwiązania. Wiem, że jest podobny do niektórych innych pytań, takich jak:
- Tabela HTML ze stałymi nagłówkami i stałą kolumną?
- Jak mogę zablokować pierwszy wiersz i pierwszą kolumnę tabeli podczas przewijania, prawdopodobnie używając JavaScript i CSS?
Ale potrzebuję tylko jednej lewej kolumny do zamrożenia i wolałbym proste rozwiązanie bez skryptów.
html
css
html-table
agsamek
źródło
źródło
Odpowiedzi:
Jeśli chcesz tabeli, w której tylko kolumny przewijane są w poziomie, możesz
position: absolute
pierwszą kolumnę (i wyraźnie określić jej szerokość), a następnie zawinąć całą tabelę woverflow-x: scroll
blok. Nie zawracaj sobie głowy próbowaniem tego w IE7, jednak ...Odpowiednie HTML i CSS:
Skrzypce
źródło
text-overflow: ellipsis
do czystego wyświetlania.To ciekawa wtyczka jQuery, która tworzy stałe nagłówki i / lub kolumny . Przełącz stałą kolumnę, aby była prawdziwa na stronie demonstracyjnej, aby zobaczyć ją w akcji.
źródło
Możesz użyć
sticky
pozycji. Oto przykładowy kod. To jest rozwiązanie HTML / CSS. Nie jest wymagane js.Kod rozruchowy: https://www.bootply.com/g8pfBXOcY9
źródło
W przypadku lewej kolumny o stałej szerokości najlepsze rozwiązanie zapewnia Eamon Nerbonne .
W przypadku lewej kolumny o zmiennej szerokości najlepszym rozwiązaniem, jakie znalazłem, jest utworzenie dwóch identycznych tabel i przesunięcie jednej nad drugą. Demo: http://jsfiddle.net/xG5QH/6/ .
źródło
seperate
zawijanie granicy na bootstap, w przeciwnym razie granice nie będą się unosić z komórkami. Po tym wymagane jest trochę czyszczenia granic.visibility: collapse;
do kolumn, aby ukryć się przed ustaloną tabelą (muszę pokochać:not()
selektor css! ). Użyłem również jQuery do.clone()
tabeli, gdy zostanie ona wygenerowana przez php + MySQL + ajax i wstawię ją do oczyszczonego div ...FWIW, oto stół, który można przewijać ze stałą i boczną głową.
http://codepen.io/ajkochanowicz/pen/KHdih
źródło
Trochę późno, ale natknąłem się na ten wątek, gdy szukałem rozwiązań dla siebie. Zakładając, że używasz obecnie nowoczesnych przeglądarek, opracowałem rozwiązanie wykorzystujące CSS calc (), aby zagwarantować spełnienie szerokości.
Mam nadzieję, że to komuś pomoże!
źródło
<br/>
w<th>
elemencie?Styl lewą kolumnę za pomocą
position: fixed
. (Prawdopodobnie będziesz chciał używaćtop
ileft
stylów, aby kontrolować, gdzie dokładnie się pojawi.)źródło
position: fixed
i pozostaje na swoim miejscu, reszta treści działa normalnie (prawdopodobnie z ustawionym lewym marginesem, aby nie zachodziła na lewą kolumnę).W przypadku większości przeglądarek wydanych po 2017 r .:
Możesz użyć
position: sticky
. Zobacz https://caniuse.com/#feat=css-sticky .Nie ma potrzeby stosowania kolumny o stałej szerokości.
Uruchom poniższy fragment kodu, aby zobaczyć, jak to działa.
źródło
sticky
, więc nie trzeba jej więcejposition: sticky
zmienia swojego zachowania, dlatego użycie go zostało już pokazane.Wziąłem odpowiedź Earmona Nerbonne i zredagowałem ją do pracy z tabelami, które wypełniają całą szerokość.
http://jsfiddle.net/DYgD6/6/
Szerokość stałej kolumny musi jednak nadal być wartością ustawioną.
źródło
Jeśli tworzysz coś bardziej skomplikowanego i chcesz naprawić / zablokować wiele kolumn po lewej stronie, prawdopodobnie potrzebujesz czegoś takiego.
źródło
Jeśli jesteś w piekle Webdevelopera i musisz sprawić, by działał w IE6, oto przykładowy kod, którego użyłem:
Działa to prawdopodobnie TYLKO dla IE6, więc używaj komentarzy warunkowych dla CSS.
źródło
Nie trzeba dodawać żadnych wtyczek, CSS może wykonać tę pracę !!!
Chodzi o to, aby położenie wszystkich pierwszych komórek w każdej kolumnie było bezwzględne, a szerokość stała. Dawny:
Ukrywa to niektóre części niektórych kolumn pod pierwszą kolumną, więc dodaj pustą drugą kolumnę (dodaj drugą pustą td) o szerokości takiej samej jak pierwsza kolumna.
Testowałem i działa to w Chrome i Firefox.
źródło
Eamon Nerbonne, zmieniłem trochę css w twoim kodzie i teraz jest lepiej (pasek przewijania zaczyna się od pierwszego rzędu)
http://jsfiddle.net/At8L8/
Dodałem tylko dwie linie:
źródło
Możesz po prostu zrobić pierwszą kolumnę
position: sticky; z-index: 9
. Sprawi, że kolumna / wiersz pozostanie w bieżącej pozycji. Sprawdź mój przykład codepen tutaj https://codepen.io/swastikmishra/pen/zYYdKBQPrzykład HTML
źródło
Opera wypaczała wszystkie poprzednie odpowiedzi, kiedy testowałem je na moim komputerze Mac. Jeśli przewijasz tabelę, stała kolumna znika po przejściu pierwszej niezmienionej kolumny. Poszedłem naprzód i napisałem poniższy kod. Działa we wszystkich przeglądarkach, które zainstalowałem lokalnie. Nie wiem jednak jak sobie z tym poradzić.
Pamiętaj tylko, że jeśli zamierzasz pomijać wiersze w jednej tabeli, a nie drugiej, lub zmieniać wysokości wierszy, być może będziesz musiał dostosować ten kod.
źródło
Oto kolejna modyfikacja najpopularniejszej odpowiedzi, ale z obsługą zmiennej długości tekstu w etykietach pierwszej kolumny: http://jsfiddle.net/ozx56n41/
Zasadniczo używam drugiej kolumny do tworzenia wysokości wiersza, jak już wspomniano. Ale moje skrzypce faktycznie działa inaczej niż większość wspomnianych powyżej.
HTML:
CSS:
źródło
Dla mnie był to jedyny, który działał idealnie (dzięki Paulowi O'Brien!): Https://codepen.io/paulobrien/pen/gWoVzN
Oto fragment:
źródło
Alternatywnie, stylizuj body o ustalonym rozmiarze (
height:20em
na przykład przez) i użyjoverflow-y:scroll;
Następnie możesz mieć ogromną osobę, która przewinie się niezależnie od reszty strony.
źródło
źródło
Można to łatwo zrobić za pomocą danych. Osoby, które są nowe w tabelach danych, zapoznaj się z https://datatables.net/ .Jest to wtyczka i oferuje wiele funkcji. W podanym kodzie nagłówek jest stały, pierwsze 3 kolumny są naprawione, a kilka innych funkcji jest również tam.
źródło
Nie sprawdziłem każdej odpowiedzi na to pytanie, ale po przeanalizowaniu większości z nich odkryłem, że projektowanie kończy się niepowodzeniem w przypadku danych wielowierszowych w komórkach lub głowie. Użyłem Javascript, aby rozwiązać ten problem. Mam nadzieję, że ktoś uzna to za pomocne.
https://codepen.io/kushagrarora/pen/zeYaoY
Uwaga: div „pojemnik” służy tylko do wykazania, że kod jest zgodny z widokiem mobilnym.
źródło
Właśnie zrobiłem najbardziej kleistą kolumnę tabeli najlepiej.
Wierzę, że jeśli to zrobisz
{position: sticky; left: 0;}
, uzyskasz pożądany rezultat.źródło
sticky
nie jest obsługiwany przez IE.Jeśli nie chcesz zbyt mocno dotykać bieżącego stołu, możesz zrobić fałszywą przypiętą kolumnę przed stołem.
Przykład pokazuje jeden ze sposobów wykonania tego bez JS
źródło
W HTML5 możesz używać CSS
style.transform
.Polecam jednak „przesuwanie między stronami” wyłącz, jeśli zaimplementujesz na Macu.
spójrz na przykładowy codePen
źródło
Dodaj to do głowy:
JavaScript:
źródło