Html5做webapp中界面适配的问题总结

做一款软件首先是要做出相应的界面,然而对于手机软件开发者来说,大小各异的手机屏幕却给我们带来了不少的麻烦。HTML5技术在大家的心中要比传统的Android/iOS/wp简单的多,因为它的适配性和平台跨越方面比较出色。在外看来却不是那样的,跨平台的问题暂且不说,其屏幕适配方面并不比原生态代码简单。下面给大家分享下我总结出来的H5界面适配:

一、Media Queries

网上一搜一大把的一个方式MediaQueries,在CSS中写下不同屏幕下使用不同的CSS来实现屏幕适配,这个方式不但可以进行字体的适配还能实现不同界面显示不同的样式:

1:CSS中根据要求写不同的屏幕范围,如下:

@media screen and (min-width: 240px) and(max-width:319px){

    html {font-size: 10px; }

}

2:HTML代码头部添加下面一段:

<meta name="viewport"content="width=device-width, initial-scale=1, maximum-scale=1.0,user-scalable=no;" />

这里的各项参数所代表的意思可以另行百度。

这种方式跟android中通过多个drawable、layout、value文件夹各自编写XML界面的方式相同。

 

二、em和rem的使用

避免px单位的使用是个很重要的一点。这里用em和rem来代替px。

em:根据父标签的字体大小来设置当前标签的宽高或字体大小。如:

<div id=”a”>

<div id=”b”></div>

</div>

如果给b设置字体大小为0.5em,则b的字体大小将会是a的一半。但是本人并不推荐大量使用em,因为这会让你的计算变得困难。试想,当多层嵌套时都使用em那最里面的字体将是最外层标签字体的几分之几呢?

rem:根据跟标签的字体大小来适配当前标签的宽高或字体大小。

这个单位推荐使用,所谓的跟标签,对于html代码来说,自然就是最外层的<html>标签了。不管自己的html代码有多少层的嵌套rem单位总是根据<html>标签字体来计算。

 

三、百分比的使用

要想屏幕适配的好,就多用百分比来作为宽高的值。这一般是用在css上。

 

四、绝对适配方案

不久前打开QQ邮箱,发现一个现象,当屏幕很小的时候QQ邮箱的字体就很小,当浏览器不断的拖大的过程中字体就好跟着慢慢变大。这让我甚是惊奇,我也一直想实现这样的一个屏幕适配方案。后来有了下面的方案,其实就是为了把这个方案分享出去才会有了这篇文章,说起来也简单,在采用rem作为大小单位的同时通过js根据屏幕大小计算出一个合适的数值赋值给当前的html即可。

在onLoad的时候执行下面的代码(后面的20根据自己的需要来改)

        var fontSize = $(window).width()/20;//屏幕的宽

        $("html").css("font-size",fontSize +"px");

这里是引用了jQuery,因而上面两行代码也是jquery的代码。

纯JS代码可以这样写:

var fontSize = document.body.clientWidth

var htmlElement = document.getElementsByTagName("html")[0];

htmlElement.style.fontSize=fontSize+”px”;

其实不难看出,就是拿当前的屏幕尺寸去除一个数值,得到字体大小,进而将这个字体大小赋值给heml跟节点(跟标签)即可,然后全文设置字体大小或控件大小时使用rem作为单位。也可以配合百分比设置控件大小。这样一来基本上可以根据屏幕尺寸完美缩放自己的界面了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设置Maven下载镜像源(直接替换其中的 settings.xml 内容即可)

<?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/SETTINGS/1.0.…

P1576 最小花费

----------------------------------- 这道题就是图论最短路&#xff0c;但是我们要改一下一些细节 比如说&#xff0c;因为这是算汇率&#xff0c;我们的初始化就要是0 我们还要改一改松弛操作 ----------------------------------- 还有&#xff0c;题目上给的是汇率&#xf…

css hack技术整理

做前端多年&#xff0c;虽然不是经常需要hack&#xff0c;但是我们经常会遇到各浏览器表现不一致的情况。基于此&#xff0c;某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现。我个人是不太推荐使用hack的&#xff0c;要知道一名好的前端&#xff0c;…

Hanoi双塔问题

Hanoi双塔问题 题目描述 给定A,B,C三根足够长的细柱&#xff0c;在A柱上放有2n个中间有空的圆盘&#xff0c;共有n个不同的尺寸&#xff0c;每个尺寸都有两个相同的圆盘&#xff0c;注意这两个圆盘是不加区分的(下图为n3的情形&#xff09;。现要将 这些国盘移到C柱上&#xff…

vue中config/index.js:配置的详细理解

当我们需要和后台分离部署的时候&#xff0c;必须配置config/index.js: 用vue-cli 自动构建的目录里面 &#xff08;环境变量及其基本变量的配置&#xff09; 123456789101112131415var path require(path)module.exports {build: {index: path.resolve(__dirname, dist/ind…

uni-app吸顶固定样式

<template><view class"full"><view class"sticky-box"><!-- 搜索 --><uni-search-bar class"unisearchbar" radius"5" placeholder"请输入搜索关键词" clearButton"auto" bgColor&qu…

Django(模板语言-自定义filter和simple_tag)

filter过滤器的主要形式&#xff1a;变量|函数,意思是将变量交给函数处理&#xff0c;而自定义filter就是自己定义函数&#xff0c;因为用到已有的很少。 1.在当前app中创建templatetags模块(包&#xff1a;带__init__.py)&#xff08;必须的&#xff09; 2.在templatetags中创…

uni-app商品分类

<template><view class"classify"><!-- 分类部分 --><view class"cate-left"><view :class"[cate-item,activeIndexindex?active:]" v-for"(item,index) in cateList" :key"index"click"c…

10分钟看懂浏览器的渲染过程及优化

一、浏览器概述 目前的主流浏览器有5个&#xff1a;Internet Explorer、Firefox、Safari、Chrome和Opera浏览器。根据 StatCounter 浏览器统计数据&#xff0c;目前&#xff08;截止2019 年 5 月&#xff09;Firefox、Safari 和 Chrome 浏览器的总市场占有率将近 83.66%。由此可…

浅谈 Vue 项目优化

前几天看到大家说 vue 项目越大越难优化&#xff0c;带来很多痛苦&#xff0c;这是避免不了的&#xff0c;问题终究要解决&#xff0c;框架的性能是没有问题的&#xff0c;各大测试网站都有相关数据。下面进入正题 基础优化 所谓的基础优化是任何 web 项目都要做的&#xff0c;…

uni-app微信小程序一键登录获取权限功能

<button class"bottom size_30" type"primary" lang"zh_CN" click"getUserInfo">一键登录</button>//第一授权获取用户信息》按钮触发getUserInfo() {// 展示加载框uni.showLoading({title: 加载中,});uni.getUserProfile…

第九章 结构体与共用体

姓名&#xff1a;吕家浩 实验地点&#xff1a;教学楼514教室 实验时间&#xff1a;4月30日 一、本章要点 1.通过实验理解结构体和共用体的数据结构2.结构体、共用体中数组的使用及变量的赋值3.结构体和共用体定义时的嵌套使用&#xff08;嵌套使用的结构体必须先定义&…

H5-localStorage数据存储总结

一、什么是localStorage、sessionStorage 在HTML5中&#xff0c;新加入了一个localStorage特性&#xff0c;这个特性主要是用来作为本地存储来使用的&#xff0c;解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k)&#xff0c;localStorage中一般浏览器支持的…

正则校验与时间格式化

// 日期回显 export function formatTime(data&#xff0c;fametYYYY-MM-DD HH:MMM:SS) {if(famet YYYY-MM-DD HH:MMM:SS){const time new Date(data)const year time.getFullYear()const month time.getMonth() 1const day time.getDate()const hour time.getHours()co…

CometOJ#6 双倍快乐(简单DP)

链接&#xff1a;https://www.cometoj.com/contest/48/problem/B 题意&#xff1a;给出一串数列&#xff0c;要求在这个数列中找出两条“不相交”的非下降子序列使得子序列之和最大。“不相交”即不存在任意的ai同时存在于两个子序列中。 分析&#xff1a;笔者刷题量不多&#…

iOS开发-证书问题精析~

在iOS开发过程中&#xff0c;不可避免的要和证书打交道&#xff0c;真机调试、App上架、打包给测试去测试等都需要搞证书。在此过程中我们会遇到很多的问题&#xff0c;但是如果掌握了真机调试的原理和本质&#xff1b;遇到问题&#xff0c;我们就更容易定位问题之所在&#xf…

selenium+Java自动化

转载于:https://www.cnblogs.com/arvin-feng/p/11110483.html

html 5 本地数据库(Web Sql Database)

基于HTML5的Web DataBase 可以让你在浏览器中进行数据持久地存储管理和有效查询&#xff0c;假设你的离线应用程序有需要规范化的存储功能 本文讲述如何使用核心方法openDatabase、transaction、executeSql 1.新建一个网页&#xff0c;比如&#xff1a;test.html 内容如下&am…

前端学习资料及路线名称网站

IT前端学习资料及路线常用PC端UI组件库饿了么(Element-UI)https://element.eleme.cn/#/zh-CN常用小程序端UI组件库uView UIhttp://v1.uviewui.com/名称网站JQuery文件网https://code.jquery.com/jquery/jQuery手册&#xff08;pc端&#xff09;http://jquery.cuishifeng.cn/jQu…

JS实现生成一个周对应日期数组

/* 获取日期和周 */getDateWeek() {/* 得到当前日期的时间戳 */const timestamp Date.now()// const timestamp new Date(2019, 7, 30, 0, 0, 0, 0).getTime()const dateWeek Array.from(new Array(7)).map((_, i) > {/* 得到当前周每一天的时间戳 */const weekTimestamp…