Elementtien laajeneminen CSS:ssä JavaScriptille

CSS-ominaisuuksien width ja height asetus ei takaa, että elementistä tulee annettua kokoa. Katsotaanpa esimerkkien avulla.

Esimerkki

Nyt elementin koot vastaavat annettuja:

html<div id="elem">
  teksti
</div>
css#elem {
  width: 200px;
  height: 200px;
  margin: 50px auto;
  background: #CFF5BF;
}

Результат:

Esimerkki

Asetetaan nyt elementille ominaisuus padding. Tuloksena elementin todellinen leveys kasvaa ja laajenee annetun arvon verran sisäisen marginain:

html<div id="elem">
  teksti
</div>
css#elem {
  padding: 25px;
  width: 200px;
  height: 200px;
  margin: 50px auto;
  background: #CFF5BF;
}

Результат:

Esimerkki

Myös reunuksen läsnäolo laajentaa elementtiä:

html<div id="elem">
  teksti
</div>
css#elem {
  width: 200px;
  height: 200px;
  margin: 50px auto;
  background: #CFF5BF;
  border: 20px solid #F0D7A1;
}

Результат:

Esimerkki

Ominaisuus box-sizing mahdollistaa edellä kuvatun käyttäytymisen muuttamisen. Voidaan tehdä niin, että sisäinen marginai eikä reunus laajenna elementtiä. Tätä varten tälle ominaisuudelle on asetettava arvo border-box:

html<div id="elem">
  teksti
</div>
css#elem {
  box-sizing: border-box;
  padding: 20px;
  width: 200px;
  height: 200px;
  margin: 50px auto;
  background: #CFF5BF;
  border: 20px solid #F0D7A1;
}

Результат:

Kuvatun merkitys

JavaScriptin näkökulmasta kuvattu tilanne ei ole kovin kätevä. Loppujen lopuksi käy niin, että luettuamme ominaisuuden width arvon emme voi olla lainkaan varmoja siitä, että elementin leveys on juuri tämä.