根据设计稿 -- 移动端单位的设置

引入less文件:

// 设计图750 使用flexible
// px ==> rem, 设计稿尺寸 除以 75,单位 rem
// 使用例如: height:40*base;

@base: round(1/75,6) * 1rem;


//  less 写一个minin
//  使用方法:.px2rem(height,40);
//  对属性进行设置
//  @name ---- 它是指元素的属性,
//  @px ---- 是指咱们UI图中标注的尺寸

.px2rem(@name, @px){
	@{name}: round(@px / 75, 6) * 1rem;
}




// 我们在iPhone3G和iPhone4的Retina屏下面,希望看到的文本字号是相同的。
// 也就是说,我们不希望文本在Retina屏幕下变小,另外,我们希望在大屏手机上看到更多文本,
// 以及,现在绝大多数的字体文件都自带一些点阵尺寸,通常是16px和24px,
// 所以我们不希望出现13px和15px这样的奇葩尺寸。
// 为了方便,我们也写一个minin
// 使用方法: .font-size(32);
// @px --- 是指咱们UI图中标注的尺寸

.font-size(@px){

	// 默认是dpr 1
	font-size: round(@px / 2) * 1px; 

	// 苹果4,苹果5 dpr
	[data-dpr='2'] & {
		font-size: @px * 1px;    
	}

	// for mx3
	[data-dpr='2.5'] & {
		font-size: round(@px * 2.5 / 2) * 1px;
	}

	// for 小米node
	[data-dpr='2.75'] & {
		font-size: round(@px * 2.75 / 2) * 1px;
	}

	// 苹果6plus dpr 3
	[data-dpr='3'] & {
		font-size: round(@px * 3 / 2 ) * 1px;   
	}

	// for 三星node4
	[data-dpr='4'] & {
		font-size: @px * 2px;
	}
}

然后在自己的less文件里:

@charset "UTF-8";
@import '../static/less/rem.less';

@themeColor:#1890ff;

.ex{
    .px2rem(height,76);
	.px2rem(line-height,76);
	.px2rem(font-size,32);
	.px2rem(border-radius,50);
	.px2rem(-webkit-border-radius,50);
}

配合一下自适应大小的js文件:

!function(a,b){function c(){var b=f.getBoundingClientRect().width;/*b/i>540&&(b=540*i);*/var c=b/10;f.style.fontSize=c+"px",k.rem=a.rem=c}var d,e=a.document,f=e.documentElement,g=e.querySelector('meta[name="viewport"]'),h=e.querySelector('meta[name="flexible"]'),i=0,j=0,k=b.flexible||(b.flexible={});if(g){console.warn("将根据已有的meta标签来设置缩放比例");var l=g.getAttribute("content").match(/initial\-scale=([\d\.]+)/);l&&(j=parseFloat(l[1]),i=parseInt(1/j))}else if(h){var m=h.getAttribute("content");if(m){var n=m.match(/initial\-dpr=([\d\.]+)/),o=m.match(/maximum\-dpr=([\d\.]+)/);n&&(i=parseFloat(n[1]),j=parseFloat((1/i).toFixed(2))),o&&(i=parseFloat(o[1]),j=parseFloat((1/i).toFixed(2)))}}if(!i&&!j){var p=(a.navigator.appVersion.match(/android/gi),a.navigator.appVersion.match(/iphone/gi)),q=a.devicePixelRatio;i=p?q>=3&&(!i||i>=3)?3:q>=2&&(!i||i>=2)?2:1:1,j=1/i}if(f.setAttribute("data-dpr",i),!g)if(g=e.createElement("meta"),g.setAttribute("name","viewport"),g.setAttribute("content","initial-scale="+j+", maximum-scale="+j+", minimum-scale="+j+", user-scalable=no"),f.firstElementChild)f.firstElementChild.appendChild(g);else{var r=e.createElement("div");r.appendChild(g),e.write(r.innerHTML)}a.addEventListener("resize",function(){clearTimeout(d),d=setTimeout(c,300)},!1),a.addEventListener("pageshow",function(a){a.persisted&&(clearTimeout(d),d=setTimeout(c,300))},!1),"complete"===e.readyState?e.body.style.fontSize=12*i+"px":e.addEventListener("DOMContentLoaded",function(){e.body.style.fontSize=12*i+"px"},!1),c(),k.dpr=a.dpr=i,k.refreshRem=c,k.rem2px=function(a){var b=parseFloat(a)*this.rem;return"string"==typeof a&&a.match(/rem$/)&&(b+="px"),b},k.px2rem=function(a){var b=parseFloat(a)/this.rem;return"string"==typeof a&&a.match(/px$/)&&(b+="rem"),b}}(window,window.lib||(window.lib={}));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值