h5在移动端适配 px自动转rem

px自动转rem:移动端H5适配的工程化方案与实战解析 在移动端H5开发中,屏幕尺寸碎片化让“1:1还原设计图”成为高频痛点。CSS相对单位rem以根元素字号为唯一基准,相比em的嵌套累加和vw的兼容性问题,更适合等比缩放场景。但手工把px换算成rem不仅效率低,还极易出错。借助PostCSS生态中的postcss-pxtorem,可以在构建阶段自动完成单位替换,同时通过动态计算根字号实现全屏适配。这套工程化方案广泛应用于微信内页、Hybrid App内嵌页及营销活动页,能够让开发者继续以px书写样式,却产出rem自适应代码。文章结合Webpack与Vite配置 阅读详情

在项目中为了屏幕适配,经常会用到rem,postcss-px2rem就是为了让我们直接在将代码中px自动转化成对应的rem的一个插件

1. 安装:npm i postcss-px2rem --save -dev

2.根目录下新建postcss.config.js(注:之前使用的 .postcssrc.js 已经被抛弃)

module.exports = {
  plugins: {
    'postcss-pxtorem': {
      rootValue: 37.5, // Vant 官方根字体大小是 37.5
      propList: ['*'], // Use wildcard * to enable all properties
      selectorBlackList: ['.norem'], // ignore and leave as px
	  exclude: /node_modules/ 
    }
  }
};

remUnit: 37.5  代表 1rem = 37.5px;  所以当你一个75px值时,它会自动转成   (75px/37.5)rem, 

转化完之后,你还需要在根元素设置他的font-size,因为rem是相对根元素来设置大小的

html {
    font-size: 10vw;
}

这样的话我们设置的px值  就变成对应的    10%的屏幕宽度 *(75px/75)rem ,当然你也可以根据屏幕宽度来动态配置html的font-size

配置传送门

3.如果你的项目使用vue-cli构建,你也可以直接在vue.config.js配置

module.exports = {
	//此处省略其他代码
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          require('postcss-pxtorem')({
            rootValue: 75, // 换算的基数 Vant 官方根字体大小是 37.5
            propList: ['*'], // Use wildcard * to enable all properties
            selectorBlackList: ['.norem'], // ignore and leave as px
            exclude: /node_modules/
          })
        ]
      }
    }
  }
}

4.老版本项目,没有vue.config.js的情况, 找到根目录下的vue-loader.conf.js  

恭喜你配置完成,最后记得重启下项目就好了

附:可能碰见的问题:
PostCSS plugin postcss-pxtorem requires PostCSS 8. Migration guide for end-users
postcss-pxtorem版本为8.0,但实际现有最高版本不是8.0,所以推荐先使用固定板@5.1.1,待作者更新了库再升级到最新,暂时先安装指定版本,

告别手动计算!用postcss-plugin-px2rem实现H5移动端rem自动适配(附Vant UI兼容方案) 本文详细介绍了使用postcss-plugin-px2rem实现H5移动端rem自动适配的完整方案,包括REM适配原理、PostCSS配置流程、Vant UI兼容方案以及高级优化技巧。通过自动化工具链,开发者可以告别手动计算,快速实现多设备适配,提升移动端开发效率。 阅读详情

相关推荐

移动端h5自适应rem适配最佳方案

最佳移动端h5自适应rem适配方案,灵活主流做法

观千剑而后识器,操千曲而后晓声。 3440

Vue中使px自动转化为rem配置(h5适配问题)

PostCSS。

m0_52872381的博客 1398

谈谈 H5 移动端适配原理

H5 移动端开发的必不可少的一个环节就是移动端网页的适配,因为UI通常只会提供大小固定的设计稿,而各种不同移动设备具有不同的页面分辨率和大小,所以适配的目的就是让一份设计稿在不同移动设备上表现出一致性。 虽然现如今各种插件都可以帮助我们快速配置完成,例如lib-flexible、postcss-pxtorem、postcss-px-to-viewport等等,但不少小伙伴在被问及相关原理时却很难说清楚,那么本篇文章我们就一起来探究一下其中原理吧!!!

jnfy的博客 1162

h5适配页面,尺寸px自动转rem,直接导入即可

【代码】h5适配页面,尺寸px自动转rem,直接导入即可。

qq_41429765的博客 494

h5的rem代替px做移动端界面的自适应

这两天要把公司以前的触屏设备的客户端应用做成h5的web应用,而且有针对不同设备和同一设备下的不同状态(有windows竖屏和横屏和android的平板),总想把它做成能适配不同设备分辨率的东西,所以来研究這个问题。 因为在之前的公司做过的项目中的某些模块参照过别的产品,发现过有用rem和em的,然后就来网上研究学习了解了下这几种相对单位。其中就找到了这篇文章:http://isux.tencen...

admom的博客 1733

html5px2remHTML5页面布局单位由px转换rem解决方案

html5-px2rem - HTML5页面布局单位由px转换rem解决方案

移动端适配rem方案、postcss-pxtorem+css中二倍图,三倍图的使用、uniapp 设计稿px处理为rpx

做移动端的适配我们就是要考虑,对于不同大小的手机屏幕,怎么动态改变页面布局中所有盒子的宽度高度、字体大小等。这个问题我们可以使用相对单位rem指相对于根元素的字体大小的单位。设置html的 font-size 属性,rem 是根据它的大小来动态变化整个项目中使用 rem 单位的元素大小。 uniapp 单位rpx ,设计稿尺寸px处理方式 postcss-pxtorem对内联样式、Echarts postcss-pxtorem的弊端 uniapp 设计稿px处理为rpx px与rpx的关系

muzidigbig的博客 1万+

多旋翼飞行器设计与控制·Pixhawk4以及外部设备接线(笔记004)

笔记主要来源:Pixhawk 4 接线快速入门 目录 一、Pixhawk 4 的各个接口 二、接线图概览(重要传感器及外围设备) 三、飞控、GPS的安装和方向 四、电源 五、无线电遥控 六、数传电台(可选) 七、SD Card(可选) 八、电机以及其他外设 一、Pixhawk 4 的各个接口 FMU:Flight Management Unit 飞行管理组件 主 FMU 处理器:STM32F765 32 位 Arm® Cortex®-M7,216MHz,2MB...

猪猪的博客 1万+

让px单位自动转换为rem的方法

开发工具: 编辑器:vscode; css预处理器:less;(无具体要求);步骤: 1. vscode安装cssrem插件; 2. 修改css插件的默认配置,其默认转换px为16px, 需要改为当前项目设计的1rem所对应的px,vscode插件的默认安装目录一般为 C:\Users\用户名\.vscode\extensions;找到 cipchk.cssrem-0.0.3 ...

weixin_30814329的博客 1236

别再让步进电机‘发烧’了!用FOC闭环驱动实现精准力矩控制(基于P0斩波恒流版)

本文详细介绍了如何利用FOC闭环驱动技术(基于P0斩波恒流版)解决步进电机过热和力矩控制不精准的问题。通过对比传统开环控制的缺陷,展示了FOC在降低温度、提升精度和能效方面的显著优势,并提供了硬件配置、软件实现及性能优化的完整方案。

weixin_30872157的博客 566

单线激光雷达的工作原理

单线激光雷达通过单一激光束的水平扫描和时间 / 相位测量,实现二维环境的距离感知,是低成本二维导航的核心传感器。尽管其无法直接提供三维信息,但其可靠性和经济性使其在消费级和工业级场景中广泛应用。随着技术发展,部分单线雷达通过振动镜或 MEMS 微振镜实现微小角度偏转,可近似模拟多线扫描效果,进一步拓展了应用边界。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 1857

H5在移动端适配px自动转rem

这样的话我们设置的px值就变成相对应的10%的屏幕宽度 *(75px/75)rem,当然也可以根据屏幕宽度动态配置html的font-size。所以当你一个75px值时,它会自动转成(75px/37.5)rem。4.老版本项目,没有vue.config.js的情况,找到根目录下的vue-loader.conf.js。转化完之后,你还需要在根元素设置它的font-size,因为rem是相对于根元素来设置大小的。3. 如果你的项目使用vue-cli构建,你也可以直接在vue.config.js配置。

weixin_60477441的博客 475

基于STM32单片机的智能分拣系统

基于STM32单片机的智能分拣系统是一种高效、精准的自动化分拣解决方案,适用于物流、仓储、制造业等领域。该系统利用STM32单片机作为核心控制器,结合传感器技术、电机控制算法和通信模块,实现对物品的自动识别、分类和分拣。通过智能化的设计,该系统能够大幅提高分拣效率,降低人工成本,并减少错误率。基于STM32单片机的智能分拣系统是一种高效、精准、低成本的自动化解决方案,能够广泛应用于物流、制造、环保等领域。

qq_62634009的博客 1940

移动端H5自适应:基于rem的响应式布局实战指南

本文详细介绍了基于rem的移动端H5自适应布局实战方案。通过动态设置根字体大小,结合PostCSS插件自动转换px单位,实现了一套高效、稳定的响应式布局方法。文章深入剖析了rem适配原理,并提供了从环境搭建到处理1px边框、第三方UI库兼容等常见问题的完整避坑指南,是移动端开发的实用参考。

work3的博客 480

微信公众号 - 超详细 H5 网页接入微信支付功能,开发网站微信支付最详细的教程示例代码(微信公众号前端支付 JS-SDK / JSAPI 微信H5授权登录支付,唤起微信支付)最新超级详细教程

H5页面接入微信支付功能,前端网页端怎么做微信JSAPI支付,vue网站接入微信JSSDK支付,vueH5项目如何做使用微信支付,端h5调用微信支付jsapi方法,前端vue开发的H5网站怎么微信支付最详细的教程示例代码,vue怎么调取微信支付流程,将H5接入微信支付退款,vue网站怎么搞微信支付,H5前端开发网站在微信环境内H5调起微信支付,react项目h5如何调用微信支付的方法,nuxt.js项目vueH5集成微信JS支付,网站怎么做出H5微信公众号支付,请问vue.js这个框

🏆 前端领域优质创作者 8124

在 SAP BTP 上为应用开启多租户能力:基于 SaaS Provisioning 和 XSUAA 的完整实践指南

本文介绍了在SAP BTP上配置多租户应用的实战指南。主要内容包括: 多租户架构概述:解释provider子账户、consumer子账户和tenant的概念,以及数据隔离机制。 安全配置:在xs-security.json中设置tenant-mode为shared,并为SaaS Provisioning服务添加回调scope授权。 路由配置:通过manifest.yml设置TENANT_HOST_PATTERN来定义多租户访问模式,确保不同租户通过不同子域名访问同一应用。 服务绑定:将XSUAA和SaaS

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 144

电商H5实战:postcss-pxtorem最佳实践

在电商H5项目开发中,移动端适配一直是个让人头疼的问题。最近我在一个电商项目中实践了postcss-pxtorem方案,配合flexible.js实现了完美的多设备适配,下面分享我的实战经验。进行开发和调试,发现它的一键部署功能特别方便,省去了繁琐的环境配置过程。传统的rem适配需要手动计算px到rem的转换,非常繁琐。如果你也在做移动端适配,不妨试试这个方案,配合InsCode平台的便捷功能,开发效率会有明显提升。经过这些优化,我们的电商H5在各种设备上都能流畅运行,用户体验大幅提升。

AgatePanther34的博客 331

用 SemanticObject 把字段变成可点击链接:Fiori Elements Navigation Using a Link 的工程化实践

SAP Fiori elements 通过 Common.SemanticObject 注解可将字段转为可点击链接,实现应用间跳转。当源字段名与目标属性名不一致时,需使用 Common.SemanticObjectMapping 进行映射。该功能依赖 Fiori Launchpad 的目标映射配置,确保正确解析 semantic object + action 并传递参数。常见误区包括未配置目标映射或字段映射错误,需逐一检查语义标注、intent 解析和参数传递链路。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 272

vuecli3中移动端,将px转换成rem适配方法

vuecli3中移动端,将px转换成rem适配方法 vuecli3中没有配置的vue.config.js,那么这时候我们需要手动配置,在项目中手动创建一个即可,可是手动创建之后发现不知道怎么去运用那么按照我的方法去操作就可以生效了 移动端适配配置 npm install postcss-pxtorem -D npm i -S amfe-flexible postcss-pxtorem:可以把px自动切换为rem,如果需要使用px的时候改成 Px 就可以生效 amfe-flexible:移动适配方案,自动计

qq_49732089的博客 437

数仓建模—维度建模之维度表

首先要学会识别维度,维度是相对稳定的、可抽象具有共性的、固有的(天然的)描述度量或事实的上下文属性信息,失去维度信息的度量信息是没有意义的或者说是失去维度信息的事实表是没有意义的。其次要掌握维度表的设计原则和设计流程,从而更加科学的设计维度表,其实这些东西都是术,我们一直都说一句话大道至简,其实如果你掌握了精髓,抛开这些术也可以做到得心应手,这就像张无忌练太极剑一样,忘记了才能达到道的境界,也就是无我,如果做不到就记住这些原则加以应用从而达到术的境界。

2401_84052244的博客 4361

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

通过插件postcss-pxtorem轻松实现px到rem转换,完成移动端适配

移动端适配: 为什么要适配呢?使用px单位设置页面的大小时,不进行适配处理,在不同的设备中显示结果是这样的,分辨率越大,显示的元素越小。 如下图1所示,使用的是px单位,未进行适配:iPhone5、iPhone6及iPhone6 Plus的显示效果: 控制台看到的css单位为px: 适配的方法有很多种,本节介绍之前开发项目使用的适配方法:使用post-loader 加 postcss-pxto...

llq886的博客 3万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

H5移动端rem适配的js方法,1rem=100px

H5移动端rem适配的js方法,1rem=100px 使用这个方法适配后,1rem=100px。假如设计图上有个字体大小是36px,那么开发的时候写这个字体大小就写0.36rem。 方法: function rem(designWidth, maxWidth) { var doc = document, win = window, docEl = doc.documentElement, ...

lifachang的博客 2751

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

cli3 px转rem适配移动端_大厂是怎么做移动端适配的

作者:子非鱼转发链接:https://mp.weixin.qq.com/s/uQ8c2Z6GJr4eyH3kidZt3g前言随着Web技术的革新,移动端适配方案也在不断的变化,网上有很多关于移动端适配的文章,说什么rem布局已经过时,vm适配才是最好的适配方案。有这种理解的同学是错误的,任何适配方案都有它的优缺点,要结合自己的使用场景来进行选择。前面小编也发布了几篇关于移动适配的文章,一起来复习一...

weixin_39744240的博客 1269

移动端Rem布局适配下,出现部署后border不见问题

“为什么移动端设置的border不见了”,回答是:“部分低版本安卓手机不显示1px以下的像素”

weixin_65908792的博客 1076

vue项目转rem;H5配置rem;px转rem

vue项目转rem;H5配置rem;px转rem

i_am_a_div的博客 1710
上一篇: 使用console.time打印代码运行时间
下一篇: TypeScript基本用法和在vue中的使用
tomotoCoder
博客等级 码龄9年 8粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值