chevron-left chevron-right

Piotr Nalepa Frontend, architecture and AI

[CSS] Garść przydatnych tricków CSS

This version
blog.piotrnalepa.pl/2012/05/19/css-garsc-przydatnych-trickow-css
Published
Author
, Staff Software Engineer
Category
CSS
Feedback
Write to me · Post on X

This post is 14 years old. Browsers and tools may have changed since then, so check the code against current documentation before you use it.

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.

Section 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.

Example 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;
}

Section 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.

Example 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ść.

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

Section 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ę:

Example 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:

Example 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.

Section 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.

Share
Feedback

About the author

Staff Software Engineer

I've been writing this blog since 2009 and building for the web professionally for 14 years. Today I lead the frontend of the Cosmos platform at Bishop Fox, where I've been since day one of the project. Before that I worked at OLX, KUDO, Auto1 and eZ Systems. Here I write about what I've learned in practice: JavaScript, TypeScript, React, CSS and frontend architecture. I've also spoken at conferences across Poland and Europe. Got a question or an idea for a post? Let me know!