html {font-size:15px} )していたとしても、そのemがある位置の親要素のfont-size指定が18pxならば、1emのサイズは18pxになります。
一方、「rem」は、ルート要素で指定した文字サイズを基準にします。htmlの入れ子の中にあっても親要素の指定に影響されません。
font-size:1em; padding:0.5em
font-size:1em; padding:0.5em
サンプル1は、左右の親要素内に内包するテキストを含めて全く同じp要素が入っています。文字サイズは、ルート要素で指定した15pxのままで、右側の親要素のみに font-size:18px を指定しています。その結果、
左側:1emは15px font-sizeが15px(1em)paddingが7.5px(0.5em)
右側:1emは18px font-sizeが18px(1em)paddingが9px(0.5em)になっています。
<div class="box"> <div class="parent-l"><p class="sample">font-size:1em; padding:0.5em</p></div> <div class="parent-r"><p class="sample">font-size:1em; padding:0.5em</p></div> </div>
html {
font-size: 15px;
}
.parent-l,.parent-r {
display: inline-block;
width: 45%;
margin: 0 0 0 15px;
padding: 5px;
}
.parent-r {
font-size: 18px;
}
p.sample {
text-align: center;
background: #bef;
color: #000;
border: 1px solid #ccc;
font-size: 1em; /*-- emを使用 --*/
padding: 0.5em; /*-- emを使用 --*/
}
font-size:1rem; padding:0.5rem
font-size:1rem; padding:0.5rem
サンプル2は、サンプル1と同じ状態のものを使い、p要素のみclass名を「sample2」として、CSSでemをremに置き換えています。右側の親要素のみに font-size:18px を指定していますが、結果は同じになります。
左側:1remは15px font-sizeが15px(1rem)paddingが7.5px(0.5rem)
右側:1remは15px font-sizeが15px(1rem)paddingが7.5px(0.5rem)
<div class="box"> <div class="parent-l"><p class="sample2">font-size:1rem; padding:0.5rem</p></div> <div class="parent-r"><p class="sample2">font-size:1rem; padding:0.5rem</p></div> </div>
p.sample2 {
text-align: center;
background: #bef;
color:#000;
border: 1px solid #ccc;
font-size: 1rem; /*-- remを使用 --*/
padding: 0.5rem; /*-- remを使用 --*/
}
font-size:18px; padding:0.5em
font-size:18px; padding:0.5rem
左右の親要素をまったく同じにして、左右のp要素の文字サイズをともに絶対指定の font-size:18px 、paddingのみ左を「em」、右を「rem」の単位にしています。その結果、左側のpaddingは、font-sizeの18pxの半分の9pxに、右側のpaddingは、ルート要素指定の15pxの半分の7.5pxになります。
左側:font-sizeが18px 1emは18px paddingが9px(0.5em)
右側:font-sizeが18px 1remは15px paddingが7.5px(0.5rem)
<div class="box"> <div class="parent"><p>font-size:18px; padding:0.5em</p></div> <div class="parent"><p class="rem">font-size:18px; padding:0.5rem</p></div> </div>
.parent {
display: inline-block;
width: 45%;
margin: 0 0 0 15px;
padding: 5px;
}
.parent p {
text-align: center;
background: #bef;
color:#000;
border: 1px solid #ccc;
font-size: 18px;
padding: 0.5em; /*-- p要素左側emを使用 --*/
}
.parent p.rem {
padding: 0.5rem; /*-- p要素右側remを使用 --*/
}