移动端布局(less+rem)

html

  在html使用了网上阿里的函数来计算根元素的字体(当然可以写在其他地方,只要生效就可以)




  
  
  
  xxx
  
  
  


  

  
  
  



  这里主要使用了函数计算根元素字体,将屏幕分成了10分,在iphone6下面根元素字体就是37.5px;

less函数

  这是使用了less的unit函数来添加单位,将所有的需要转化的css都写到一个公共的less文件里面,通过@import导入进去。(这里只是粘贴了一部分)

.fs(@px) {
  font-size: unit(@px / 37.5, rem);
}

/*----- 宽度 -----*/
.w(@px) {
  width: unit(@px / 37.5, rem);
}

/*----- 高度 -----*/
.h(@px) {
  height: unit(@px / 37.5, rem);
}

/*----- 行高 -----*/
.lh(@px) {
  line-height: unit(@px / 37.5, rem);
}

/*----- 背景尺寸 -----*/
.b_s(@px, @px) {
  -webkit-background-size: unit(@px / 37.5, rem) unit(@px / 37.5, rem);
  background-size: unit(@px / 37.5, rem) unit(@px / 37.5, rem);
}
/**
* [背景尺寸,设置宽度,高度auto]
 */
.b_s1(@px) {
  -webkit-background-size: unit(@px / 37.5, rem) auto;
  background-size: unit(@px / 37.5, rem) auto;
}

.b_s2(@px) {
  -webkit-background-size: auto unit(@px / 37.5, rem);
  background-size: auto unit(@px / 37.5, rem);
}

/*----- margin -----*/
.mt(@px) {
  margin-top: unit(@px / 37.5, rem);
}
.mr(@px) {
  margin-right: unit(@px / 37.5, rem);
}
.mb(@px) {
  margin-bottom: unit(@px / 37.5, rem);
}
.ml(@px) {
  margin-left: unit(@px / 37.5, rem);
}

  将iphone6的屏幕分成10分,所以就除了37.5,用unit函数来添加单位(这里是相对iphone6的屏幕的,相信大部分公司移动端的设计图都是根据iphone6设计的)。

在其他less文件里面使用

@import "../less/bass.less";
.sort-title {
  .fs(17);
  color: @color0;
  font-family: PingFang-SC-Medium;
  .mt(20);
  .mb(15);
}

   .fs, .mt这些就是less的函数,最终编译好的文件就是rem了。(总之,在iphon6或者iphone7,屏幕是376px,无论你上面怎么分配比例,在chrome里面审查你编译后的css,鼠标放到元素上会显示大小,这时和你设计图上的大小相等就可以。)

总结

  本人感觉这样还是比较方便的,不用像那样设置根元素100px,然后根据sublime的插件来计算,或者更复杂的计算等等。我们项目使用angular4,angular4可以自动编译less,只需向上面那样直接调用函数就可以,而且可以做一些运算,还是比较方便的,当然vue里面你只要安装less插件,就可以让vue-cli来编译了,如果这些你都没用,你还可以通过Koala来编译成css,通过link来引入。

你可能感兴趣的:(移动端布局(less+rem))