手机端适应_不轻易透露的超强技巧!详解iVX中怎样做设备自适应

"自适应网页设计"的概念

e6177be2c25da6f370c44739060004ea.png

2010年,Ethan Marcotte提出了"自适应网页设计"(Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计,自适应是为了解决如何才能在不同大小的设备上呈现同样的网页,很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone / iPad版本,这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。


各种自适应场景简介

手机的屏幕比较小,宽度通常在600像素以下;iPad的屏幕宽度比手机大,通常在768到1024像素间;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768)。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。

3f2b2479cdf2f12da8ee5ede03ffe67b.png

上图是一套自适应UI范例,是设计师Mounse放在mediaqueri里设计的一套自适应的UI的作品。

  • 如果屏幕宽度大于1300像素,则表现为上图,这通常被用在适配pc端的web页面。
  • 如果屏幕宽度在600像素到1300像素之间,则表现为上图,这通常被用在适配pad和pc小屏幕。
  • 如果屏幕宽度在400像素到600像素之间,则表现为上图。
  • 如果屏幕宽度在400像素以下,则表现为上图,这通常用在我们的移动端(mobile版),自适应就是把上面的设计图做到一个web页面内而非多入口(portal)进入。

各种方法在各种自适应场景中的应用

1.使用行列组件的设备宽

测试案例下载地址:https://latest.ivx.cn/ih5/app/template/download?id=82

选中目标行或者列,在左边属性面板上点击设置环境宽,就会出现以上的五种宽度,分别为大屏pc宽、中屏pc宽、小屏pc宽、小屏pad宽、手机宽

实际使用中我们可能不会分的那么细致,一般是按照设计师出的图来决定分几种情况,按照上面的设计图,

1、 我们在大屏pc宽里填入1300px,效果是窗口宽度大于等于1600px显示当前效果,

在demo里,我们设置的窗口宽大于1300px显示1300px,当前窗口宽为1600px,果然显示1300px

8d2faa52af7d0dcc5939aa483e0f3359.png

1220077e04ed474337c341703aaae5a9.png

2、 我们在中屏pc宽里填入600px,效果是窗口宽度大于等于1280px,小于1600px,显示当前效果,

在demo里,我们设置的窗口宽大于1024px到1280px,显示600px,当前窗口宽为1024px,果然显示600px

e6e21bce60f876a8caa05d6903dab8cd.png

df0af55a88ac63c3d82941566b8141ad.png

3、我们在小屏pc宽里填入400px,效果是窗口宽度大于等于1024px,小于1280px,显示当前效果,

在demo里,我们设置的窗口宽小于640px,显示400px,当前窗口宽为600px,果然显示400px

4902af94bca24809642002546fcdf182.png

a4c47a8c55fe277e58b953c69d4bb34b.png

4、我们在手机宽里填入400px,效果是窗口宽度小于等于640px显示当前效果

在demo里,我们设置的窗口宽小于640px,显示400px,当前窗口宽为600px,果然显示400px

67e292af39b094fdf2b79ac83ff25a19.png

a9440feda6a516b49dbf07e24c85f5e4.png

在ivx上许多繁杂的代码操作都被集成到可视化的组件上,所以实现起来很简单,选中目标行或者列,在左边属性面板上点击设置环境宽,就会出现下面的五种宽度,你可以按照上面给出的通常情况下自适

应选择的参数填入,其实填入的数值并不固定,根据您目标用户的设备以及设备分辨率可以自行调节,也不一样要做5种,两种(pc和移动端)也是可以的。

2.自适应方法二:使用行列组件的“撑开”属性来适配各种不同高度的设备

测试案例下载地址:https://latest.ivx.cn/ih5/app/template/download?id=83

我们新建一个案例,在一个页面里面建4个行,其中3个行为参考坐标,一个目标行使用行组件的撑开属性做比对,可以看到我们当前窗口宽为1600px,而打开

了撑开属性的行也为1600px,也就是说,当一个行或者列使用撑开属性时,窗口宽(高)的宽度(高度)就是被撑开的行(列)的宽度(高度);

9bc3b06e878c4e97c12832f975e28a10.png

如果是同一行或者一列中使用2个(及以上)行或者列,并且都打开撑开属性,是个什么状态的?

显而易见,逻辑上来说,应该是平分,我们来看看实际效果

2fb5cfcf280d36d22714e756a89959b3.png

实际效果和预计一样,当前窗口宽为1600px,窗口宽度被占满了,多个行或者列在同一行或者列内,使用撑开属性,他们可以平分宽度(高度)

3.自适应方法三:利用横幅进行底部定位

测试案例下载地址: https://latest.ivx.cn/ih5/app/template/download?id=84

ab58bafd17fffcc54ee06675d14c2199.png

打开案例,选中名为顶部左侧的横幅,看到他左边的横幅属性面板,属性面板里有个选项:整体布局

04c4b7f764d9ee7c54968a1c1f55ecdd.png

如上图所示,我们在测试案例下,横幅是出现在最上面的,需要把横幅从顶部放到底部定位,怎么来实现呢?

30c70701ae26f70432dc3982b3fcf68a.png

只需要选择横幅属性面板里的整体布局,从左上换到左下

fbbf258b3c393b6ef045093fceca8c57.png

0fa4f390ef530f9d08ab7ef45aeafad8.png

横幅已经成功放到最下面了

首先选中目标对象,然后在左边的属性面板中找到整体布局,选中左下,然后保存预览,就会发现在我们顶部导航被固定在底部了(ios在高速拖动下横幅会有轻微抖动现象)。

4.自适应方法四:使用if容器来判断设备环境

测试案例下载地址:https://latest.ivx.cn/ih5/app/template/download?id=85

我们新建一个案例,在案例内,建一个页面,在页面内放一个文本变量和几个if容器,把文本变量的名字改为设备环境

62a87852099f10761f5a1361cde2237e.png

打开测试案例,里面有四个if容器,一个是按pc客户端适配的页面

a0f85253b1bf00afcfd6d501eab69bce.png

打开测试案例,里面有四个if容器,三个是按移动端客户端适配的页面,但这3个移动端页面的内容是一致的,只是进入这三个页面的浏览器入口不一样

15b82ecbf36dd640adea7d31813aa362.png

要使用if语句来判断设备当前环境,首先根据设计师给出的高保真图完成PC端和移动端的页面,制作出pc端页面和移动端页面;因为设备环境是用来判断用户当前使用的客户端环境,进而去通过if语句判断选择显示哪种ui,所以需要在舞台初始化或者宽度变化下,调用系统组件里的客户端环境

1eebbce618fdaab5ecc52afa34818414.png

a04b36bd141dd69ba4ffe769bd663562.png

如果当前处于pc端,那么我们就让pc端的页面显示,如果当前处于移动端,那么我们就让移动端的页面显示,按照上面的步骤我们就完成了用if判断当前设备环境进而完成页面的自适应。

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

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

相关文章

五分钟了解dotnetcore配置框架

一、前言配置的本质就是字符串的键值对,微软的一系列接口其实就是对这些键值对字符串的抽象。二、基本类型2.1、Nuget包Microsoft.Extensions.Configuration.AbstractionsMicrosoft.Extensions.Configuration2.2、抽象接口IConfiguration提供了查询、设置配置项、监…

彩光和灰光模块_5G承载网主要光模块图谱

(一)5G承载光模块总览在光通信中,业务信息的传送与接收都是靠光模块来实现的。在发送端,光模块完成电/光转换,光在光纤中传输,然后在接收端实现光/电转换。可以说,没有光模块就没有光通信。在我…

C++实现五子棋小游戏

代码如下: #include <iostream> using namespace std;class GoBangDesk { public:GoBangDesk() :state(), flagWin(false), flagOver(false), flagDraw(false){for (int i 0; i < 20; i)for (int j 0; j < 20; j)goBangDesk[i][j] #;}void printDesk(){cout &l…

Mobius 一个运行在 .NET Core 上的 .NET 运行时

导语一个 .NET 应用仅仅只是一块在 .NET 运行时上面运行的二进制代码。而 .NET 运行时只是一个能执行这项任务的程序。当前的 .NET Framework 和 .NET Core 运行时采用 C 编写&#xff0c;而 Mobius 是一个使用 C# 重写的 .NET 运行时&#xff0c;重写包括 JIT 编译和 GC 等&am…

jsbridge实现及原理_JSBridge 实现原理解析

JSBridge 项目以 js 与 android 通信为例&#xff0c;讲解 JSBridge 实现原理&#xff0c;下面提到的方法在 iOS(UIWebview 或 WKWebview)均有对应方法。1. native to js两种 native 调用 js 方法&#xff0c;注意被调用的方法需要在 JS 全局上下文上loadUrlevaluateJavascript…

Autofac的切面编程实现

面向切面编程&#xff1a;Autofac.Annotation扩展组件是我开源的一款利用打标签完成autofac容器的注入组件。https://github.com/yuzd/Autofac.Annotation我们之前介绍了利用Aspect标签来完成拦截器功能Aspect是一对一的方式&#xff0c;我想要某个class开启拦截器功能我需要针…

[Java基础]体验Lambda表达式

普通写法: 代码如下: package LambdaPack01;public class MyRunnable implements Runnable{Overridepublic void run() {System.out.println("多线程启动了");} }package LambdaPack01;public class LambdaDemo01 {public static void main(String[] args) {MyRunna…

linux启动mqtt_linux下安装MQTT服务器 - EMQTT

1. 下载从官网下载https://www.emqx.io/downloads#broker&#xff0c; 本文所用版本为broker/v3.2.1/emqx-centos7-v3.2.1.ziplinux下 下载:wget https://www.emqx.io/downloads/broker/v3.2.1/emqx-centos7-v3.2.1.zip解压&#xff1b;unzip emqx-centos7-v3.2.1.zip所在目录&…

.net core 基于Dapper 的分库分表开源框架(core-data)

一、前言感觉很久没写文章了&#xff0c;最近也比较忙&#xff0c;写的相对比较少&#xff0c;抽空分享基于Dapper 的分库分表开源框架core-data的强大功能&#xff0c;更好的提高开发过程中的效率&#xff1b;在数据库的数据日积月累的积累下&#xff0c;业务数据库中的单表数…

[Java基础]Lambda表达式练习

代码如下: package LambdaPracticePack;public interface Eatable {void eat(); }package LambdaPracticePack;public class EatableImpl implements Eatable{Overridepublic void eat() {System.out.println("一天一苹果&#xff0c;医生远离我");} }package Lambd…

ltv价值 应用_用户终生价值Ltv是什么,在游戏设计中如何考虑?

简单来说.你的游戏产品&#xff0c;用户的LTV表现&#xff0c;可以判断你这个产品的生命周期。看用户LTV的表现&#xff0c;30天LTV是否&#xff1e;每用户成本&#xff1f;大于越多&#xff0c;产品的付费做的越健康。如果小于等于&#xff0c;那就意味着赔本&#xff0c;产品…

​你可能不知道的7个HTML小技巧

五一期间&#xff0c;知道大家都比较懒&#xff0c;我也是。所以写篇简单且基础的技术小文&#xff0c;不需要动脑子&#xff0c;扫一眼就能掌握的那种。DETAILS 标签<details> 标签将额外的详情信息隐藏起来&#xff0c;用户在需要的时候点击即可展开查看详情。<deta…

mysql基本架构_MySQL的基本架构

MySQL的基本架构发布时间&#xff1a;2019-02-16 23:35,浏览次数&#xff1a;178, 标签&#xff1a;MySQLMySql的基本架构示意图如下&#xff1a;一、MySQL总体上可分为Server层和存储引擎层。Server层包括连接器、查询器、分析器、优化器、执行器等&#xff0c;涵盖 MySQL的大…

青年节寄语和新课程免费上架

大家好&#xff0c;确实好久没有写东西了&#xff0c;希望这篇推送不是用来提醒你取消关注哈。2020年这突如其来的疫情&#xff0c;打乱了我们的生活&#xff0c;也让很多人更加明白了生活的无常以及可贵吧&#xff0c;在此也真诚希望大家都要好好哒&#xff0c;不负韶华&#…

MySQL错误1264和1366_Mysql错误1366 - Incorrect integer value解决方法

由于这个数据库服务器存放的数据库比较多且都是小数据库&#xff0c;所以最初的时候是运行在windows服务器上的。前一段时间由于机房服务器要做调整&#xff0c;于是我便在一个夜深人静的夜晚对数据库进行的迁移及前台应用程序进行了调整&#xff0c;调整结束后测试应用均可以正…

从堆里找回“丢失”的代码相关命令简介

前言 在上一篇文章中&#xff0c;我们主要使用了三个命令 !address&#xff0c;s&#xff0c;.writemem 把丢失的代码成功的保存到了文件中。本文简单介绍一下上文用到的这三个命令。windbg 中的地址范围语法 很多命令都会用到 地址范围。比如 s 命令&#xff0c;.writemem 命令…

mysql 3t_编译安装mysql

编译安装mysql1 查找系统是否安装了myqlrpm -q mysql mysql-server1.1如果安装了。就删除sudo yum -y remove mysql mysql-serversudo rm -rf /etc/my.cnf2 安装依赖sudo yum install ncurses-devel -ysudo yum install libaio-devel -ysudo yum install bison -ysudo yum inst…