chdyiboke / weekly

issue and share weekly
5 stars 1 forks source link

px rem em vh vw之间的区别到底是啥? #41

Open chdyiboke opened 3 years ago

chdyiboke commented 3 years ago

rem 是根据html节点换算来的 (rem里面的r:root

/* rem的用法 */
html{
    font-size:16px;  // 1rem = 16px
}
chdyiboke commented 3 years ago
<!--em1-->
<div class="div-em">em</div>

<!--em2-->
<div class="div-em-father">
    <div class="div-em-child">em child</div>
</div>

 /* em的用法1:自己元素设置font-size的值来当作em的参照值 */
.div-em{
    font-size: 32px;  // 1em = 32px

    width: 10em;      // 10em = 10 x 32 = 320px
    height: 10em;     // 10em = 10 x 32 = 320px
    background-color: aquamarine;
}

 /* em的用法2:自己元素不设置,而父级元素设置font-size的值来当作em的参照值 */
.div-em-father{
    font-size: 64px;  // 1em = 64px
}

.div-em-child{
    width: 10em;     // 10em = 10 x 64 = 640px
    height: 10em;    // 10em = 10 x 64 = 640px
    background-color: cadetblue;
}

rem 与 em的区别:

rem只能在html标签里面设置rem的依赖的值到底是多少 而em是可以在自己元素以及父级元素设置em依赖的值是多少

chdyiboke commented 3 years ago
<!--vh vw-->
<div class="div-vh-vw">

    <!--百分比%-->
    <div class="div-vh-vw-child"></div>

</div>

 /* vh vw 的用法:视窗作为参照值 */
.div-vh-vw{
    width: 10vw;  // 视窗宽度的 1/10
    height: 10vh;  // 视窗高度的 1/10
    background-color: pink;
}

/* %百分比的用法:父元素的宽高作为参照值 */
.div-vh-vw-child{
    width: 50%;
    height: 50%;
    background-color: aliceblue;
}

vh vw 的用法:视窗作为参照值 %百分比,父元素的宽高作为参照值

100vh就表示满高 100%相对于父元素满宽or高

chdyiboke commented 3 years ago

建议做响应式布局的时候:border用px,font-size用rem,剩下的margin padding这些用em。尽可能的使用100%布局。

benyl-nie commented 3 years ago

建议做响应式布局的时候:border用px,font-size用rem,剩下的margin padding这些用em。尽可能的使用100%布局。

为何???我一直做的都是 border 和 font-size 用px, margin padding 用的是 rem

chdyiboke commented 3 years ago

@benyl-nie em 和 rem 都各有优缺点,实现自适应布局。

  1. 如果属性值根据元素的 font-size 获得,则使用 em,如padding\margin\line-height\width\height 等值(使字体大小变化时元素周围的间距会等比例缩放)
  2. 其他一切单位使用 rem 掘金原文