手机端页面rem宽度自适应脚本

yizhihongxing

下面是关于“手机端页面rem宽度自适应脚本”的完整攻略。

什么是rem?

rem是一种可以相对于根元素大小进行调整的单位,它可以用于替代像素作为页面布局的单位。使用rem单位的一个好处是,整个页面的宽度可以根据页面宽度大小进行自动调整,达到适配不同的设备的屏幕。

rem宽度自适应脚本的实现

我们可以通过javascript编写自适应rem脚本,根据设备宽度动态改变html的font-size大小,从而实现自适应。首先,我们可以在head标签里添加以下代码:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<script type="text/javascript">
    // 获取当前页面宽度并将其存储在变量中
    var pageWidth = document.documentElement.clientWidth;
    // 如果页面宽度大于640,则设置rem大小为100px
    if (pageWidth > 640) {
        document.documentElement.style.fontSize = "100px";
    } 
    // 否则计算rem大小并设置
    else {
        document.documentElement.style.fontSize = 100 * (pageWidth / 640) + 'px';
    }
</script>

上述代码基本实现了rem的自适应,不过在不同的设备上可能会出现问题,需要进一步调整。

常见问题及解决方法

问题1:不同设备上rem不一致

解决方法:

function changeRootFontSize() {
  var BASE_FONT_SIZE = 100;
  var baseWidth = 750;
  var clientWidth = document.documentElement.clientWidth || window.innerWidth;
  var bili = clientWidth/baseWidth;
  var basefontsize = bili*BASE_FONT_SIZE;
  document.documentElement.style.fontSize = basefontsize + 'px';
}
changeRootFontSize();
window.addEventListener("resize",changeRootFontSize,false);

上述代码中的baseWidth表示设计稿的宽度,通过根据设计稿宽度计算出每个设备应该设置的font-size大小。bili则为计算出的比例系数,即当前浏览器宽度与设计稿宽度的比值,用于根据比例计算实际设备需要设置的font-size。

我们同时添加了一个window resize事件监听,用于页面大小发生变化时重新计算font-size大小。

问题2:在新设备上rem发生变化

解决方法:

function changeRootFontSize() {
  var BASE_FONT_SIZE = 100;
  var baseWidth = 750;
  var clientWidth = document.documentElement.clientWidth || window.innerWidth;
  var bili = clientWidth/baseWidth;
  var basefontsize = bili*BASE_FONT_SIZE;
  document.documentElement.style.fontSize = basefontsize + 'px';
}
changeRootFontSize();
window.addEventListener("resize",changeRootFontSize,false);
window.addEventListener("orientationchange",changeRootFontSize,false);

新增了一个window orientationchange事件监听,用于在屏幕旋转时触发重新计算font-size大小。

总结

通过以上展示的几种方法,我们可以实现手机端页面rem宽度自适应脚本。通过添加一些常见问题的解决方案,我们可以让这个脚本更加健壮,更适合实际使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:手机端页面rem宽度自适应脚本 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享

    下面是关于“基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享”的完整攻略。 简介 该效果可以在网页上实现一个带有3D效果的海报展示区域,即类似于苹果电视背景的风格。展示区域可以响应鼠标或手指触摸的动作,具有视差特效,让用户可以在视觉上感受到立体的效果,增强该区域的互动性。 技术栈 该效果的实现主要采用的技术是jQuery和CSS3。…

    css 2023年6月10日
    00
  • css背景色透明 内容不透明的解决方法(兼容所有浏览器)

    为了实现 CSS 背景色透明,内容不透明的效果,可以使用以下两种方法: 方法一:使用 RGBA 颜色 注:RGBA 颜色值包含了一个额外的 alpha 值,该值可以用来实现透明度,需要注意的是,alpha 值为 0 时表示完全透明,为 1 时表示完全不透明。 示例代码: .transparent-bg { background-color: rgba(255…

    css 2023年6月9日
    00
  • css中的长度单位(em/ex/px/pt)使用介绍

    CSS中的长度单位(em/ex/px/pt)使用介绍 在CSS中,长度单位用于指定元素的尺寸和位置。常见的长度单位包括em、ex、px和pt等。本攻略将详细讲解CSS中的长度单位使用介绍,包括各种长度单位的含义、使用场景和示例说明。 1. em单位 em单位是相对长度单位,它的值相对于父元素的字体大小。例如,如果父元素的字体大小为16px,那么1em就等于1…

    css 2023年5月18日
    00
  • BootStrapValidator初使用教程详解

    BootStrapValidator初使用教程详解 什么是 Bootstrap Validator Bootstrap Validator 是一个 jQuery 插件,它为表单验证提供了强大的支持。它可以在客户端对表单进行验证,用户在提交表单之前就可以知道表单是否正确。Bootstrap Validator 可以验证所有 HTML 输入元素,包括文本输入框、…

    css 2023年6月9日
    00
  • vue使用element-ui的el-date-picker设置样式无效的解决

    问题描述 在使用Vue框架中,我们经常会使用Element UI库来构建界面。其中el-date-picker是一个日期选择器组件,但在使用el-date-picker时,我们可能会遇到设置样式无效的情况。 原因分析 这是因为el-date-picker组件本身使用了格式为scoped的CSS,在组件内部定义的样式只能作用于该组件内的元素。而在设置el-da…

    css 2023年6月9日
    00
  • jQuery插件bxSlider实现响应式焦点图

    下面是详细的攻略: 1. 什么是bxSlider bxSlider是一款基于jQuery库的响应式轮播插件,支持多种轮播方式,可以实现各种样式的焦点图、轮播图、幻灯片等。 2. 如何引入bxSlider 首先,你需要引入jQuery和bxSlider的js和css文件。可以在官网上下载最新的版本,也可以通过CDN引入: <link rel="…

    css 2023年6月11日
    00
  • JavaScript提高性能知识点汇总

    下面是我对“JavaScript提高性能知识点汇总”的完整攻略: JavaScript提高性能知识点汇总 1. 减少DOM操作 DOM操纵是JavaScript编写效率较低的部分。频繁进行DOM操作会导致浏览器重绘,并很容易导致页面性能延迟。例如,下面的代码将对性能产生负面影响: for (var i=0;i<1000;i++){ document.g…

    css 2023年6月11日
    00
  • 绝对定位(absolute)和浮动定位(float)分析

    绝对定位和浮动定位是 CSS 中一些常见的定位方式,它们可以让我们更加灵活地进行布局。下面是针对这两种定位方式的完整分析。 绝对定位(absolute) 绝对定位是相对于父元素的位置来设置元素位置的一种方式。通过使用 position:absolute 来启用绝对定位,然后使用 top、right、bottom 和 left 属性来指定元素在父元素中的精确位…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部