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.pswp.cn/news/247684.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247684.shtml
英文地址,請注明出處:http://en.pswp.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…