h5 rem vue_移动端h5之rem布局/px2rem

理:

px2rem.png

gulp脚手架下

安装gulp-px2rem-plugin模块npm install gulp-postcss --save-dev

gulpfile.js文件内处理var gulp = require('gulp');var postcss = require('gulp-postcss');var px2rem = require('postcss-px2rem');

gulp.task('default', function() {  var processors = [px2rem({remUnit: 75})];  return gulp.src('./src/*.css')

.pipe(postcss(processors))

.pipe(gulp.dest('./dest'));

});vue-webpack下面

webpack官方有简单举例npm install postcss-loader --save-devvar px2rem = require('postcss-px2rem');

module.exports = {  module: {    loaders: [

{        test: /\.css$/,        loader: "style-loader!css-loader!postcss-loader"

}

]

},  postcss: function() {    return [px2rem({remUnit: 75})];

}

}

以下举例vue的写法,vue中以上webpack写法加载出错

在webpack.base中先处理css和postcss{          test: /\.(css|scss)$/,

loader:"style-loader!css-loader!sass-loader!postcss-loader"

}

我们对px2rem写入vue-loader中

vue-px2rem.pngvar utils = require('./utils')var config = require('../config')var isProduction = process.env.NODE_ENV === 'production'module.exports = {  //使用px-rem转换

postcss: [require('postcss-px2rem')({remUnit: 100})],  loaders: utils.cssLoaders({    sourceMap: isProduction

? config.build.productionSourceMap

: config.dev.cssSourceMap,    extract: isProduction

})

}

关于1px转换

这样一切看上去如此完美了,但是又有个大问题需要注意——1px的边框在转化为rem时,在andriod webview以及部分低版本ios webview 会看不到。处理方法——让1px在编译后,依然是1px

使用postcss-px2rem插件处理px时候,需要在使用时候注意每个属性后面的分号不能省略,默认是都转换为rem,

如若某个属性不需要转换为rem,需要按照dpr不同而分别设置大小,则在后面加上注释/px/,

如若需要原样输出,则在后面加上注释/no/,此处需要多加留意,对于刚接触的我们新手来说,是个坑啊!.border_style{    border-color: @border_color;    border-style: solid;    border-width: 1px;/*no*/}

我们知道现在iphone大多数型号都用上了retina屏,而retina屏的分辨率相较于普通屏幕增加了一倍,也就是说原来1个像素宽度的区域内可以塞进2个像素了。我们css写的1px是一个概念像素,在retina屏的实际设备上占了2px的位置。

而对于手机屏幕整体来说,一个标注了750宽的手机(iPhone6)在css中只需要375px就能表示

scale缩放全能型写法

@media (-webkit-min-device-pixel-ratio: 2){

.border-bottom::after {

border-bottom-width: 1px;

}

.border:after {    content: ' ';    display: block;    position: absolute;    top: 0;    right: -100%;    bottom: -100%;    left: 0;    border: 0 solid #e1e1e1;

-webkit-transform-origin: 0 0;

transform-origin: 0 0;

pointer-events: none;

-webkit-transform: scale(.5);    transform: scale(.5);    width: 200%;

-webkit-box-sizing: border-box;

box-sizing: border-box;

}

}

满足一般需求可以使用这个

@media (-webkit-min-device-pixel-ratio: 2)

.border:after {    height: 1px;    content: '';    width: 100%;

border-top: 1px solid #e1e1e1;

position: absolute;    bottom: -1px;    right: 0;    transform: scaleY(0.5);

-webkit-transform: scaleY(0.5);

}

作者:AkiraSun

链接:https://www.jianshu.com/p/e96ccb603a50

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值