1.移动端视口问题

视口是指浏览器的可视区域,移动端的视口到底是多宽呢?

现在市面上的大部分手机,比如iphone X,它的默认视口宽度为980px,而一个iphone X的屏幕宽度仅仅为375px。看到问题了吗?一个宽度只有375像素的手机,却能够显示宽度为980像素的网页,自然而然,网页会被缩小。

(注:实际上,这里说的375像素不是真实的物理像素,至于这个375像素是怎么来的,以及为什么大部分移动端的默认视口宽度是980,这就是另一个更加复杂的话题了,在此我们先不做讨论。)

我们可以使用谷歌浏览器的移动端调试工具,来访问百度的搜索结果,可以看到网页明显被缩小了,而且页面宽度定格在980px(不信的话大家可以试试)。

(这种情况我也就不给大家演示了,这明显是一个显而易见的道理,比如你在pc端的网页放在手机上能一样吗?)

而且,不同手机的实际宽度是不一样的。

好在HTML给我们提供了一个关键字device-width ,该关键是读取当前移动设备的宽度。

因此,我们只需要使用下面的代码,即可让所有移动设备的视口宽度和其自身的宽度相等。

< meta name="viewport" content="width=device-width">

2.移动端误触解决办法

< meta name="viewport" content="width=device-width, initial-scale=1.0, min

imum-scale=1.0, maximum-scale=1.0, user-scalable=0">

解析:

initial-scale=1.0 :初始缩放比例为1.0(原始大小),这句代码的目的还不是放置用户缩放的

minimum-scale=1.0 :网页最小的缩小比例为1.0(原始大小),设置这句代码的目的是为了放置某些程序(比如JS)无意中修改了网页的缩小比例

maximum-scale=1.0 :网页最大的放大比例为1.0(原始大小),设置这句代码的目的是为了放置某些程序(比如JS)无意中修改了网页的放大比例

user-scalable=0 :这句代码才是不允许用户对网页进行缩放

其实这就是禁止缩放,在手机端写出的页面将会无法整体左右滑动(当然,想要内部滑动可以自己设置啊),正常情况下,我们都会应用到上面的那一串代码(在这里说个题外话,我这两天做项目就有一次忘记添加这段代码,结果找半天找不出来原因,后来一问我的授课老师才发现原因(笑哭))。

3.移动端尺寸

是同一个网页在不同尺寸手机中的效果。仔细观察,你会发现,网页中的很多元素,随着视口的宽度变大,尺寸也会随之变大,无论是字体、高度、间隙都有这样的特点(这当然不会是响应式布局啦,毕竟响应式布局那么麻烦,脑子有坑才会一点一点的去调吧)。

这样一来,就要求我们在开发移动端的页面时,当遇到字体大小、宽高、margin、padding等尺寸类的属性时,不能设置固定的像素值。

注:border边框大小除外

(既然有问题,怎么会没有解决办法呢?我已经给大家写好啦,感谢我吧!)

解决方法:

写一段JS代码,应用到网页

!(function(win, doc) {

function setFontSize() {

var winWidth = window.innerWidth;

doc.documentElement.style.fontSize = (winWidth / 设计稿宽度) * 比例

+ 'px';}

var evt = 'onorientationchange' in win ? 'orientationchange' : 'resize';

var timer = null;

win.addEventListener(evt, function() {clearTimeout(timer);

timer = setTimeout(setFontSize, 300);}, false);

win.addEventListener("pageshow", function(e) {if (e.persisted) {

clearTimeout(timer);timer = setTimeout(setFontSize, 300);

}

}, false);

setFontSize();

}(window, document));

注:将上述代码中的 设计稿宽度 替换为设计稿的实际宽度,比如1080(不要加单位px)

注2:将上述代码中的 比例 替换为一个合适的值,比如100(推荐而已,你也可以设置为其他的数值)

替换之后,代码格式自然跟着改变:

这段代码始终在监视视口宽度变化,始终保证:

根元素html的字体大小 = (视口宽度 / 1080) * 100【呐呐,就是改这个乘号后面的数值,看到了吗?】

4.rem

rem单位是相对于根元素html字体大小的(如果根元素没有设置字体大小,则相对于基准字号)。而现在,根元素的字体大小,正好反映了视口的宽度。

于是,我们只需要将各种尺寸的值,使用rem作为单位,就可以适应视口宽度的变化了

rem值 = 设计稿中的尺寸 / 100(重点!!!这个100就是相对于上面的*100。)

比如,设计稿中某个元素的宽度为100像素,那么应该设置它的宽度为 1rem ,这样一来,当视口尺寸等于设计稿尺寸1080时,根元素的字体大小为(1080/1080)*100 = 100px ,它的宽度

为 1rem = 100px ;如果视口尺寸变小了,比如变成了375,那么根元素的字体大小为(375/1080)*100 = 34.72px ,那么它的宽度为 1rem = 34.72px 。这样就完美的和设计稿比例一致了。

注意:在移动端,如果使用了背景图(比如雪碧图),记得用同样的方式调整背景图的尺寸。

题外话:移动端看上去是不是很麻烦?视口那么小,还要引入各种东西,里面要添加的又杂又乱,还要计算数值,是不是很麻烦?

其实移动端是很简单的,计算数值问题大家可以使用calc()【括号内输入加减乘除就好了,系统会自动帮你计算最后结果的值的】

而且,无论任何数值,在经过一切计算后,在浏览器中表现出来的都会是PX为单位的数值!

java移动端开发_移动端开发相关推荐

  1. java后台转前端_从后端开发转职前端开发,我都经历了些什么?

    原标题:从后端开发转职前端开发,我都经历了些什么? 从前端转行后端 从后端开发转职到前端开发真的不容易. 特别是当你已经习惯了后端开发的工作模式,习惯了构建数据结构,编写类似于测试驱动开发的测试,习惯 ...

  2. pythonqt4上位机开发_上位机开发之单片机通信实践(一)

    经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的.PLC的本质就是单片机,在 ...

  3. android应用程序开发_深圳app开发公司:跨平台应用程序开发工具有哪些?

    深圳app开发公司:跨平台应用程序开发工具有哪些?跨平台应用程序开发工具的出现是移动开发的发展和竞争的结果.对更快.更经济的应用程序开发的追求导致了跨平台技术的出现.在移动应用程序开发工具推荐中,哪些 ...

  4. python手机app开发_利用python开发app实战的方法

    我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了.最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一 ...

  5. 简单Android app开发_什么方法开发APP最简单?试试0代码开发平台

    开发APP有哪些方式? 说到开发APP,那肯定是找外包公司最方便,只用花钱就能坐等APP完成.但是,现在需要开发APP的公司范围越来越广,传统外包公司高昂的费用显然已经不能普罗大众,那么,有没有简单便 ...

  6. 网站加入代码让网页以电脑端打开_移动端网站和pc端网站的异同点

    移动端网站和pc端网站的共性: 手机网站和电脑网站一样,都是需要有一个域名,一个存放源代码的空间,一套网站运行的源代码,访客通过在手机端输入域名访问. 移动端网站和pc端网站的区别: 电脑网站对应的屏 ...

  7. java获取移动端定位_移动端报表JS开发示例--获取定位

    上次分享了移动端报表JS开发的系统概念,后来我又回去摸索了一些案例.之前接触到的FineReport的APP客户端可以用来打卡签到,就好奇研究了以下,这次就来聊一聊报表移动端开发如何实现定位功能. 1 ...

  8. .net移动端开发_移动端开发1(前端一)

    Day14 1.视口:浏览器显示内容的屏幕区域 < meta name="viewport"//视图标签 content="width"//设备宽度 in ...

  9. java移动端接口测试_移动端质量体系之性能测试(上)

    目前应用越来越多,竞争也越来越激烈,那用户体验就变得越来越重要.曾经一份报告这么说: 71%用户希望在手机上打开网页能跟电脑一样快 5秒钟被认为是用户能忍受的最长响应时间,如果响应时间超过5秒,50% ...

最新文章

  1. [Spring mvc 深度解析(二)] Tomcat分析
  2. 陈一舟:在中国当企业家要有承受能力 失败了大家会看你笑话
  3. IDEA中Git操作
  4. UITextField实时监听输入文本的变化
  5. linux方面的杂谈
  6. spring的路径匹配问题
  7. 279. Perfect Squares
  8. 【图像隐写】基于matlab DWT数字水印嵌入+攻击+提取【含Matlab源码 1759期】
  9. Java排序算法——猴子排序(Bogo Sort)
  10. 软件项目管理 6.6.三点估算法
  11. Hidistro 易分销2.0 源码带注释非反编译源码真正完整版本
  12. PCM音频 I2S音频
  13. 求1-1/2+1/3-1/4+……+1/99-1/100 的值
  14. vue打开新窗口并且实现传参,有图有真相
  15. 租用gpu训练神经网络(矩池云)
  16. 安全协议系列(三)----CCMP与WPA-PSK
  17. 计算机图形基础学答案,计算机图形学基础答案全.pdf
  18. HEVC/H.265(1)——入门初步了解
  19. 吴洪声:2021, DNSPod, Everywhere.
  20. 记录学习Android基础的心得00

热门文章

  1. 吸顶灯怎么固定天花板_吸顶灯不打孔如何固定
  2. spring boot 项目 更改项目包名后启动报:错误: 找不到或无法加载主类
  3. php数组的值转字符串,php 数组值怎么转字符串
  4. 推荐两款移动开发者服务
  5. SQL批量删除数据操作
  6. windows10下C盘在无相邻空闲卷的情况下进行扩容
  7. linux中内核4c,Linux内核编译
  8. 三原色下稀薄的用户粘性:即时配送领域的王者们没有荣耀
  9. 同一台服务器 不同站点 域名解析,域名是什么?一级域名和二级域名有什么关系?一个域名怎么做不同的网站?...
  10. oracle数据库实时同步(trigger的方式)