chevron-left chevron-right

Piotr Nalepa Frontend, architektura i AI

[CSS] Garść przydatnych tricków CSS

Ta wersja
blog.piotrnalepa.pl/2012/05/19/css-garsc-przydatnych-trickow-css
Opublikowano
Autor
, Staff Software Engineer
Kategoria
CSS
Uwagi
Napisz do mnie · Napisz na X

Ten wpis ma 14 lat. Od tego czasu przeglądarki i narzędzia mogły się zmienić, więc zanim użyjesz kodu, sprawdź go z aktualną dokumentacją.

W dzisiejszym wpisie zostanie zaprezentowanych kilka ciekawych tricków CSS, które można wykorzystać podczas tworzenie layoutu stron WWW. Będą one obejmowały różne zagadnienia.

Sekcja 1Text-overflow: ellipsis - czyli jak zmieścić zbyt długi tekst w małej przestrzeni

Przykład text-overflow z CSS

Czasami zapewne spotykasz się z problemem, że potrzebujesz zmieścić cały tekst w jednej linijce. Bywa że, tekst jest po prostu za długi aby się zmieścił w niej i należałoby skrócić. Więc zostają 2 wyjścia: napisać krótszy tekst lub go obciąć.
Za pomocą CSS i text-overflow jesteśmy w stanie to zrobić bez korzystania z jakichkolwiek innych języków.

Przykład 1CSS
1
2
3
4
5
6
7
8
h3 {
	text-overflow: ellipsis;
	-o-text-overflow: ellipsis;
	-webkit-text-overflow: ellipsis;
	width: 300px;
	white-space: nowrap;
	overflow: hidden;
}

Sekcja 2Box-sizing - koniec problemów z modelem pudełka w CSS

Wielokrotnie, podczas tworzenia stron WWW spotykamy się z problemem obliczeń szerokości i wysokości elementów, tak aby wszystko do siebie pasowało. Wpływ na szerokość elementu miały zarówno padding jak i border. Od dzisiaj można zapomnieć, że taki problem w ogóle istniał, ponieważ możemy zastosować box-sizing, który będzie zachowywał wybraną szerokość, a padding i border będą się automatycznie zawierały w szerokości elementu.

Przykład 2CSS
1
2
3
4
5
6
7
8
9
10
11
12
#box-sizing {
	width: 300px;
	padding: 20px;
	height: 200px;
	display: block;
	background: #eee;
	border: 1px solid #ddd;
	overflow: hidden;
	-moz-box-sizing: border-box; 
	-webkit-box-sizing: border-box; 
	box-sizing: border-box;
}
Przykład box-sizing

Dobrym zwyczajem jest ustawienie box-sizing dla wszystkich elementów strony WWW, lecz należy pamiętać o tym, że w takich przypadkach dodatki tworzone przez osoby trzecie mogą wyglądać nie tak jak powinny, ponieważ opierały się o stary model pudełka CSS. W takiej sytuacji, należy przebudować kod CSS tak, aby uwzględniał nową rzeczywistość.

Przykład 3CSS
1
2
3
4
5
* {
	-moz-box-sizing: border-box; 
	-webkit-box-sizing: border-box; 
	box-sizing: border-box;
}

Sekcja 3Image replacement - Nowy sposób na ukrywanie tekstu pod obrazkiem

Czasami, tworząc strony chcielibyśmy wykorzystać obrazki zamiast tekstu, np. w menu. Zazwyczaj wykorzystywaliśmy technikę:

Przykład 4CSS
1
2
3
4
5
6
7
8
.stary-image-replacement {
	display: block;
	width: 300px;
	height: 200px;
	line-height: 200px;
	overflow: hidden;
	text-indent: -1000px;
}

Co działało fajnie, ale jednak zmuszało przeglądarki do tworzenia ponadwymiarowych boxów, które potem były ukrywane.
Teraz możemy skorzystać z innej techniki, która pozwoli na uniknięcie problemu renderowania zbyt dużych kontenerów:

Przykład 5CSS
1
2
3
4
5
.nowy-image-replacement {
	text-indent: 100%;
	white-space: nowrap;
	overflow: hidden;
}

Tym sposobem, uzyskujemy ten sam efekt co wcześniej, lecz z mniejszą ilością kodu CSS oraz unikamy problemu renderowania wielkich przestrzeni poza kontenerami.

Sekcja 4Podsumowanie

Powyżej, przedstawiłem kilka przydatnych tricków CSS, które można wykorzystywać na codzień podczas pisania kodu CSS. Pozwalają one uniknąć wielu niepotrzebnych problemów, które mogłyby się pojawić podczas tworzenia stron WWW.
Wyżej wymienione tricki były testowane przeglądarkach IE8, IE9, Opera, Chrome i Firefox.
Mam nadzieję, że uznasz je za przydatne w swojej pracy. Jeśli uważasz, że brakuje jakiegoś ciekawego rozwiązania, to napisz w komentarzu, a dodam je do tekstu z notką o autorze sugestii.

Udostępnij
Uwagi

O autorze

Staff Software Engineer

Piszę na tym blogu od 2009 roku, a strony i aplikacje webowe tworzę zawodowo od 14 lat. Obecnie w Bishop Fox prowadzę frontend platformy Cosmos, od samego początku projektu. Wcześniej pracowałem m.in. w OLX, KUDO, Auto1 i eZ Systems. Piszę tu o tym, czego nauczyłem się w praktyce: o JavaScripcie, TypeScripcie, Reakcie, CSS-ie i architekturze frontendu. Występowałem też jako prelegent na konferencjach w Polsce i Europie. Masz pytanie albo pomysł na wpis? Daj znać!