3.3. Regles CSS - Disseny
Model de Caixa
En CSS, tots els elements HTML es representen com a caixes. Una caixa determina:
- el contingut,
- l’espai intern (padding),
- la vora (border),
- l’espai extern (margin).
Això ens permet controlar el disseny d’una pàgina web de manera previsible.
Parts del model de caixa:
- Contingut: allò que mostra l’element (text, imatges…).
- Emplenament (padding): L’espai entre el contingut i la vora de l’element.
- Marc (border): La línia (contorn) que envolta l’element.
- Marge (margin): L’espai exterior de l’element, fora del marc.

Propietat box-sizing
Per defecte, l’ample total d’un element és:
width + padding + border
Però això pot dificultar el disseny.
La propietat box-sizing canvia este comportament:
/* Comportament per defecte */
box-sizing: content-box;
/* Recomanat per a maquetació moderna */
box-sizing: border-box;
- content-box:
widthnomés és el contingut. - border-box:
widthinclou contingut + padding + border.
Recomanació global:
* {
box-sizing: border-box;
}
Exemple general del Model de Caixa
.element {
width: 300px;
height: 150px;
padding: 10px;
border: 2px solid black;
margin: 15px;
}
On:
widthiheightdefineixen les dimensions de la caixa.paddingdefineix l’espai entre el contingut i el marc.borderés el marc que envolta l’element (estil, amplada i color).margindefineix l’espai entre l’element i altres elements.
Dimensions
Amplada i altura
Les propietats width i height permeten definir les dimensions de la caixa.
Exemple:
.nom {
width: 300px; /* Amplada */
height: 100px; /* Altura */
}

Unitats en CSS
Existeixen molts tipus d’unitats en CSS, les podem utilitzar cadascuna d’elles en funció de les nostres necessitats:
Longitud
-
Pixels (px), percentatge (%), punts (pt), polzades (in), centímetres (cm) , ems (em), rems (rem)
-
em: Relativa a la mida de lletra del pare.
Si body té font-size: 16px:
1em = 16px-
2em = 32px - rem Relativa a la mida de lletra del document (
html), no del pare.
Recomanat per a disseny consistent.
Exemple:
html { font-size: 16px; }
p { font-size: 1.2em; } /* Depén del pare */
h1 { font-size: 2rem; } /* Sempre 32px */
- Absolutes: px, cm, in, pt…
- Relatives: %, em, rem, vh, vw, auto…
On:
| Unitat | Significat | Explicació |
|---|---|---|
| % | Percentatge | Relativa al contenidor pare. Exemple: width: 50% és la meitat de l’ample del pare. |
| em | Mida relativa al pare | 1em = mida de lletra del pare. Exemple: si el pare té font-size: 20px, 1em = 20px. |
| rem | Mida relativa al document | 1rem = mida de lletra del html. No depén del pare. Exemple: si html té 16px, 1rem = 16px. |
| vh | Viewport Height | 1vh = 1% de l’altura de la finestra del navegador. |
| vw | Viewport Width | 1vw = 1% de l’amplada de la finestra del navegador. |
| auto | Automàtic | El navegador calcula automàticament la mida o posició. Exemple: margin: auto centra l’element. |
Exemple amb dimensions relatives:
.nom {
width: 50%; /* La meitat del contenidor pare */
height: 100vh; /* 100% de l'altura visible de la finestra */
font-size: 1.2rem; /* 1.2 vegades la mida base del document (html) */
padding: 2em; /* 2 vegades la mida de lletra del pare */
max-width: 80vw; /* Com a màxim, el 80% de l'amplada de la finestra */
min-height: 20vmin; /* L'altura mínima serà el 20% del costat més menut de la finestra */
margin: auto; /* Centrat horitzontalment */
border-radius: 1vmax; /* Arrodoniment basat en el costat més gran del viewport */
}
Min, Max i Ajust Automàtic
Per controlar si un element pot créixer o reduir-se:
div {
min-width: 200px;
max-width: 600px;
height: auto;
}
- min-width: l’element no serà més menut del valor indicat.
- max-width: molt útil en disseny responsive.
- auto: el navegador adapta la mida al contingut.
Espaiat
L’espaiat es refereix a l’espai entre i dins dels elements, incloent marges, emplenaments i el marc. Per defecte, els valors de margin, padding i border són zero. Aquests es poden modificar amb propietats específiques:

Marges (margin)
El marge (margin) és l’espai exterior de l’element, fora del seu border.
Els seus valors són:
margin:Tots els marges a la vegada.margin-top:Marge superior.margin-right:Marge dret.margin-bottom:Marge inferior.margin-left:Marge esquerre.
i també tot junt:
-
margin: top right bottom left;Per especificar tots els marges a la vegada. -
Per exemple:
.nom {
margin: 10px; /* Tots els marges a 10 píxels */
margin-top: 15px; /* Màrgens superior específic */
}
En este cas, l’element tindrà un marge de 10 píxels a tots els costats, excepte a la part superior, on el marge serà de 15 píxels.
- Altre exemple:
div {
margin-top: 20px;
margin-right: 30px;
margin-bottom: 40px;
margin-left: 50px;
}
que seria equivalent a:
div {
margin: 20px 30px 40px 50px; /* top, right, bottom, left */
}

Emplenaments (padding)
Defineixen l’espai intern entre el contingut i el border.
padding:Tots els emplenaments a la vegada.padding-top:Emplenament superior.padding-right:Emplenament dret.padding-bottom:Emplenament inferior.padding-left:Emplenament esquerre.
i també tot junt:
padding: top right bottom left;Per especificar tots els emplenaments a la vegada.

Exemples:
.nom {
padding: 5px; /* Emplenament igual a tots els costats */
padding-left: 10px; /* Emplenament específic a l'esquerra */
}
En este cas, l’element tindrà un emplenament de 5 píxels a tots els costats, excepte a la part esquerra, on l’emplenament serà de 10 píxels.
Altre exemple:
div {
padding-top: 80px;
padding-right: 100px;
padding-bottom: 120px;
padding-left: 140px;
}
o també en forma abreujada:
div {
padding: 80px 100px 120px 140px;
}

Marc (border) i Forma
Border
El border és la vora exterior de la caixa,es a dir la línia que envolta l’element. Es pot personalitzar amb les propietats:
border-style:Estil del marc (none,solid,dashed,dotted, etc.).border-width:Amplada del marc (en píxels).border-color:Color del marc.
Exemple:
.nom {
border-width: 2px;
border-style: solid;
border-color: red;
}
o tot junt amb border:
.nom {
border: 2px dashed blue;
}
En este cas, l’element tindrà un marc de 2 píxels d’ample, de color blau i amb un estil de línia puntejada.
Les propietats:
border-topborder-rightborder-bottomborder-left
ens permeten definir el border de cada costat de l’element.
exemple:
.nom {
border-top: 2px solid red;
border-bottom: 2px solid blue;
}
A l’exemple, l’element tindrà una vora de 2 píxels d’ample a la part superior de color roig i a la part inferior de color blau.
Estils de la línia:
none: Sense marc.dotted: Línia de punts.dashed: Línia puntejada.solid: Línia sòlida.double: Doble línia.groove: Línia en relleu.ridge: Línia en relleu invers.inset: Línia en relleu intern.outset: Línia en relleu extern.hidden: Línia oculta.

Arrodonir Vores (border-radius)
Una altra propietat molt usada és border-radius que permet arrodonir les vores dels elements.
.nom {
border-radius: 10px;
}
Ombra (box-shadow)
L’ombra (box-shadow) afegeix una ombra a la caixa, donant un efecte de profunditat.
.caixa {
box-shadow: 10px 10px 20px rgba(0,0,0,0.25);
}
Text i Tipografies
font-family:
Defineix la família de tipus de lletres (font) a utilitzar. Pot incloure múltiples noms de famílies separats per comes, en cas que la primera no estiga disponible:
p {
font-family: "Arial", "Helvetica", sans-serif;
}
`font-size
Grandària de la lletra. Pot ser especificada en diferents unitats (px), (em), (%), (pt), (in), (cm).
h2 {
font-size: 16px; /* Pixels */
}
font-weight:
Especifica el grossor de la lletra, els valors poden ser numèrics, o predefinits com:
- normal: És el gruix per defecte de la font (normalment equivalent a 400).
- bold: Aplica un estil de lletra en negreta (equivalent a 700).
- lighter: Fa que el text siga més fi que el gruix heretat de l’element pare.
- bolder: Fa que el text siga més gruixut que el gruix heretat de l’element pare.
span {
font-weight: bold;
}
font-style:
Defineix l’estil del tipus de lletra. Pot ser normal, italic o oblique (inclinació artificial del navegador).
p {
font-style: italic;
}
font-variant:
Especifica si el tipus de lletra ha de ser mostrat en versió normal o amb majúscules petites (small-caps).
h3 {
font-variant: small-caps;
}
Tant en
small-capscom enitalic:
- Si la font no té
small capsreals → les simula. - Si una font no té
italic→ es substitueix peroblique.
Propietat abreujada font:
Permet especificar múltiples propietats relacionades amb el tipus de lletra en una sola línia:
h1 {
font: bold small-caps 24px/1.5 "Arial", sans-serif;
}
Nota: 24px/1.5 estableix la grandària del text a 24px i l’altura de la línia dins del bloc de text a 1.5 (line-height).
En CSS, les famílies de fonts són grups de tipus de lletra amb característiques semblants (serif, sans-serif, monospace, etc.). Quan indiquem una font, és recomanable posar alternatives per si la primera no està disponible.
font-family: "Courier New", Arial, sans-serif;
font-family: "Comic Sans MS", "Trebuchet MS", cursive;
font-family: "Courier New", "Lucida Console", monospace;
En una declaració font-family:
- Primera font → la que vols utilitzar.
- Fonts alternatives → per compatibilitat.
- Família genèrica → últim recurs obligatori.
- Fa falta cometes si la font té més d’una paraula.

Colors en CSS
| Propietat | Descripció | Exemple |
|---|---|---|
color | Defineix el color del text | color: red; |
background-color | Defineix el color de fons | background-color: #00ff88; |
opacity | Controla la transparència de tot l’element | opacity: 0.6; |
rgba | Color amb canal alfa (transparència) | color: rgba(255, 0, 0, 0.5); |
-
On
opacitycontrola la transparència de tot l’element, incloent text, fons, imatges i contingut interior. Els valors van de: - 0 → completament transparent
- 1 → completament opac
Exemple:
.box {
opacity: 0.5; /* L'element es veu al 50% */
}
rgbadefineix un color utilitzant el model Red, Green, Blue + Alpha (transparència). A diferència deopacity, només fa transparent el color, no tot l’element.
Format: rgba(r, g, b, a)
- a és l’alfa (0 = transparent, 1 = opac).
Exemple:
.box {
background-color: rgba(255, 0, 0, 0.3); /* Roig amb 30% d'opacitat */
}
Els colors es poden definir de varies maneres en CSS:
- Noms predefinits
- RGB
- Hexadecimal
- HSL
- RGBA
- HSLA
Veure Annex 1
Exemples de noms predefinits:

Fons (background)
Les propietats de fons permeten controlar l’aspecte del fons d’un element.
- Imatge:
background-image:
Defineix una imatge de fons.background-image: url('imatge.jpg');Valors:
url,none. -
Mida:
background-size:Controla la mida de la imatge de fons. Permet ajustar la imatge perquè cubrisca el contenidor (
cover) o perquè es mostre completament (contain).background-size: cover; background-size: contain; background-size: 50% 50%; /* Amplada i altura específiques */Valors:
auto,cover,contain, longitud (ex.:50px,50%). - Repetició:
background-repeat: - Controla si la imatge de fons es repeteix horitzontalment (eix x), verticalment (eix y), o no es repeteix.
background-repeat: repeat-x; /* Repeteix només en l'eix X */ background-repeat: no-repeat; /* No repeteix la imatge */Valors:
repeat,repeat-x,repeat-y,no-repeat,space,round. - Posició:
background-position: - Defineix la posició inicial de la imatge de fons. Es pot utilitzar valors com percentatges, paraules clau o coordenades.
background-position: center top;
background-position: 50% 0%; /* Centrat horitzontalment, dalt de tot */
Valors: top, bottom, left, right, center, %, x-pos y-pos.
-
Fons fix:
background-attachment:Especifica si la imatge de fons es desplaça amb la pàgina o queda fixa en el seu lloc.
background-attachment: fixed; /* La imatge roman fixa */ background-attachment: scroll; /* La imatge es mou amb el contingut */ background-attachment: local; /* La imatge es mou amb l'element */Valors:
scroll,fixed,local. background:
Una propietat abreujada que permet combinar color de fons, imatge, repetició, posició i més.background: #f0f0f0 url('imatge.jpg') no-repeat center top;Valors:
color,image,repeat,attachment,position/size,origin,clip.- Múltiples fons
CSS permet aplicar diverses imatges de fons a un mateix element. Les diferents imatges es separen amb comes, i cada propietat (background-position, background-repeat, etc.) admet també múltiples valors en el mateix ordre.
body {
background-image: url("núvols.png"), url("muntanya.png");
background-position: center, bottom;
background-repeat: no-repeat, repeat-x;
}
En este exemple:
- La primera imatge (núvols.png) es mostra centrada i sense repetir.
- La segona imatge (muntanya.png) es col·loca baix i es repeteix horitzontalment.
- La primera imatge queda damunt de la segona, com capes superposades.
Propietats de caixes
Les propietats de caixa CSS permeten controlar l’aspecte de les caixes HTML. Aquestes propietats són útils per controlar la mida, el color, la posició, etc. de les caixes.
Les propietats de caixa CSS més comunes són (les vistes anteriorment):
box-sizing:Controla com es calcula la mida total de l’element (amplada i altura) tenint en compte els marges, el “padding” i les vores.width:Amplada de la caixa.height:Altura de la caixa.margin:Marge exterior de la caixa.padding:Espai entre el contingut i el marc de la caixa.border:Marc de la caixa.background-color:Color de fons de la caixa.color:Color del text de la caixa.- I la resta de propietats de fonts i text.
I també hi ha d’altres propietats per controlar el comportamente de caixa CSS:
Propietats de Comportament
1. display — Com es mostra un element
Controla què és un element en el layout: si trenca línia, si pot tindre mides i com es comporta respecte als altres.
block: trenca línia, accepta mides, ocupa tota l’amplada.inline: no trenca línia, no accepta width/height.inline-block: no trenca línia, accepta mides.none: l’element desapareix i no ocupa espai.flex: converteix el contenidor en Flexbox.grid: converteix el contenidor en Grid.
Nota: Block, inline, inline-block amb molt de detall, ja no són el centre del disseny modern.
2. position — Com es col·loca un element
Controla si ocupa espai i quin és el punt de referència quan el movem.
static: comportament normal, no es pot moure.relative: ocupa espai però es pot desplaçar lleugerament.absolute: no ocupa espai, es posiciona respecte al primer pare posicionat.fixed: no ocupa espai, queda fix a la finestra.sticky: es comporta comrelativefins que arriba a un punt i es queda fix.
3. float i clear — Disseny flotant (antic)
Útil per fer que un element flote i que el text l’envolte.
float: left/right: l’element flota a un costat.clear: evita que elements se situen al costat d’un float anterior.
Important: hui dia quasi no s’utilitzen en layouts moderns, substituïts per Flex i Grid.
4. visibility — Ocultar sense eliminar
Determina si l’element és visible, però manté l’espai.
visible: es mostra.hidden: no es veu però manté el lloc.
Diferència clau: visibility: hidden manté espai, display: none elimina l’element del layout.
Annex 1 - Com definir colors en CSS
En CSS podem definir colors utilitzant diferents models. Cada model té les seues característiques i forma de representar un color.
1. Noms predefinits
Els navegadors inclouen més de 140 noms de colors, com ara red, blue, coral, gold, darkgreen…
Són útils per a situacions ràpides o quan volem un color senzill i fàcil de recordar.
p {
color: blue; /* Text blau */
background-color: coral; /* Fons taronja suau */
}
2. RGB (rgb(r, g, b))
Representa el color mitjançant la combinació de tres valors:
- r (roig)
- g (verd)
- b (blau)
Cada component pot anar de 0 a 255.
Com més alt el valor, més intens és eixe component.
div {
color: rgb(255, 0, 0); /* Text roig pur */
background-color: rgb(0, 200, 120); /* Fons verd-turquesa */
}
Quan usar RGB? Quan necessites un color precís o quan treballes amb eines gràfiques que donen valors RGB.
3. Hexadecimal (#RRGGBB o #RGB)
És el format més clàssic i molt usat en desenvolupament web.
#RRGGBB→ cada parell va de00aFFen base 16#RGB→ versió abreujada quan els dos dígits són iguals (ex:#333→#333333)
h1 {
color: #ff6600; /* Taronja fort */
background-color: #333; /* Gris fosc abreujat */
}
Quan usar hexadecimal? Quan vols colors compactes, reconeixibles ràpidament, o quan treballes amb eines com Photoshop.
4. HSL (Hue, Saturation, Lightness)
Model de color basat en criteris humans:
- Hue (Matís): Valor entre 0–360, que representa el color pur (0 = roig, 120 = verd, 240 = blau…)
- Saturation (Saturació): Percentatge (0% gris, 100% color intens)
- Lightness (Lluminositat): Percentatge (0% negre, 50% color normal, 100% blanc)
span {
color: hsl(200, 100%, 50%); /* Blau intens */
background-color: hsl(0, 0%, 90%); /* Gris clar */
}
Avantatges d’HSL: Molt útil quan vols aclarir, enfosquir o variar el color sols tocant un percentatge.
5. RGBA (RGB + Alpha)
Igual que RGB, però amb un quart valor per a la transparència:
- a = valors entre 0 (totalment transparent) i 1 (totalment opac)
.box {
background-color: rgba(0, 0, 0, 0.3); /* Negre semitransparent */
}
Quan usar RGBA? Quan necessites transparències reals sense afectar el text intern.
6. HSLA (HSL + Alpha)
És la versió transparent del model HSL.
- Mateixos paràmetres que HSL
- Es combina en un quart valor d’opacitat (alpha)
.card {
background-color: hsla(140, 70%, 40%, 0.4); /* Verd amb transparència */
}
Per què usar HSLA? Permet crear colors clars/obscurs i semitransparents de forma intuïtiva.
Exemple complet amb diverses propietats de color
A continuació tens un exemple real d’una classe CSS que utilitza diversos models de color al mateix temps:
.exemple {
color: #2196f3; /* Text blau (hexadecimal) */
background-color: hsl(48, 100%, 50%); /* Fons groc lluminós (HSL) */
opacity: 0.9; /* L'element és lleugerament transparent */
border: 2px solid rgba(255, 0, 0, 0.5); /* Marc roig semitransparent */
}
Nota: opacity afecta a tot l’element (inclòs text i contingut intern). Si només vols fer transparent el fons, és millor usar rgba o hsla.
Annex 2 Exemple Complet Propietats de Caixa
<!DOCTYPE html>
<html lang="ca">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemple de Propietats de Caixa</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>Exemple Visual de les Propietats de Caixa</h1>
<div class="contenidor">
<div class="caixa" id="caixa1">
width i height
</div>
<div class="caixa" id="caixa2">
margin
</div>
<div class="caixa" id="caixa3">
padding
</div>
<div class="caixa" id="caixa4">
border
</div>
<div class="caixa" id="caixa5">
border-radius
</div>
<div class="caixa" id="caixa6">
box-shadow
</div>
</div>
</body>
</html>
CSS (Estils per a la visualització de la caixa)
/* Estils generals */
body {
font-family: Arial, sans-serif;
background-color: #f4f4f9;
margin: 0;
padding: 0;
}
h1 {
text-align: center;
color: #333;
margin: 20px 0;
}
.contenidor {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 20px;
padding: 20px;
}
.caixa {
width: 150px; /* Amplada de la caixa */
height: 150px; /* Altura de la caixa */
padding: 10px; /* Espai intern entre el contingut i la vora */
margin: 10px; /* Espai extern al voltant de la caixa */
border: 2px solid #000; /* Vora de 2px de color negre */
display: flex; /* Display en mode flex per centrar el text */
justify-content: center; /* Centra horitzontalment el text */
align-items: center; /* Centra verticalment el text */
text-align: center; /* Text centrat dins de la caixa */
background-color: #FF6347; /* Color de fons (tomàquet) */
color: #fff; /* Color del text (blanc) */
font-size: 16px; /* Grandària de la lletra */
font-weight: bold; /* Text en negreta */
}
/* Estils personalitzats per a cada caixa */
#caixa1 {
width: 200px;
height: 100px;
background-color: #4CAF50; /* Verd */
}
#caixa2 {
background-color: #2196F3; /* Blau */
margin: 30px;
}
#caixa3 {
background-color: #FF9800; /* Taronja */
padding: 30px;
}
#caixa4 {
background-color: #E91E63; /* Rosa */
border: 8px solid #000;
}
#caixa5 {
background-color: #9C27B0; /* Morat */
border-radius: 15px;
}
#caixa6 {
background-color: #795548; /* Marró */
box-shadow: 10px 10px 20px rgba(0,0,0,0.25);
}

Cada caixa demostra una propietat de la caixa CSS. Es poden observar visualment les diferències en cada propietat.
- Caixa 1 -
widthiheight- Aquesta caixa té un width de 200px i un height de 100px.
- Color de fons: Verd.
- Caixa 2 -
margin- La marge extern d’aquesta caixa és de 30px.
- Significa que l’espai al voltant de la caixa és de 30 píxels.
- Color de fons: Blau.
- Caixa 3 -
padding- La padding interna d’aquesta caixa és de 30px.
- El contingut (el text) està separat de la vora.
- Color de fons: Taronja.
- Caixa 4 -
border- La vora d’aquesta caixa és de 8 píxels de color negre.
- Crea una vora ampla i clara al voltant de la caixa.
- Color de fons: Rosa.
- Caixa 5 -
border-radius- Aquesta caixa té un border-radius de 15px.
- Les vores estan arrodonides, creant una forma més suau.
- Color de fons: Morat.
- Caixa 6 -
box-shadow- Aquesta caixa té una ombra creada amb la propietat
box-shadow. - L’ombra és de 10px x 10px i té una difusió de 20px.
- Color de fons: Marró.
- Aquesta caixa té una ombra creada amb la propietat
Aquest disseny mostra sis caixes alineades en dues files de 3 elements. Cada caixa mostra visualment l’efecte d’una propietat CSS relacionada amb les caixes.
| Propietat | Caixa | Descripció Visual |
|---|---|---|
width i height | Caixa 1 | Caixa amb una mida diferent (200x100 px) |
margin | Caixa 2 | Espai extra al voltant de la caixa (30px) |
padding | Caixa 3 | El contingut està separat de la vora (30px) |
border | Caixa 4 | Vora ampla de 8px de color negre |
border-radius | Caixa 5 | Vores arrodonides (15px) |
box-shadow | Caixa 6 | Ombra de 10px x 10px amb difusió de 20px |