Web移动初识

一、单位

说到移动端,不得不提适配问题,大大小小的移动设备不但让做AndroidiOS的难过,因为设备大小和浏览器的差异,现在也让前端开始头疼了,不过,方法总是比问题多,我们是革命的队伍,遇到问题就要上!

因为现如今市面上移动设备的分辨率大小不同,显然咱们常用的px单位在这个时候就有些不太灵光了,为此,CSS3出了一个新单位——rem,rem是移动端神器,它完美解决了分辨率的适配问题。

rem就是相对于根元素<html>的font-size来做计算,举个栗子:


如图这样,一个宽高各100px的box就出现了,很简单吧,发现没,有些像我们以前常用的em,不过rem是相对于根元素(<html>)的字体大小,em相对 于父元素的字体大小。

虽然很简单,但是移动设备那么多,我们又怎么根据手机屏幕的分辨率不同,去设置<html>的字体大小呢?

我知道的方法有2个:

1)通过css媒体查询


如图所示,通过媒体查询的方式,只需要把常用的屏幕宽度考虑进去即可,能够满足大部分应用场景,不过这一做法不够严谨,那就用js去设置fontSize吧!

2)通过js计算



通过js设备的屏幕分辨率,可以计算出相应的字体的大小,这个方法可以适配所有屏幕的大小,这下就完美许多了。

不过有些时候会很麻烦,因为rem会涉及到换算的问题,比如70px的宽,根目录字体是12px,那换算公式为:70/12 = 5.83333333~,每次写一个单位都要用计算器去算,想想就泪崩了,不过作为程序猿,怎么能让人去做这种事,这工作可以让Less或者Sass等预处理器去完成。

二、使用<meta>标签中的viewport布局

有了rem单位还不够,得再加上viewport,有了这个东西,麻麻再也不用担心我的移动端适配问题了,话不多说,直接上图



红圈圈的必须要,有了这个<meta>标签,页面就有那么点意思了。

三、弹性布局盒子布局

以前PC端布局方式通常会使用float、margin、padding等方式布局,这些方法不仅有繁琐的计算,而且在移动端还

容易出错。现在移动端,有更好的选择,使用flexbox布局方式。举个栗子:用flex做tab

html代码: css代码:


做均分的tab,应该是flexbox最常见的一个功能了,实现原理很简单,如图,只需要给“父元素”,“子元素”

分别赋予“display:flex”,”flex:1″即可。子元素的宽度不会根据内容的长短而发生改变。前端同学增加或删减

tab数量,只需要增减DOM结构即可,无需样式的修改。

一直以来这种布局方式都有兼容性问题,让前端同学想用,又不敢用,究其原因也就是即分不清它各个版本的

编写规范和兼容性。值得惊喜的是,目前除了Opera mobile12,移动端的各大浏览器都是支持flexbox的旧版语法

的,但不包含flex的wrap属性。所以可以大胆用,不用太担心。

四、坑

布局问题算是解决了,虽然现在看似很完美了,不过,还是有很多坑在等着我们呢!

1、使用rem兼容性没问题,但是还是有许多问题需要注意

a) 做出来的效果与效果图有些许偏差

为什么会出现这个原因呢?后来发现,这是因为浏览器对小数数值的处理各不相同导致。不同浏览器计算rem转

换为px数值时,对于小数点后的数值的处理是有所偏差,rem计算偏差的根源是浏览器内核数字类型的区别,

如果浏览器的内核数字类型是float类型,能够较好地支持有小数点的数值。当浏览器内核数字类型是int类型,

不支持小数点,会对数字进行四舍五入,这样就会有偏差。如果元素越大偏差得就越明显!这个坑几乎无法避免,

只能让他更好的适应最多的浏览器。比如chroem内核。

b) 雪碧图定位问题

由上面我们可以得知,rem的换算成px的尺寸非严格精确,如果雪碧图图标之间的距离过小,就可能导致图标过界,

因此图与图之间的间隙需要留相应大一点。

c) rem单位最好不用在PC端

直接举个栗子:

代码:


看了代码,大家应该猜到,这应该是两个完全相同的盒子才对,不过,效果却是这样的

PC效果:


iPhone6效果:

从效果得知,PC端浏览器对rem单位支持并不友好,终其原因,我也不得而知,望有知道的同学,多多分享,

所以,前端同学尽量别把这个单位放到pc端上使用,以免和设计图有所出入。

1、使用弹性盒子模型需要注意的问题。

a) 虽然移动端的各大浏览器都是支持flexbox的旧版语法的,但是还是得有兼容性写法;

b) 在开发的时候,我发现在使用弹性盒子模型时,如果涉及到文字的时候需要注意,在li里写上“我们”和“我们的”,分别是两个字和三个字。会有不同的宽度而导致不均分,解决办法,如上面css所示,我设置了子元素width为5%(只有设置了li是统一的width就行,不一定需要是5%)就可以解决这个问题。



Java 是一种广泛使用的面向对象编程语言,它具有跨平台、可移植性强的特点,适用于开发桌面应用、Web 应用、移动应用(如 Android)、企业级应用等多种场景。学习 Java 编程语言可以从以下几个方面入手: ### 一、Java 概述 Java 最初由 Sun Microsystems 于 1995 年发布,后来被 Oracle 收购。它的设计理念之一是“一次编写,到处运行”(Write Once, Run Anywhere),这得益于 Java 虚拟机(JVM)的存在。Java 程序编译为字节码后,可以在任何支持 JVM 的设备上运行。 Java 支持动态类加载机制,允许在程序运行时根据需要加载类,从而提高灵活性并便于软件更新与扩展[^3]。 ### 二、基础语法 Java 的语法受到 C++ 的影响,但去除了 C++ 中一些复杂和易出错的特性,例如指针和多重继承。基本语法包括变量声明、数据类型、运算符、控制结构(如 if-else、for、while)、数组等。 例如,一个简单的 Java 程序如下所示: ```java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 该程序定义了一个类 `HelloWorld`,其中包含主方法 `main`,这是 Java 程序的入口点。`System.out.println` 用于输出文本到控制台。 ### 三、面向对象编程(OOP) Java 是一门纯面向对象的语言,支持封装、继承、多态三大特性。类和对象是 Java 编程的核心概念。通过类可以创建对象,对象之间可以通过方法调用进行交互。 此外,Java 提供了丰富的标准库,涵盖了集合框架、IO 流、网络通信、图形界面等多个方面,极大地方便了开发者[^1]。 ### 四、开发环境搭建 要开始 Java 开发,首先需要安装 JDK(Java Development Kit)。JDK 包括 Java 编译器(javac)、Java 运行环境(JRE)以及各种开发工具和库。 安装完成后,还需配置环境变量,特别是 `PATH` 和 `JAVA_HOME`,以确保命令行中可以识别 `javac` 和 `java` 命令[^2]。 ### 五、常用工具与实践 开发 Java 程序常用的 IDE(集成开发环境)有 IntelliJ IDEA、Eclipse 和 NetBeans。它们提供了代码编辑、调试、版本控制等功能,提升开发效率。 在实际编码过程中,合理使用注释有助于他人理解代码意图。Java 支持单行注释 `//`、多行注释 `/* */` 以及文档注释 `/** */`,后者可用于生成 API 文档。 另外,Java 提供了诸如 `Scanner` 类来处理用户输入,例如读取控制台输入的字符串或数值。`hasNextXxxx()` 方法族可以帮助判断是否有特定类型的输入可供读取[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值