css中的几个单位——rem,视口单位和ch

rem

rem是设计响应式网页的神器,由于rem单位是相对HTML元素的font-size属性的,所以当使用rem做为属性单位时,当改变HTML元素的font-size,其余使用rem做为单位的元素也会跟着适配大小。那么如何根据屏幕的大小制做一个响应式的网页呢。css

  • 用css媒体查询
  • 用至关于视口宽度单位的vw值(这个下一部分讲)

这里先说说用css媒体查询,以下面所示,屏幕查询能够指定一个屏幕大小,当屏幕是你指定的大小时,它就会运行里面的代码,可是这种方法有一个缺点---它并不能控制更加精确的尺寸,因此咱们可使用vm来解决这个问题。html

<style>
    body,div{
        margin:0;
        padding:0;
    }
    html{
        font-size:12px;
    }
    @media screen and (min-width:320px){
        html{
            font-size:14px;
        }
        
    }
    @media screen and (min-width:640px){
        html{
            font-size:16px;
        }
        
    }
    @media screen and (min-width:1000px){
        html{
            font-size:18px;
        }
    }
    .box{
        width:10rem;
        height:10rem;
        font-size:2rem;
        background-color:pink;
    }
</style>
<div class="box">rem</div>

vw,vh,vmin,vmax基于视口的单位

视口单位能够用来什么,好比:布局

  • 实现响应式
  • 设置相对视口的宽度和高度,能够实现水平垂直居中
  • 实现网格布局
  • 将图片按照屏幕的比例显示

这几个单位是相对于视口的,也就是可视区域,总共分红了100份。若是想让一个字体的大小在指定的区间内变化,好比可视区域的大小在980px-320px时,让字体的大小在14-20之间变化,能够字体

14-(20-14)*(980-320)/(980-320)spa

<style>
    body,div{
        margin:0;
        padding:0;
    }
    html{
        font-size:20px;
    }
    @media screen and (max-width:980px){
        html{
            font-size:calc(14px+6*(100vm-320px)/660);
        }
        
    }
    .box{
        width:10rem;
        height:10rem;
        font-size:2rem;
        background-color:pink;
    }
</style>
<div class="box">rem</div>

除了用这些基于视口的单位来作响应式,还能够作一些其余的事情。咱们知道,若是某个值能够继承,则百分比参照的是父元素计算的值。而当父元素不设置高度时,则是根据子元素高度来肯定的。因此,若是没有直接设置宽度和高度,100%的设置是没有做用的。若是用视口单位,就不会有这种状况了,由于它是相对屏幕可视区的设计

.box{
  width:100vw;
  height:100vh;
  background-color:pink;
}

若是要实现水平垂直居中code

<style>
  body,div{
  margin:0;
  padding;0;
}
.box{
  width:100px;
  height:100px;
  margin-left:calc(50vw-50px);
  margin-top:calc(50vh-50px);
  background-color;pink;
}
</style>
<div class="box">hello css</div>

用视口来实现网格布局htm

<style>
body,div{
  margin:0;
}
.column-1{
  float:left;
  width:100vw;
}
.column-2{
  float:left;
  width:calc(100vw/2);
}
.column-3{
  float:left;
  width:calc(100vw/3);
}
body>div{
  overflow;hidden;
}
div>div{
  height:35px;
  outline:1px solid #dedede;
}
.box-1 div{
  background-color:red;
}
.box-2 div{
  background-color:orange;
}
.box-3 div{
  background-color:pink;
}
</style>
 <div class="box-1">
   <div class="column-1"></div>
 </div>
 <div class="box-2">
   <div class="column-2"></div>
   <div class="column-2"></div>
 </div>
 <div class="box-3">
   <div class="column-3"></div>
   <div class="column-3"></div>
   <div class="column-3"></div>
  </div>

另外,当须要将图片按照屏幕的比例显示时,用视口单位也是不错的选择继承

ch

ch是一个相对于数字0的大小,好比定义了5ch的宽度,那么就只能装下5个0。实际上1ch=1个英文=1个数字,2ch=1个中文。图片

<style>
        body,div{
            margin:0;
            padding:0;
        }
        .box{
            width:5ch;
            background-color:grey;
        }

    </style>
    <div class="box">
     000000
    </div>

若是项目须要限制输入个数,可使用下面代码

<style>
        body,div{
            margin:0;
            padding:0;
        }
        h1{
            width:18ch;
            overflow: hidden;//超出隐藏
            white-space: nowrap;//防止换行
            text-overflow: ellipsis;//省略号
            font-size: 50px;
            background-color: deeppink;
        }

    </style>
    <h1>
     标题被限制输入了,超出隐藏哦。
    </h1>

相关文章
相关标签/搜索