barriers / 阅读 / 详情

移动端H5页面适配问题研究

2023-08-24 17:50:01
TAG: 问题 h5
共1条回复
牛云
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!

刚开始做移动端web开发的同学应该都碰到过页面适配问题,为什么我在开发手机上调试好的页面在其他手机会有这样或那样的样式问题? viewport 我也设置了,为什么还是显示不正常?难道我要为每种手机屏幕写媒体查询,有没有简单的方式,可以不用关注手机屏幕的差异性呢?

百度中搜索 移动端H5页面适配 关键字,大概可以得到180多万的搜索结果,由此可见这个问题也得到很多人的关注。本文的目的主要是分析解决移动端H5页面适配问题过程中牵扯到的知识点,然后梳理分析目前常见的适配解决方案。

由于本文内容较长,下面先给出文章的提纲:

1.1理解移动端单位

  1.2理解viewport

2.1图片高清适配

  2.2字体大小适配

  2.3布局宽度适配

---这里是分隔符,正文开始---

不知道正在看文章的你对上面列出来的这些单位是不是很熟悉,如果是的话,就可以跳过了。

理解这些单位的用法以及区别,对理解移动端页面适配有很大的帮助。为了让你对上面的单位有个大体的认知,这里把上面的单位分成了三类:

下面分别对每个单位展开分析:

*** dpi / ppi ***

** dpi ** , dot per inch ,每英寸的点数;打印或印刷领域使用的单位,代表打印机每英寸可以打印出的点数 。

ppi , pixel per inch ,每英寸的像素数,像素密度;表示图像或者显示器单位面积上像素数量。

dpi 和 ppi 都是描述分辨率的单位,但是两者是有区别的,但是在描述手机分辨率时,可以认为两者意义相同,以前android设备偏向于使用 dpi ,ios设备偏向于使用 ppi ,目前android和ios统一使用 ppi 描述手机屏幕的像素显示密度。

ppi的计算方法:

*** ldpi、mdpi、hdpi、xhdpi、xxhdpi ***

android对移动设备不同屏幕分辨率的分类。

*** pt,pc,sp ***

** pt ** ,磅(point的音译),印刷中使用的表示字型的大小单位,1inch = 72pt (印刷中这个关系成立,ios中不成立),ios开发中使用的逻辑单位,是和设备无关的单位。

** pc ** 印刷中使用的单位,1pc = 12pt,不需要关注。

** sp **, scale independent pixel ,android设备中用来显示字体大小的,和设备无关的尺寸,当设置字体大小单位为sp时,android系统字体大小会影响设置的字体渲染时的大小。

*** dip / dp ***

** dp/dip**, device independent pixel,表示设备独立像素,和设备无关的尺寸,相同的dp/dip值,不同设备展示的效果是一样的。

android使用的单位,之前偏向使用dip,目前建议使用dp。

android设备中,规定160ppi的屏幕,1dp = 1px;320ppi的屏幕,1dp = 2px,所以android设备中dp的计算方法:dp = px * (ppi / 160),这里的px是指设备的物理像素点。

和ios开发中用的pt单位类似。

*** px ***

** px ** ,像素,有两种像素概念,一种是网页设计中使用的css像素,一种是原生移动系统使用的物理像素。

作为css像素时,表示的也是一种设备无关单位,与android中使用的dp类似,默认情况下与系统分辨率下的像素大小相同,标清设备中,一个css像素和一个设备物理像素大小相同;在高清设备中,一个css像素可以大于或者等于多个设备物理像素,具体一个css像素,需要多少个物理像素来展示,浏览器会根据dpr计算。

原生移动系统中使用px单位时,表示的就是屏幕的物理像素点,每种屏幕的物理像素点大小可能不一样。

*** dpr ***

** dpr ** ,device pixel ratio, 横向或者纵向设备物理像素数量与设备独立像素数量的比值,浏览器中可以通过window.devicePixelRatio获取(存在兼容性问题)。

对于原生app,ios和android系统会自动根据dpr计算出渲染时需要的px值,最终不同屏幕上展示出来的大小很接近;而移动端页面渲染时想要做到这一点,就必须首先得到设备的dpr,然后再根据dpr计算渲染需要的px值。

ios设备中iphone3的dpr为1;iphone4,5,6,7的dpr为2;iphone6+,7+的dpr为3。iphone6+和iphone7+实际计算出来的dpr应该时2.6左右,但是官方还是建议dpr为3,这是因为ios系统利用了一种“缩减像素采样”算法,自动缩减到2.6。

android设备中dpr值有多种,可知的有0.75,1,1.5,1.75,2,2.5,2.75,3,4等。

*** em,rem ***

** em ** 相对单位,CSS2引入的单位,作为字体大小使用时和百分比单位类似,都是相对于最近的父元素设置的字体大小,在body上设置字体大小为100%和设置字体大小为1em是一样的效果,默认情况下浏览器的字体大小为16px,这样只要浏览器默认得字体大小不变,1em = 16px。

** rem ** 相对单位,root em,CSS3新增的单位,作用和em类似,唯一的区别就是em是相对父元素的,rem是相对html根节点的,即所有使用rem单位的子元素的字体大小都是相对根节点的,所以使用rem可以避免使用em带来的子元素字体大小逐层复合的连锁反应。

更多关于em,rem的知识参见这篇文章 理解web开发中的em单位和rem单位 。

*** 分辨率 ***

平时说的手机屏幕分辨率,也称为物理分辨率或者原生分辨率,通常包括纵向分辨率和横向分辨率,例如iphone6的物理分辨率是1334 x 750,其中纵向分辨率是1334px,横向分辨率是750px,表示纵向方向可以显示1334个物理像素点,横向上可以显示750个物理像素点,这里描述分辨率使用的px单位,和css中使用的px单位意义不一样,这里代指物理设备的像素点。

还有一种分辨率叫做系统分辨率,例如iphone6的系统分辨率是667 x 375,其中高度是667pt,宽度是375pt,这里描述分辨率使用了pt单位,是一种设备无关单位。

屏幕尺寸相同的设备,物理分辨率越高,ppi也就越大,绝对单位面积上展示的物理像素数量越多,展示图片也就越细腻。

苹果把ppi > 300的屏幕称为视网膜屏,Retina屏。

传统桌面web页面布局通常是定宽布局,但是定宽布局的方式对移动端却不适用,原因手机屏幕尺寸大小各异,定宽布局可能在某些手机上出现横向滚动条,导致阅读效果比较差。

为了让手机有更好的网页浏览体验,苹果引入了viewport,为页面提供了一个虚拟的布局窗口,在这个虚拟的布局窗口中渲染页面,然后系统会把渲染好的页面自动缩放到手机屏幕大小。

虽然viewport还没有成为正式的规范,但是现在绝大部分浏览器都支持viewport。

在桌面浏览器中,viewport严格等于浏览器窗口大小,页面渲染时,页面宽度不会超过浏览器的宽度。

移动端屏幕太窄,为了提供更好的页面体验,移动端提供了两种viewport: 可视viewport 布局viewport

可视viewport 就是当前屏幕正在展示的区域,也就是移动设备屏幕的宽度,宽高通过window.innerWidth和window.innerHeight获取(存在兼容性问题)。

布局viewport ,页面布局实际用到的viewport,通常比可视viewport要宽,宽高通过document.documentElement.clientWidth和document.documentElement.clientHeight获取。

移动端还有一种viewport概念,可以理解为 理想viewport ,作用就是在理想viewport下,不同移动设备,展示的字体大小接近,并且不需要用户缩放就可以展示全部的页面内容。

理想viewport的宽度默认等于可视viewport的宽度,但是对同一台设备来说,这个理想viewport的宽度是可以改变的,而可视viewport的宽度是不可变的。

如何使用理想viewport来布局页面呢?只需要设置viewport的width等于device-width。

viewport的属性,推荐使用以及支持度较广泛的属性只有6个: width , height , initial-scale , maximum-scale , minimum-scale , user-scalable 。

width 设置viewport布局宽度,内核是webkit的浏览器默认值是980px,取值范围在200-10000px,也可以取值为设备宽度device-width(等于横向设备无关像素数量)。

height 设置viewport布局高度,默认值依赖设备长宽比以及宽度值,取值范围在223-10000px,也可以取值为设备高度device-height。

initial-scale 设置初始缩放比例,页面第一次加载时的缩放比例。默认比例依赖于显示密度。在密度低于200 dpi的显示设备上,比例为1.0。在密度介于200及300 dpi之间的显示设备上,比例为1.5。对于具有300 dpi以上密度的显示设备,比例为密度/150 dpi向下取整的结果。取值范围由 maximum-scale 属性以及 minimum-scale 属性决定。如果设置 initial-scale 值为1, width 默认是device-width, height 默认是device-height

initial-scale 设置的缩放大小会改变理想viewport的大小,不会改变可视viewport的大小,也不会改变布局viewport的大小,这是某些适配方案依赖的基本原理,也是解决 1px问题 的关键。后面分析适配方案时,动态viewport适配方案就依赖这个知识点。

maximum-scale 允许用户缩放到的最大比例,默认值是0.5,范围从0到10.0。

minimum-scale 允许用户缩放到的最小比例,默认值是5.0,范围从0到10.0。

user-scalable 用户是否可以手动缩放,值可以是:yes/true允许用户缩放;no/false不允许用户缩放。

图片适配的目的是为了在页面中可以高清还原设计图中用到的图片。

页面中用到的图片是否清晰和展示页面的硬件设备的dpr以及图片分辨率这两个因素有关,下面会通过三个例子来说明这个问题。

***示例一 ***

例如dpr=2的设备,1个设备无关像素(android中的1dp,ios中的1pt)需要4个设备物理像素点填充。对于尺寸为100 x 120 (px)的图片,如果用 <img> 来展示,图片显示时会产生模糊现象。

原因:渲染图片时,宽度是100px,所以横向会占用100个设备无关像素,高度是120px,所以纵向会占用120个设备无关像素,每个设备无关像素又需要2x2个物理像素点来填充,而图片在每个设备无关像素(px)单位上提供的像素点只有1x1个,这时,系统通过一定的算法在这1个像素点上就近取色,取到4个颜色(这4种颜色接近但是有一定区别)之后,当成4个像素点,然后填充到1个设备无关像素点上,这样就导致图片显示时模糊,dpr越大,这种方式显示的图片越模糊。

示例二

还是dpr=2的设备,但是准备了一个尺寸为200 x 240 (px)的图片,还是用 <img> 来展示,这时显示的图片就比较清晰了。

原因:这时图片本身可以在一个设备无关像素单位上提供2x2个物理像素点,设备展示图片时直接拿图片提供的像素点来填充就可以了,不用对像素点进行处理,所以可以比较清晰的显示图片。

示例三

还是dpr=2的设备,这次准备一个尺寸400 x 480 (px)的图片,还是用 <img> 来展示时,这种情况展示的图片缺少锐利度,也影响了图片的清晰度,但是很难看出来。

原因:图片本身在一个设备无关像素点单位上提供了4x4个物理像素点,而设备本身只需要2x2个物理像素点,所以会通过缩减采样算法,在图片提供的4x4个物理像素点中,选取颜色接近的2x2个物理像素点填充到设备无关像素点上,所以也会产生一定的色差,这种情况下图片尺寸越大,这种色差也就越明显,但是人眼很难区分这种色差。

下面是我在oppo的一款手机上的测试结果,结合这张效果图就可以很好的理解上面的三个示例了:

图片适配最佳实践

要想高清显示图片,如果条件允许(有单独的图片服务器)最直接的解决办法,肯定是根据设备的dpr,为不同dpr的设备加载不同倍率大小图片显示;没这种条件的或者对用户体验没有很高要求的,只能选一种折中的方案了,一般情况下只需要提供布局尺寸2倍大小的切图就可以了,也就是只高清适配dpr=2的设备,但是dpr为3或者4的设备展示效果也能接受,不容易看出来模糊现象。目前主流机型的dpr也就在2和3之间。

字体适配目标主要还是看设计要求,主要有两种:

1.不同屏幕下,字体显示大小都一样,即需要等宽显示字体;

2.不同屏幕下,一行能显示的字数固定,即需要按比例缩放字体大小;

开始分析之前,先看下这两种字体适配的示例:

第1种字体适配方案的示例

第2种字体适配方案的示例

下面就来具体分析下两种字体适配方案的原理以及优劣。

** 第1种字体适配方案原理 **

在开始分析这种方式的原理之前,先通过一张图理解下px和dp以及绝对长度之间关系。

由上图可知字体大小只与css单位px有关,而每个设备上px的绝对宽度又和设备的绝对宽度以及绝对宽度上划分出的设备无关像素点dp有关;只要设备的横向dp数量与绝对宽度的比值(dp/cm)相同,就可以保证px在不同设备上展示的绝对宽度是一样的;如果dp/cm的比值过大,那么px的绝对长度就会变小,看起来就会显小;如果dp/cm的比值过小,那么px的绝对长度就会变大,看起来就会显大;一般来说手机屏幕分辨率越高,相同px值的字体看起来就会越小。

iphone5和6的dp/cm比值十分接近,所以12px大小的字体在这两种手机上显示的大小基本一样,看不出来区别,但是iphone6+的dp/cm比值要比iphone5,6的略大,这就导致12px大小的字体在6+上显示的比5,6上显示的略小,上面的淘宝对比图仔细分辨可以看出来。

android的手机屏幕dp/cm比值在各个设备之间也有差异性,并且比较有多样性。所以同样12px大小的字体,各个设备显示时也是有差别的。

这种显示差别在iphone系列手机中可以忽略不计,但是android碎片化比较严重,完美兼容各种机型没有必要,主流机型中这种显示差别也可以忽略不计,所以采用这种方式进行字体适配只需要px值设置成一样的就可以了。

** 第1种字体适配方案优缺点**

优点:1.不同设备中字体大小显示一致,比较统一;2.大屏手机可以显示更多的文字;

缺点:1.由于单个字体宽度是定死的,所以在有些机型下可能会影响页面布局;

** 第2种字体适配方案原理 **

在设计稿中,计算出字体大小相对于基准字体大小(基准字体大小可以选择设计稿宽度,一般为了计算方便,会把设计稿宽度/10得到的值作为基准字体大小)的比值,然后在不同布局宽度下,先得到基准字体大小,再根据上面计算出来的比值,就可以计算出来不同布局宽度下的字体大小,也就是不同布局宽度下等比例缩放字体。

利用rem的特性,在页面的html标签上设置一个基准字体大小,就可以实现这种方式。

例如,宽是750px的设计图中,字体大小是32px,计算出基准字体大小为75px,比值为 32 * 10 / 75 = 0.426667。

如果布局宽度是414px,此时基准字体大小变成 414 / 10 = 41.4px,然后设置<html style="font-size:41.4px">,字体大小是0.426667rem,计算出来的字体大小为41.4x0.42667=17.66px。

如果布局宽度变成360px,此时基准字体大小变成36px,然后设置<html style="font-size:36px">,字体大小仍然用0.426667rem表示,计算出来的字体大小为36x0.42667=15.36px。

750/32 约等于 414/17.66 约等于 360/15.36,这样就做到了等比缩放字体了。

** 第2种字体适配方案优缺点**

缺点:1.小尺寸设备屏幕上字体显示小,大尺寸设备屏幕字体显示大,导致字体显示不一致;2.不能发挥大屏手机的优势(显示更多的字);3.字体大小会出现奇数或者小数点大小的值,某些字体不支持这些值,渲染时增加计算量;

优点:1.适配简单,不同设备不会影响页面布局,可以和设计稿布局保持一致;

布局中对宽度的适配,也是采用rem来实现,和上面第2种字体大小适配方式中的原理类似,也是计算出一个比例值,然后不同布局宽度中等比缩放,这里偷下懒,不在赘述。

目前的解决方案有两类

第一类就是js动态生成viewport标签,标签中的initial-scale值根据设备的dpr计算,不同dpr设备的viewport值不同。

第二类就是js不操作viewport,每个设备都使用理想viewport来布局。

** 动态viewport解决方案分析 **

这里分析两个动态viewport解决方案:

1.手机淘宝的flexible方案;

2.hotcss方案;

手机淘宝的flexible方案 ,特点:

1.仅针对iphone生成动态viewport,因为目前iphone的dpr只有1,2,3三种,android的dpr很有多种,不具有一致性;

2.字体大小不用rem做缩放处理,仍然使用px单位,设置不同dpr下对应的字体大小;

3.宽度利用rem等比缩放;

4.允许强制定义dpr;

使用时页面头部需要引入 flexible.js .

hotcss方案 ,特点:

1.不区分iphone和android,dpr只取三种1,2,3,android的dpr做近似处理;

2.宽度以及字体利用rem等比缩放;

3.允许强制定义dpr;

使用时页面头部需要引入 hotcss.js

动态viewport方案之所以会称为动态viewport是因为,这个适配过程会根据系统dpr值设置initial-scale属性的大小,大小等于1/dpr。

** 静态viewport解决方案分析 **

利用rem特性,先根据标注图算出各元素相对于设计稿宽度的比值,这个比值就作为rem值,然后页面布局时就用算出的rem值表示,并且在html根元素设置当前布局页面宽度作为基准。更rem值计算具体的解释可以参考这篇文章 使用Flexible实现手淘H5页面的终端适配 。通过这种方式设置标签元素的宽高,位置以及字体大小,这样利用rem特性就可以在不同手机屏幕上实现等比缩放。

参考资料

https://g****.com/amfe/article/issues/17

http://w*.cnb***.com/pigtail/archive/2013/03/15/2961631.html

相关推荐

web开发 viewport是什么意思

《web开发从入门到放弃》
2023-08-18 01:38:362

svg 的viewport 和viewbox

viewport 很好理解,就是类似我们的电视机,我们只能通过看到电视机里边的内容,却无法看到电视画面外边的画面。 viewbox是什么呢,你去看文档会有很多答案,但是我觉得把握一个最基本的概念就可以, viewbox就是最后我们画图的坐标系统,也就是说我们在svg上画东西的时候,就是根据viewbox的坐标系统,来确定最后的位置的。 viewbox为什么这么难理解? 其实看了好多文章,根本都模糊不清楚,看svg精髓这本书里边说的也是云里雾里,不知所云 我觉得可以从以下几点进行理解 viewbox的定义 当viewbox的宽高比和viewport的宽高比相同的时候,首先是设置用户坐标,然后绘图 宽高比相同指的是 svg设置的width:height 与 viewbox设置的 width:height 相等 比如 这里的svg的宽高比是400: 200 = 2 viewbox设置的宽高比是 200: 100 = 2 所以这里的宽高比是一样的 表现如下 渲染过程 svg的viewport的宽高分别是800 和600 viewbox的设置宽高 分别是 0 0 800 600 这里所以用户的坐标是1:1 也就是用户坐标的一像素对应viewport的1像素 所以结果如图 表现如下 渲染过程 svg的viewport 宽高依然是800和600 viewbox的宽高比变成0 0 400 300 这里的一步首先是确定用户坐标,因为设置的用户坐标是400 * 300 ,但是实际的viewport是800和600,所以对应起来就是用户坐标的1像素对应viewport的二像素 所以 当绘制图像的时候,原来在用户坐标100, 100的点,在viewbox 是 0 0 800 600的时候,对应的viewport的物理像素是100,100的点,但是到了viewbox是 0 0 400 300的时候,用户坐标100, 100的点,对应的物理像素变成了200, 200的点了,所以整个图像变大了 这里注意的是绘制图像的坐标始终是没有变,原来是100,100 还是100,100,变化的是用户坐标到svg的viewport的转换变化了。 上面介绍了viewbox的width和height,在宽高比和viewport相同的时候的情况,现在介绍还是在宽高比和viewport相同的时候的情况下,设置viewbox的x和y是如何变化的。 其实原理是一样的,还是分成两个步骤 a, 首先设置用户坐标,也就是用户坐标到svg viewport的转换关系, b, 绘制图像 表现如下 可以看到图像向左移动了150px 原理还是按照上面的两步 1, 首先设置用户坐标,这里是svg的是800 : 600 ,而viewbox的也是800:600 所以这里是用户坐标到实际是1:1,然后因为设置了viewBox 的x是150,所以这里的用户坐标会向左移动150,所以原来绘制在用户坐标范围从(0, 0)到(150,0)的就无法显示出来了。 当宽高不相同的时候,就首先得有个标准,也就是根据什么来设置用户坐标到viewport的转换,也就是preserveAspectRatio 这个说半天也不好理解,不如直接看实际的效果图 https://www.sarasoueidan.com/demos/interactive-svg-coordinate-system/index.html 这里可以直接设置,然后查看效果 不过把握大方向 就是先设置用户坐标,再绘图即可。 参考: https://pjchender.blogspot.com/2017/03/svg.html
2023-08-18 01:38:491

OpenGL之Viewport

1.1 窗口(Screen) 窗口其实就是屏幕,如下图1中红色圈中黑色背景的部分。所有的场景最终都是要被光栅化乘显示器上的图像,屏幕是所有场景(2D、3D等)的最终输出目的地。一个screen可以显示多个视口中的内容; 1.2 视口(Viewport) 视口就是窗口中用来显示图形的一块矩形区域,它可以和窗口等大,也可以比窗口大或者小,如图1中蓝色标示的绿色背景的区域。它具有两个意义:   u2022 定义了视镜体中的景物要被绘制到一张什么尺寸的画布之上;   u2022 定义了画布在屏幕的什么区域; 显然,如果 视景体的投影平面 定义的宽高比和 视口 所定义的宽高比 不相同 的话,那么将视景体中的物体绘制到画布上的时候会进行 拉伸或者压缩 ;而当视景体投影平面的宽高比和视口所定义的宽高比一致的时候,图像将会不进行任何缩放绘制到视口所定义的画布之上。 在实际应用中,一个窗口中会绘制多个3D场景,这个通过定义多个视口,绘制多个图像,然后 贴在 屏幕的不同区域即可。比如图中黄色笔圈中的区域,在画布中定于两个不同的viewport1 (0,0;w/2,y)和 viewport2 (0,w/2;w/2,y); 1.4 视镜体(View Frustum) 视景体(View Volume)定义了我们能够通过虚拟的3D摄像机所能看到的场景。在一个3D场景中站立中,需要摄像机的 摆放位置 和 视野 来定义我们所能够看到的东西,而这个视野就是通过视景体来定义的。在3D中,一般可以通过以下两种方式来定义视景体: 通过前面的介绍,我们大致的了解了这三个不同东西的概念。从中我们可以知道,通过定义投影矩阵,我们实际上是在虚拟的3D空间中,创建了一个视野,也就是视景体。在接着,我们通过定义视口,来描述视景体中的内容如何映射到一个虚拟的画布之上,并且这个画布最终将显示在屏幕上的什么位置。当所有的这些都设置完毕,我们绘制完毕场景之后,就能够通过硬件在我们的显示器屏幕上看到最终的画面。更理论的表述就是,通过定义投影矩阵,将3D场景投影到一个投影平面之上。通过定义视口,我们将投影平面上的内容映射到这个视口中去,并且填满它,同时根据定义视口是给定的屏幕坐标的位置,将这个视口中的图像映射到窗口的指定位置之上,最终我们就看到了图像。 glViewport是OpenGL中的一个函数。计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是OpenGL负责的。glViewport在默认情况下,视口被设置为占据打开窗口的整个像素矩形,如图1,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来实现这一变换,在窗口中定义一个像素矩形,最终将图像映射到这个矩形中。例如可以对窗口区域进行划分,在同一个窗口中显示分割屏幕的效果,以显示多个视图。
2023-08-18 01:38:561

UE4 创建Viewport

创建自定义的 ViewportClient ,并显示 TextureRenderTarget2D 对象。设置蓝色背景。 在 ViewportClient::Draw(FViewport* Viewport,FCanvas* Canvas) 中进行绘制。 绘制RenderTarget相当于绘制“栅格图像”。 绘制一段线。 创建 Standalone Window 插件来显示 Viewport 。PluginsTPViewportSourceTPViewportPublicRenderTestViewportClient.cpp PluginsTPViewportSourceTPViewportPublicTPViewport.h 三者之间的关系 ViewportWidget--->FSceneViewport---->FViewportClient PluginsTPViewportSourceTPViewportPublicTPViewport.cpp 创建 SDockTab 。 UE4 创建Viewport
2023-08-18 01:39:041

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

这是 HTML 里 的 <META> 标签。 它是 <HEAD> 标签 里的一部分。<META> 标签 里 含 “名字 与 数据 ”对子(pairs)这里 的 名字 是 viewport (显示窗口)数据 是 文本 内容 content="width=device-width, initial-scale=1.0"也就是 显示窗口 宽度 是 客户端的 屏幕 宽度 (就是 满屏 !),显示的文字和图形的初始比例 是 1.0例如 字体 16,像素 16, 图宽 640 pix, 显示 宽度 就 是 640 像素。
2023-08-18 01:39:351

QPainter的Window和viewPort到底是什么东西

window()返回的是作为窗口框架的一个widget, 也许是用来承载当前widget的窗口, 如果当前widget本身是个单独的窗口框架的话, 返回的会是它自身~`` 例如QWidget、QDialog、QLabel....而viewPort()返回的好比像MFC中单文档那个工作区一样, 一般像QTextEdit、QTableWidget....返回它们的可编辑区域的widget~`` 这也是为什么有时单纯想通过重载paintEvent()在这类widget中绘制一些图形时不显示的原因 :)
2023-08-18 01:39:512

手机端怎么通过js设置viewport

1、跨浏览器的写法如下:利用 @media (width) 和@media (height) 的值来指定对应的viewpoint,示例代码如下:var w=Math.max(document.documentElement.clientWidth, window.innerWidth ||0);var h=Math.max(document.documentElement.clientHeight, window.innerHeight ||0);2、一般方法是利用window.innerWidth和window.innerHeight来指定:获取窗口的高度与宽度(不包含工具条与滚动条):var w=window.innerWidth;var h=window.innerHeight;完整代码:function myFunction(){var w=window.innerWidth;var h=window.innerHeight;x=document.getElementById("demo");x.innerHTML="Width: " + w + " Heigth: " + h;}
2023-08-18 01:40:002

3DMAX里VIEWPORT显示的物体表面有很多碎片,怎么解决.

不是你的显卡问题,是你在3d中软件的布尔操作可能错误.布尔差集的时候,你应该先把要减去的物体连接为一个物体.然后再布尔. 要么就是你布尔减去了一个后要先退出,(布尔按钮要弹起来),然后再重复上一步的动作.这样可避免破面出现的可能.你试试看.
2023-08-18 01:40:282

"screen""关键字是匹配设备的物理屏幕还是浏览器的viewport

"screen""关键字是匹配设备的物理屏幕还是浏览器的viewport在显示面积上手机屏幕相对桌面显示器要小很多,在几年前(现在也如此)大部分网站都是为桌面显示器浏览而设计,很少考虑到适应手机屏幕,所以如果用手机浏 览大多网站时会出现问题,比如常见固定宽度的网页会出现横向竖向滑动条,当然这不算什么大问题;但如果是浏览流动布局的网页那情况会非常糟糕,设想一个宽 度为30%的侧边栏对于320px手机屏幕而言也就96px,只能容纳8个12px的汉字,可阅读性非常差。为了让手机也能获得良好的网页浏览体验,Apple找到了一个办法:在移动版(iOS)的Safari中定义了viewport meta标签①,它的作用就是创建一个虚拟的窗口(viewport),而且这个虚拟窗口的分辨率接近于桌面显示器,Apple将其定位为980px②。
2023-08-18 01:40:371

vant+postcss-px-to-viewport 记一次移动端网页适配之旅

本次的需求其实很简单,即为公司制作一个可以在微信公众号上使用的网页,但是由于自己对移动端组件以及很多东西不熟悉,踩了很多坑。 一开始直接动手写乃至用element,完全达不到合格的美观程度,缩放element-ui元素很困难(在被科普了vant这样的移动端ui之后才知道这是一种愚蠢的行为),于是终于操起vant vant很好用,但是把vant组件直接放在页面上遇到一个直接问题:太小了,同样尝试了一下缩放组件,但是这个操作工程量大且不一定美观,于是研究了一番发现:vant是按照375px的设计稿写的,其css大多单位是px,这能直接用就怪了,咨询了一波公司的前辈,得知他是把vant css中的px替换为rem来操作的,于是我打开css直接CTRL+F px转rem,当然两者有16倍关系我还是懂的,于是采取了根元素 我屏幕宽为1080px,将元素长度宽度除16再乘(1080/375)可让vant元素刚好填满我的屏幕,当然对于别的屏宽就暂时顾不了了,但是毕竟可用@media and screen来解决吗。 实践结果是,vantage元素合适地填满了我的chrome,填满了我的手机屏,却在微信处翻了车,一个复选框的边框厚得像门一样,此处图和原因再补。 发现这种方法没办法达成对微信的适配后,我转向了插件,起初使用的是postcss-pxtorem,其自动将css中的px转为rem,但这种方法还要搭配 lib-flexible 食用,而该库的作者这样告诉我们:有了viewport适配,我们已经退出历史舞台了。毕竟用一个库总比用两个方便,而且人家库作者都这么说了,便安装postcss-px-to-viewport,中间踏了点webpack的坑,但是postcss-px-to-viewport正常工作后效果拔群,一步完成适配,也不用去想@media and screen了。 关于px转rem与viewport,具体方案见 https://sunniejs.github.io/vue-h5-template/#/zh-cn/rem
2023-08-18 01:40:451

我写了一个html网页,添加了后就

我查了下viewport,有几个属性:width - viewport的宽度 height - viewport的高度initial-scale - 初始的缩放比例minimum-scale - 允许用户缩放到的最小比例maximum-scale - 允许用户缩放到的最大比例user-scalable - 用户是否可以手动缩放估计是本身页面尺寸就是那么大吧【本人还没开始接触手机WEB前端,请恕我见识短浅
2023-08-18 01:40:541

为什么viewport的width=device-width,加上去没效果

我查了下viewport,有几个属性:width - viewport的宽度 height - viewport的高度initial-scale - 初始的缩放比例minimum-scale - 允许用户缩放到的最小比例maximum-scale - 允许用户缩放到的最大比例user-scalable - 用户是否可以手动缩放估计是本身页面尺寸就是那么大吧【本人还没开始接触手机WEB前端,请恕我见识短浅
2023-08-18 01:41:101

html的标签,中,content属性的作用

一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下:<meta name="viewport" content="width=device-width, initial-scale=1.0">width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。height:和 width 相对应,指定高度。initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。maximum-scale:允许用户缩放到的最大比例。minimum-scale:允许用户缩放到的最小比例。user-scalable:用户是否可以手动缩放。
2023-08-18 01:41:191

html 手机 微信 网页 meta name="viewport" content="width=600" 无效

 默认情况下,iPhone上的Safari会象在大屏幕的桌面浏览器那样显示你的页面,宽度达到了980像素,然后缩小内容以适应iPhone的小屏幕,因此用户在iPhone看这个页面时感觉字体就比较小了,也比较模糊,必须要放大才能看得真切,对于一个普通的Web页面似乎可以接受,但对于一个常用的应用程序就没几个人能够受得了。
2023-08-18 01:41:272

maya2013 Viewport 2.0能打开用不了

那是你的显卡低了点吧。Viewpot2.0是硬件显示实时效果。显卡如果不够强大是很容易卡死的。建议对自己硬件不够信心的还是少开Viewport为妙啊。他可能比高显对硬件的要求还要高。可以渲染试试,或是高显看看。
2023-08-18 01:41:351

iphone6s 在看网页时为什么缩放不了

两方面1、设置问题或使用问题,解决方法:缩放的大小是可以自己控制的, 可以拖动以控制缩放的大小,从左上下右下拖动可以缩小,从右下向左上拖动可以放大。 设置里面,通用-辅助功能-(第二个)缩放,然后你就会看到了。2、网页本身已规定不允许缩放 详见viewport;通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。在默认情况下,一般来讲,移动设备上的viewport都是要大于浏览器可视区域的,这是因为考虑到移动设备的分辨率相对于桌面电脑来说都比较小,所以为了能在移动设备上正常显示那些传统的为桌面浏览器设计的网站,移动设备上的浏览器都会把自己默认的viewport设为980px或1024px(也可能是其它值,这个是由设备自己决定的),但带来的后果就是浏览器会出现横向滚动条,因为浏览器可视区域的宽度是比这个默认的viewport的宽度要小的。下图列出了一些设备上浏览器的默认viewport的宽度。更多 https://www.baidu.com/s?wd=viewport&rsv_spt=1&rsv_iqid=0xa01011da00045205&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=8&rsv_sug1=8
2023-08-18 01:41:443

网页要让它自适应各种手机屏幕宽度大小要怎么设置?

auto
2023-08-18 01:42:243

dreamweaver中怎么让网页自适屏幕,达到满屏效果

采用table来分配布局 最外层的table宽度设置为100%或者96% 麻烦采纳,谢谢!
2023-08-18 01:42:335

恩是的 一般用于iphone 开发
2023-08-18 01:42:502

想请问,iOS10网页viewport怎么禁止缩放

禁用双指缩放:document.documentElement.addEventListener("touchstart", function (event) { if (event.touches.length > 1) { event.preventDefault(); }}, false);禁用手指双击缩放:var lastTouchEnd = 0;document.documentElement.addEventListener("touchend", function (event) { var now = Date.now(); if (now - lastTouchEnd <= 300) { event.preventDefault(); } lastTouchEnd = now;}, false);试验过了,确实可行,但是不确定会不会造成其他影响。
2023-08-18 01:42:591

什么
2023-08-18 01:43:092

ext中viewport问题?分三部分top west center其中west是菜单树,点击菜单会在center中显示其主要内容。。

<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title></title> <script type="text/javascript"> function GetTree(node) { var eIdtd = document.getElementById("txtTitle"); var enumPare = document.getElementById("txtContent"); eIdtd.innerHTML ="编号:"+ node.id; enumPare.innerHTML ="内容:"+ node.text; } </script> </head><body> <form id="form1" runat="server"> <div> <ext:ScriptManager ID="ScriptManager1" runat="server"> </ext:ScriptManager> <ext:ViewPort ID="ViewPort1" runat="server"> <Body> <ext:BorderLayout ID="BorderLayout1" runat="server"> <North MarginsSummary="5 5 5 5"> <ext:Panel AllowDomMove="true" ID="Paneles" Height="250" runat="server" Title="top" Icon="Information" Header="true" Collapsed="true" Collapsible="true"> <Body> <div style="float:left; white-space:normal; padding-left:5px; width:50%; vertical-align:middle; "><p> 导航:这是上边! </p></div> </Body> </ext:Panel> </North> <West MinWidth="225" MaxWidth="400" Collapsible="true" Split="true" MarginsSummary="0 0 0 0" CMarginsSummary="0 0 0 0"> <ext:TreePanel ID="treePark" Header="false" Frame="false" Title="Tree" Width="300" Lines="false" BodyBorder="false" RootVisible="false" runat="server"> <Root> <ext:TreeNode Text="Composers" Expanded="true"> <Nodes> <ext:TreeNode Text="Beethoven" Icon="UserGray"> <Nodes> <ext:TreeNode Text="Concertos"> <Nodes> <ext:TreeNode NodeID="1" Text="No. 1 - C" Icon="Music" /> <ext:TreeNode NodeID="2" Text="No. 2 - B-Flat Major" Icon="Music" /> <ext:TreeNode NodeID="3" Text="No. 3 - C Minor" Icon="Music" /> <ext:TreeNode NodeID="4" Text="No. 4 - G Major" Icon="Music" /> <ext:TreeNode NodeID="5" Text="No. 5 - E-Flat Major" Icon="Music" /> </Nodes> </ext:TreeNode> <ext:TreeNode Text="Quartets" > <Nodes> <ext:TreeNode NodeID="6" Text="Six String Quartets" Icon="Music" /> <ext:TreeNode NodeID="7" Text="Three String Quartets" Icon="Music" /> <ext:TreeNode NodeID="8" Text="Grosse Fugue for String Quartets" Icon="Music" /> </Nodes> </ext:TreeNode> <ext:TreeNode Text="Sonatas" > <Nodes> <ext:TreeNode Text="Sonata in A Minor" Icon="Music" /> <ext:TreeNode Text="sonata in F Major" Icon="Music" /> </Nodes> </ext:TreeNode> </Nodes> </ext:TreeNode> </Nodes> </ext:TreeNode> </Root> <Listeners> <Click Handler="Javascript:GetTree(node);" /> </Listeners> </ext:TreePanel> </West> <Center> <ext:Panel ID="panel1" Height="500px" BodyBorder="false" Frame="false" AutoScroll="true" runat="server"> <Body> <table cellpadding="0" cellspacing="0" width="98%" border="0"> <tr> <td height="20" colspan="2" > <span style=" font-size:xx-large; text-align:center "> 这是中间部位 </span> </td> </tr> <tr> <td width="20" height="20" rowspan="2" align="center" valign="top"> </td> <td style="height: 50px; vertical-align: bottom; overflow: scroll;" align="center"> <asp:Label ID="txtTitle" runat="server"></asp:Label> </td> </tr> <tr> <td align="left" id="txtContent1"> <asp:Label ID="txtContent" runat="server"></asp:Label> </td> </tr> </table> </Body> </ext:Panel> </Center> </ext:BorderLayout> </body> </ext:ViewPort> </div> </form></body></html>这个直接建一个页面,粘贴进去就可以用了!
2023-08-18 01:43:161

WPF中,当Viewport2DVisual3D.Camera使用动画时为什么是冻结的

当你动画化Viewport2DVisual3D对象的“照像机”属性时,你会得到一个“错误操作异常”:冻结的对象不能被冻结“。  Freezable对象在有些情况下比如设置在样式中时会被冻结,有关Freezable对象,请参照以下MSDN的相关文档:  http://msdn.microsoft.com/en-us/library/ms750509.aspx  这里的原因就是WPF不会冻结Viewport2DVisual3D对象,WPF所做的就是制作一个“camera “冻结的副本并把它分配给对应的转换(underlying transformation),这些转换会在点击测试机制中取消Viewport2DVisual3D对象的点击性能,从而使其不能与用户交互。
2023-08-18 01:43:241

maya怎么解决蒙皮变形问题

刷权重
2023-08-18 01:43:322

Meta定义的有关视口viewport,下列说法不正确的是()。

Meta定义的有关视口viewport,下列说法不正确的是()。 A.width:宽度,一般设为900px。 B.height:和width相对应,指定高度。 C.initial-scale:初始缩放比例,也即是当页面第一次load的时候缩放比例。 D.maximum-scale:允许用户缩放到的最大比例。minimum-scale:允许用户缩放到的最小比例。 正确答案:A
2023-08-18 01:44:191

iOS11 Web 适配 viewport-fit=cover

https://ayogo.com/blog/ios11-viewport/ https://www.daier.org/124930.html https://stackoverflow.com/questions/45662388/ios-11-uiwebview-pop-down-by-status-bar
2023-08-18 01:44:261

如何设计自适应屏幕大小的网页 Responsive Web Design

手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone / iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。于是,很早就有人设想,能不能”一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)?如何设计自适应屏幕大小的网页(转)一、”自适应网页设计”的概念2010年,Ethan Marcotte提出了”自适应网页设计”(Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。他制作了一个范例,里面是《福尔摩斯历险记》六个主人公的头像。如果屏幕宽度大于1300像素,则6张图片并排在一行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在600像素到1300像素之间,则6张图片分成两行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素到600像素之间,则导航栏移到网页头部。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素以下,则6张图片分成三行。如何设计自适应屏幕大小的网页(转)mediaqueri.es上面有更多这样的例子。这里还有一个测试小工具,可以在一张网页上,同时显示不同分辨率屏幕的测试效果,我推荐安装。二、允许网页宽度自动调整“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js。“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。<meta name=”viewport” content=”width=device-width, initial-scale=1″ />viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js。
2023-08-18 01:44:341

网站怎么做到自适应网页?

关于网站如何做到自适应网页,可根据如下操作:首先,在网页代码的头部,加入一行viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩 放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。这一条非常重要。“流动布局”的含义是,各个区块的位置都是浮动的,不是固定不变的。float的好处是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现。“自适应网页设计”的核心,就是CSS3引入的Media Query模块。它的意思就是,自动探测屏幕宽度,然后加载相应的CSS文件。同一个CSS文件中,也可以根据不同的屏幕分辨率,选择应用不同的CSS规则。其次,除了布局和文本,”自适应网页设计”还必须实现图片的自动缩放。有条件的话,最好还是根据不同大小的屏幕,加载不同分辨率的图片。有很多方法可以做到这一条,服务器端和客户端都可以实现。
2023-08-18 01:44:421

android webview怎么设置缩放

Android:WebView如何设定支持缩放:需要对WebView和WebSettings做一下设定webview.setVerticalScrollbarOverlay(true); //指定的垂直滚动条有叠加样式WebSettings settings = webview.getSettings();settings.setUseWideViewPort(true);//设定支持viewportsettings.setLoadWithOverviewMode(true);settings.setBuiltInZoomControls(true);settings.setSupportZoom(true);//设定支持缩放 html界面meta标签<metaname="viewport"content="height= [pixel_value| "device-height"] ,width= [pixel_value| "device-width"] ,initial-scale=float_value,//初始缩放minimum-scale=float_value,//最小maximum-scale=float_value,//最大user-scalable= ["yes" | "no"]//是否允许用户对页面缩放 "/>例如:<meta name="viewport" content="width=device-width,user-scalable=yes initial-scale=1.0, maximum-scale=2.0">-->设定支持缩放,最大两倍缩放
2023-08-18 01:44:521

如何去设计一个自适应的网页设计或html5

如今移动互联网随着3G的普及,越来越火爆,更多需求跟随而来!APP应用市场和APP应用数量成倍成倍的增长!从而给移动互联网带来新的挑战!移动设备正超过桌面设备,成为访问互联网的最常见终端。于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页?手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone / iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。于是,很早就有人设想,能不能”一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)?一、了解什么是”自适应网页设计”自从2010年,Ethan Marcotte提出了 “自适应网页设计”(Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。他制作了一个 范例,里面是《福尔摩斯历险记》六个主人公的头像。如果屏幕宽度大于1300像素,则6张图片并排在一行。如果屏幕宽度在600像素到1300像素之间,则6张图片分成两行。如果屏幕宽度在400像素到600像素之间,则导航栏移到网页头部。如果屏幕宽度在400像素以下,则6张图片分成三行。mediaqueri.es上面有更多这样的例子。这里还有一个 测试小工具,可以在一张网页上,同时显示不同分辨率屏幕的测试效果,我推荐安装。二、需要允许网页宽度自动调整“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行 viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用 css3-mediaqueries.js。三、在进行设计的时候不能使用绝对宽度由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。这一条非常重要。具体说,CSS代码不能指定像素宽度:width:xxx px;只能指定百分比宽度:width: xx%;或者width:auto;四、相对大小的字体字体也不能使用绝对大小(px),而只能使用相对大小(em)。body {font: normal 100% Helvetica, Arial, sans-serif;}上面的代码指定,字体大小是页面默认大小的100%,即16像素。h1 {font-size: 1.5em;}然后,h1的大小是默认大小的1.5倍,即24像素(24/16=1.5)。small {font-size: 0.875em;}small元素的大小是默认大小的0.875倍,即14像素(14/16=0.875)。五、流动布局(fluid grid)或瀑布流“流动布局”的含义是,各个区块的位置都是浮动的,不是固定不变的。.main {float: right;width: 70%;}.leftBar {float: left;width: 25%;}float的好处是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现。另外,绝对定位(position: absolute)的使用,也要非常小心。六、选择性加载CSS“自适应网页设计”的核心,就是CSS3引入的 Media Query模块。它的意思就是,自动探测屏幕宽度,然后加载相应的CSS文件。上面的代码意思是,如果屏幕宽度小于400像素(max-device-width: 400px),就加载tinyScreen.css文件。如果屏幕宽度在400像素到600像素之间,则加载smallScreen.css文件。除了用html标签加载CSS文件,还可以在现有CSS文件中加载。@import url(“tinyScreen.css”) screen and (max-device-width: 400px);七、CSS的@media规则同一个CSS文件中,也可以根据不同的屏幕分辨率,选择应用不同的CSS规则。@media screen and (max-device-width: 400px) {.column {float: none;width:auto;}#sidebar {display:none;}}上面的代码意思是,如果屏幕宽度小于400像素,则column块取消浮动(float:none)、宽度自动调节(width:auto),sidebar块不显示(display:none)。八、图片的自适应(fluid image)除了布局和文本,”自适应网页设计”还必须实现图片的 自动缩放。这只要一行CSS代码:img { max-width: 100%;}这行代码对于大多数嵌入网页的视频也有效,所以可以写成:img, object { max-width: 100%;}老版本的IE不支持max-width,所以只好写成:img { width: 100%; }此外,windows平台缩放图片时,可能出现图像失真现象。这时,可以尝试使用IE的 专有命令:img { -ms-interpolation-mode: bicubic; }或者,Ethan Marcotte的 imgSizer.js。addLoadEvent(function() {var imgs = document.getElementByIdx_x(“content”).getElementsByTagName_r(“img”);imgSizer.collate(imgs);});不过,有条件的话,最好还是根据不同大小的屏幕,加载不同分辨率的图片。有 很多方法可以做到这一条,服务器端和客户端都可以实现。只要遵循这8条设计准则,我相信你们可以很快的设计出自适应的网页出来
2023-08-18 01:45:023

CSS 命令 微信公众平台 自适应屏幕大小

显示为铺满一排,也要看你的字数多少。如果你是想要文字根据屏幕大小改变,那你可以用这个单位。例子:font-size:3.6vmin;
2023-08-18 01:45:122

怎么把一个pc页面自适应手机屏幕,自适应手机屏幕网站怎么做吗

无论是电脑还是手机,要做到自适应屏幕,其实都是一样的。首先,在网页代码的头部,加入一行viewport标签<metaname="viewport"content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no"/>viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。即让viewport的宽度等于物理设备上的真实分辨率,不允许用户缩放。其次:网页宽度css一定要使用百分比width:xx%;,不能用绝对像素。当然可以用width:auto;第三,流动布局.left{float:left;width:***%;}第四,选择加载css这是自适应的关键部分.abc{height:300px;border:1pxsolid000;margin:0auto}@mediascreenand(min-width:1201px){.abc{width:1200px}}/*设置了浏览器宽度不小于1201px时abc显示1200px宽度*/@mediascreenand(max-width:1200px){.abc{width:900px}}/*设置了浏览器宽度不大于1200px时abc显示900px宽度*/@mediascreenand(max-width:901px){.abc{width:200px;}}/*设置了浏览器宽度不大于901px时abc显示200px宽度*/@mediascreenand(max-width:500px){.abc{width:100px;}}/*设置了浏览器宽度不大于500px时abc显示100px宽度*/需要注意是CSS代码顺序,由大到小排版CSS(判断浏览器宽度越大越放前),这样是因为逻辑关系,@media判断CSS排错将导致判断失效。第四,图片自适应img{max-width:100%;}老版本的IE不支持max-width,所以只好写成:img{width:100%;}筚五、采用相对字体大小字体也不能使用绝对大小(px),而只能使用相对大小(em)。这里最重要的,是第三条和第四条,也就是采用流动布局和css选择加载。祝你好运!
2023-08-18 01:45:201

如何设计自适应屏幕大小的网页 Responsive Web Design

手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone/iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。于是,很早就有人设想,能不能”一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)?如何设计自适应屏幕大小的网页(转)一、”自适应网页设计”的概念2010年,EthanMarcotte提出了”自适应网页设计”(ResponsiveWebDesign)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。他制作了一个范例,里面是《福尔摩斯历险记》六个主人公的头像。如果屏幕宽度大于1300像素,则6张图片并排在一行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在600像素到1300像素之间,则6张图片分成两行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素到600像素之间,则导航栏移到网页头部。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素以下,则6张图片分成三行。如何设计自适应屏幕大小的网页(转)mediaqueri.es上面有更多这样的例子。这里还有一个测试小工具,可以在一张网页上,同时显示不同分辨率屏幕的测试效果,我推荐安装。二、允许网页宽度自动调整“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js。“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。<metaname=”viewport”content=”width=device-width,initial-scale=1″/>viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js。
2023-08-18 01:45:271

打开maya2015后,软件提示找不到适当的起始摄影机咋办

DirectX 11 Shader 节点的属性,指定了 MayaUberShader 着色器文件。要使用该着色器,您必须在 Viewport 2.0 的 DirectX 11 环境中工作,并启用 dx11shader.mll 插件。有关详细信息。您可以在 Hypershade 创建栏中找到 DirectX 11 Shader。创建着色器后,会自动加载 MayaUberShader.fx 文件。dx11Shader.mll 插件可使您在 Maya Viewport 2.0 中加载并查看自己的 HLSL 着色器。使用 Hypershade 创建 DirectX 11 shader 时,会自动连接 MayaUberShader.fxo 文件;但是,您也可以改为加载自定义 HLSL 着色器。此外,<maya directory>presetsHLSL11examples 中提供了其他示例 HLSL 着色器。选择 DirectX 作为渲染引擎(方法 1)选择“窗口 > 设置/首选项 > 首选项 > 显示”(Window > Settings/Preferences > Preferences > Display)并将“渲染引擎”(Rendering engine)设置为“DirectX 11”。重要信息若要使用 DirectX 渲染引擎,您必须使用 64 位的 Windows 和可兼容 DirectX 11 的显卡。在面板菜单中选择“渲染器 > Viewport 2.0”(Renderer > Viewport 2.0)将工作区切换到 Viewport 2.0。注意您的工作区平视显示仪现在应指示 Viewport 2.0 (DirectX 11)。选择“窗口 > 设置/首选项 > 插件管理器”(Window > Settings/Preferences > Plug-in Manager)并加载 dx11Shader.mll 插件。选择 DirectX 作为渲染引擎(方法 2)此环境变量将覆盖交互式和批处理会话的用户首选项(“窗口 > 设置/首选项 > 首选项 > 显示”(Window > Settings/Preferences > Preferences > Display))(使用 -hw2 选项)。将 MAYA_VP2_DEVICE_OVERRIDE 设置为 VirtualDeviceDx11 可在 Viewport 2.0 中渲染时始终使用 DirectX 11。提示将此环境变量设置为 VirtualDeviceGL 可在 Viewport 2.0 中渲染时始终使用 OpenGL。注意取消设置该环境变量可再次使用用户首选项来选择渲染引擎。创建 DirectX 着色器选择“窗口 > 渲染编辑器 > Hypershade”(Window > Rendering Editors > Hypershade),以打开“Hypershade”窗口。在“创建”(Create)栏中,选择“Maya > 曲面 > DirectX 11 Shader”(Maya > Surface > DirectX 11 Shader)。将创建 DirectX 11 Shader,同时自动加载 MayaUberShader.fx。按 6 以获得纹理模式,按 7 以使用场景照明。提示纹理和非纹理模式均受支持,且所有灯光模式(“使用所有灯光”(Use All Lights)、“使用选定灯光”(Use Selected Lights)、“不使用灯光”(Use No Lights)和“使用默认照明”(Use Default Lighting))均受支持。
2023-08-18 01:45:361

移动开发 android:fillViewport="true" , android:scrollbars="none" 是干什么的呀?求详解

android:fillViewport="true"当一个高度值不足scrollview的子控件fillparent的时候,单独的定义android:layout_height="fill_parent"是不起作用的,必须加上fillviewport属性,当子控件的高度值大于scrollview的高度时,这个标签就没有任何意义了。android:scrollbars="none" 隐藏滚动条
2023-08-18 01:45:551

如何使电脑端的网页游戏在手机端打开能自动适应手机屏幕?

为了使网页游戏在手机端能正常打开并适应手机屏幕,您可以在网页的 head 标签中加入以下代码:<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">这样可以使网页在手机端自动缩放,适应手机屏幕。至于自动横屏,您可以在 head 标签中加入以下代码:<meta name="screen-orientation" content="landscape">这样可以使网页在手机端自动横屏显示。在使用这些代码之前,建议您阅读一下 W3C 的 Viewport 文档,了解更多有关 viewport 的知识。希望这些信息能帮助到您。
2023-08-18 01:46:021

umi中使用postcss-px-to-viewport进行移动端适配

4.完事! 附全图:
2023-08-18 01:46:091

网页制作不使用css3怎么做出自适应圆角矩形

在网页代码的头部,加入一行viewport元标签。<metaname="viewport"content="width=device-width,initial-scale=1"/>viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。2由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。对图像来说也是这样。具体说,CSS代码不能指定像素宽度:width:xxxpx;只能指定百分比宽度:width:xx%;或者width:auto;3字体也不能使用绝对大小(px),而只能使用相对大小(em)。例如:body{font:normal100%Helvetica,Arial,sans-serif;}上面的代码指定,字体大小是页面默认大小的100%,即16像素。4流动布局(fluidgrid)"流动布局"的含义是,各个区块的位置都是浮动的,不是固定不变的。.main{float:right;width:70%;}.leftBar{float:left;width:25%;}float的好处是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现。5"自适应网页设计"的核心,就是CSS3引入的MediaQuery模块。它的意思就是,自动探测屏幕宽度,然后加载相应的CSS文件。<linkrel="stylesheet"type="text/css"media="screenand(max-device-width:400px)"href="tinyScreen.css"/>上面的代码意思是,如果屏幕宽度小于400像素(max-device-width:400px),就加载tinyScreen.css文件。<linkrel="stylesheet"type="text/css"media="screenand(min-width:400px)and(max-device-width:600px)"href="smallScreen.css"/>如果屏幕宽度在400像素到600像素之间,则加载smallScreen.css文件。END参考下面的例子——我称它为“盒子”<!doctypehtml><htmllang="en"><head><metacharset="utf-8"><!--viewportmetatoresetiPhoneinitalscale--><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Demo:ResponsiveDesignin3Steps</title><!--css3-mediaqueries.jsforIE8orolder--><!--[ifltIE9]><scriptsrc="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script><![endif]--><styletype="text/css">body{font:1em/150%Arial,Helvetica,sans-serif;}a{color:#669;text-decoration:none;}a:hover{text-decoration:underline;}h1{font:bold36px/100%Arial,Helvetica,sans-serif;}/************************************************************************************STRUCTURE*************************************************************************************/#pagewrap{padding:5px;width:960px;margin:20pxauto;}#header{height:180px;}#content{width:600px;float:left;}#sidebar{width:300px;float:right;}#footer{clear:both;}/************************************************************************************MEDIAQUERIES*************************************************************************************//*for980pxorless*/@mediascreenand(max-width:980px){#pagewrap{width:94%;}#content{width:65%;}#sidebar{width:30%;}}/*for700pxorless*/@mediascreenand(max-width:700px){#content{width:auto;float:none;}#sidebar{width:auto;float:none;}}/*for480pxorless*/@mediascreenand(max-width:480px){#header{height:auto;}h1{font-size:24px;}#sidebar{display:none;}}/*border&guideline(youcanignorethese)*/#content{background:#f8f8f8;}#sidebar{background:#f0efef;}#header,#content,#sidebar{margin-bottom:5px;}#pagewrap,#header,#content,#sidebar,#footer{border:solid1px#ccc;}</style></head><body><divid="pagewrap"><divid="header"><h1>Header</h1><p>Tutorialby<ahref="http://webdesignerwall.com">WebDesignerWall</a>(read<ahref="http://webdesignerwall.com/tutorials/responsive-design-in-3-steps">relatedarticle</a>)</p></div><divid="content"><h2>Content</h2><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p></div><divid="sidebar"><h3>Sidebar</h3><p>textg</p><p>fgs</p><p>fgsg</p><p>dg</p><p>dfgfd</p><p>是否感到反感</p><p>sgrtg</p><p>分公司</p><p>sgf</p><p>text</p></div><divid="footer"><h4>Footer</h4></div></div></body></html>
2023-08-18 01:46:192

maya2015用曲线放样建模(所有曲线建模)都是黑色的外黑里灰。

DirectX 11 Shader 节点的属性,指定了 MayaUberShader 着色器文件。要使用该着色器,您必须在 Viewport 2.0 的 DirectX 11 环境中工作,并启用 dx11shader.mll 插件。有关详细信息。您可以在 Hypershade 创建栏中找到 DirectX 11 Shader。创建着色器后,会自动加载 MayaUberShader.fx 文件。dx11Shader.mll 插件可使您在 Maya Viewport 2.0 中加载并查看自己的 HLSL 着色器。使用 Hypershade 创建 DirectX 11 shader 时,会自动连接 MayaUberShader.fxo 文件;但是,您也可以改为加载自定义 HLSL 着色器。此外,<maya directory>presetsHLSL11examples 中提供了其他示例 HLSL 着色器。选择 DirectX 作为渲染引擎(方法 1)选择“窗口 > 设置/首选项 > 首选项 > 显示”(Window > Settings/Preferences > Preferences > Display)并将“渲染引擎”(Rendering engine)设置为“DirectX 11”。重要信息若要使用 DirectX 渲染引擎,您必须使用 64 位的 Windows 和可兼容 DirectX 11 的显卡。在面板菜单中选择“渲染器 > Viewport 2.0”(Renderer > Viewport 2.0)将工作区切换到 Viewport 2.0。注意您的工作区平视显示仪现在应指示 Viewport 2.0 (DirectX 11)。选择“窗口 > 设置/首选项 > 插件管理器”(Window > Settings/Preferences > Plug-in Manager)并加载 dx11Shader.mll 插件。选择 DirectX 作为渲染引擎(方法 2)此环境变量将覆盖交互式和批处理会话的用户首选项(“窗口 > 设置/首选项 > 首选项 > 显示”(Window > Settings/Preferences > Preferences > Display))(使用 -hw2 选项)。将 MAYA_VP2_DEVICE_OVERRIDE 设置为 VirtualDeviceDx11 可在 Viewport 2.0 中渲染时始终使用 DirectX 11。提示将此环境变量设置为 VirtualDeviceGL 可在 Viewport 2.0 中渲染时始终使用 OpenGL。注意取消设置该环境变量可再次使用用户首选项来选择渲染引擎。创建 DirectX 着色器选择“窗口 > 渲染编辑器 > Hypershade”(Window > Rendering Editors > Hypershade),以打开“Hypershade”窗口。在“创建”(Create)栏中,选择“Maya > 曲面 > DirectX 11 Shader”(Maya > Surface > DirectX 11 Shader)。将创建 DirectX 11 Shader,同时自动加载 MayaUberShader.fx。按 6 以获得纹理模式,按 7 以使用场景照明。提示纹理和非纹理模式均受支持,且所有灯光模式(“使用所有灯光”(Use All Lights)、“使用选定灯光”(Use Selected Lights)、“不使用灯光”(Use No Lights)和“使用默认照明”(Use Default Lighting))均受支持。
2023-08-18 01:46:261

android webview 怎么放大缩小

Android:WebView如何设定支持缩放:需要对WebView和WebSettings做一下设定webview.setVerticalScrollbarOverlay(true); //指定的垂直滚动条有叠加样式WebSettings settings = webview.getSettings();settings.setUseWideViewPort(true);//设定支持viewportsettings.setLoadWithOverviewMode(true);settings.setBuiltInZoomControls(true);settings.setSupportZoom(true);//设定支持缩放 html界面meta标签<metaname="viewport"content="height= [pixel_value| "device-height"] ,width= [pixel_value| "device-width"] ,initial-scale=float_value,//初始缩放minimum-scale=float_value,//最小maximum-scale=float_value,//最大user-scalable= ["yes" | "no"]//是否允许用户对页面缩放 "/>例如:<meta name="viewport" content="width=device-width,user-scalable=yes initial-scale=1.0, maximum-scale=2.0">-->设定支持缩放,最大两倍缩放
2023-08-18 01:46:361

如何获取屏幕的宽度

问题一:js 中怎么获取当前屏幕的宽度 document.documentElement.clientWidth 这个方法返回页面在当前窗口中可见部分的宽度(不包括滚动条宽度); window.innerWidth 这个方法返回页面在当前窗口中可见部分宽度(包括滚动条宽度); window.outerWidth 返回浏览器窗口自身宽度,包括菜单和边框; screen.width 返回设备的(屏幕宽度) 问题二:js网页如何获取手机屏幕宽度 ]@]@] @sssssvar x = navigator; var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; document.getElementById(p1).innerHTML=屏幕分辨率:+screen.width + * + screen.height+内部窗口: + w + * + h 不知道是不是这个 屏幕分辨率 :pc上的桌面分辨率 。手机上是 一个型号固定的分辨率比如 华为8813的分辨率是480*854。。 内部窗口是 改变窗口大小刷新一下就有新的数据 问题三:用javascript 怎样才能很好的获取手机的屏幕宽度和高度 一般来说在移动浏览器上是拿不到屏幕真实分辨率的,因为页面渲染是在一个叫viewport的页面绘制区域内(说的通俗点就是手机浏览器是用一个虚拟的屏幕来显示网页的)。viewport和屏幕的真实尺寸并不是对应的,如在Safari Mobile中viewport默认宽度(320px)是屏幕真实尺寸(640px)的一半,这里不管是用window.innerHeight还是window.screen.width拿到的都是320px。当然我们可以通过meta设置改变viewport的比例,如initial-scale=.5就可以让viewport和屏幕一致的尺寸,但这个比例在不同的手机上并不一定是2倍关系,特别是Android手机,在大屏手机(5寸以上)上这个值是3倍甚至4倍。而且改变viewport比例后可能会导致后续制作中出现一系列问题。所以我认为不要纠结一定要拿到屏幕真实尺寸,就把viewport的尺寸当成屏幕的尺寸进行页面设计和制作肯定是没有问题的。 有一个非常曲线的解决办法,就是:css的媒体查询(@media)是能够检测屏幕尺寸(其实是浏览器窗体的真实尺寸,并不是屏幕的真实物理尺寸,介意的朋友就不要看了)的,通过它来给网页内的某个元素设置一个特殊的属性,然后再用JavaScript来获取这个属性值。当然这样只能获得一个阶梯值(比如480px到540px之间、540px到600px之间等等),不是精确值,所以可能得不偿失,因此我是不推荐的。 问题四:如何获得当前屏幕的高度 window.onload = function(){ 获取屏幕高度 document.documentElement.clientHeightconsole.log(document.documentElement.clientHeight); 获取屏幕宽度 document.documentElement.clientWidthconsole.log(document.documentElement.clientWidth);} 问题五:html中 如何获取屏幕宽度?? 把以下这段代码放到之间或之间预览即可看到数据 /*将获取的值存到变量里*/ width_screen=screen.width; height_screen=screen.height; availWidth_screen=screen.availWidth; availHeight_screen=screen.availHeight; colorDepth_screen=screen.colorDepth; /*end*/ /*输出值*/ document.write(你的屏幕宽为:+width_screen+ 你的屏幕高为:+height_screen+ 你的屏幕可用宽为:+availWidth_screen+ 你的屏幕可用高为:+availHeight_screen+ 你的颜色设置所有为数为:+colorDepth_screen); /*end*/ 问题六:怎么用jquery来获取屏幕的宽度和高速 $(window).width();$(window).height();严格来说,获取window才对 问题七:javascript怎么获取屏幕大小 1 2 3 4 5 6 7 8 9 window.onload = function(){ 获取屏幕高度 document.documentElement.clientHeight console.log(document.documentElement.clientHeight); 获取屏幕宽度 document.documentElement.clientWidth console.log(document.documentElement.clientWidth); } 问题八:PHP怎么获取屏幕的宽度与高度? 10分 PHP是无法获取屏幕的高度和宽度的,你可以用JS来获取 Javascript: 网页可见区域宽: document.body.clientWidth  网页可见区域高: document.body.clientHeight  网页可见区域宽: document.body.offsetWidth (包括边线的宽)  网页可见区域高: document.body.offsetHeight (包括边线的高)  网页正文全文宽: document.body.scrollWidth  网页正文全文高: document.body.scrollHeight  网页被卷去的高: document.body.scrollTop  网页被卷去的左: document.body.scrollLeft  网页正文部分上: window.screenTop  网页正文部分左: window.screenLeft  屏幕分辨率的高: window.screen.height  屏幕分辨率的宽: window.screen.width  屏幕可用工作区高度: window.screen.availHeight  屏幕可用工作区宽度: window.screen.availWidth JQuery: $(document).ready(function(){  alert($(window).height()); 浏览器当前窗口可视区域高度  alert($(document).height()); 浏览器当前窗口文档的高度  alert($(document.body).height());浏览器当前窗口文档body的高度  alert($(document.body).outerHeight(true));浏览器当前窗口文档body的总高度 包括border padding margin  alert($(window).width()); 浏览器当前窗口可视区域宽度  alert($(document).width());浏览器当前窗口文档对象宽度  alert($(document.body).width());浏览器当前窗口文档body的宽度  alert($(document.body).outerWidth(true));浏览器当前窗口文档body的总宽度 包括border padding margin  }) 问题九:怎样用 JavaScript 准确获取手机屏幕的宽度和高度 屏幕分辨率的高:window.screen.height 屏幕分辨率的宽:window.screen.width 网页可见区域宽:document.body.offsetWidth 网页可见区域高:document.body.offsetHeight 问题十:Android开发 怎样获取屏幕的宽高是多少厘米 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即可获取屏幕的尺寸。 在一个Activity的onCreate方法中,写入如下代码: [java] view plain copy print? DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; 屏幕宽度(像素) int height = metric.heightPixels; 屏幕高度(像素) float density = metric.density; 屏幕密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; 屏幕密度DPI(120 / 160 / 240) DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; 屏幕宽度(像素) int height = metric.heightPixels; 屏幕高度(像素) float density = metric.density; 屏幕密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; 屏幕密度DPI(120 / 160 / 240) 但是,需要注意的是,在一个低密度的小屏手机上,仅靠上面的代码是不能获取正确的尺寸的。比如说,一部240x320像素的低密度手机,如果运行上述代码,获取到的屏幕尺寸是320x427。因此,研究之后发现,若没有设定多分辨率支持的话,Android系统会将240x320的低密度(120)尺寸转换为中等密度(160)对应的尺寸,这样的话就大大影响了程序的编码。所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens节点,具体的内容如下: [html] view plain copy print? >
2023-08-18 01:46:431

求教 关于vue web项目手机端viewport设置为什么无效

是怎么回事
2023-08-18 01:46:511

大屏网页设计-如何设计自适应屏幕大小的网页ResponsiveWebDesign

网页设计教程设置网页步骤1、打开PS,新建空白文档,名称设置为“某某工作室”,从预设大小下拉列表中选择“1024x768”,模式设计为“RGB颜色”,内容设置为“白色”,点击“好”按钮完成文档的创建工作。2、新建一名称为“框架”的图层,利用该图层实际整个网页的整体布局。首先选择“矩形选择工具”,然后将矩形的宽度设置为1024,高度设置为80,在文档的上下两侧各框选一部分内容并填充为黑色,从而使整个网页呈现“宽屏幕”效果。3、在背景图层的上方新建一新图层,并命名为“背景颜色”。点击“矩形选择工具”,设置“宽度为400,高度为768,然后在窗口的左侧框选一部分内容,填充一种深绿色。然后点击“矩形选择工具”,设置“宽度为624,高度为768,然后在窗口的右侧框选一部分内容,填充一种浅绿色。填充两种颜色饱和度有一点差别的颜色,目地是产生较为明显的对比。4、在“框架”图层之上再新建一图层,名称为“主体元素”。打开一张事先准备好的百合花图片,双击“背景”图层将其转换为“图层0”,点击“魔术棒”工具,在图片白色区域内点击,选择白色区域后,按下DEL键删除白色区域。然后拖放图片到图层“主体元素”上。5、然后选择“矩形选择工具”,设置“宽度为624,高度为768,然后在窗口中选择花朵右侧的一部分内容,并调整其亮度和对比度,使花朵的左右两侧呈现明显的对比。对该页面进行细节的调整,增加一些导航栏,信息提示内容和版权信息等内容,最终制作完成的页面。6、选择“切片”工具,然后对内容进行切分。切分的好处是有利于文件在网络上传输,同时在用切片工具划分内容时最好将需要被文字内容替换的部分进行独立分割。分割完成后的效果。7、找到保存文件的位置,打开某某工作室.html文件,然后在内容区域内点击鼠标右键,选择“查看源文件”,就会发现对应的网页内容已经生成。至此,利用PS设计网页内容完成。网页设计如果我用1920*1080的页面,那么内容应该限制在多大尺寸?最好控制在1000px吧,因为还有很多用户用的是分辨率很低的,如果你的用户都是用的大屏浏览器,那么就可以宽一点,比如你的客户是跟网站、设计类有关的,那么他们电脑的分辨率不会低的,至少是1440px,所以你可以先确定你用户的电脑大致分辨率的多大,再考虑宽度尺寸如何设计自适应屏幕大小的网页ResponsiveWebDesign手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone/iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。于是,很早就有人设想,能不能”一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)?如何设计自适应屏幕大小的网页(转)一、”自适应网页设计”的概念2010年,EthanMarcotte提出了”自适应网页设计”(ResponsiveWebDesign)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。他制作了一个范例,里面是《福尔摩斯历险记》六个主人公的头像。如果屏幕宽度大于1300像素,则6张图片并排在一行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在600像素到1300像素之间,则6张图片分成两行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素到600像素之间,则导航栏移到网页头部。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素以下,则6张图片分成三行。如何设计自适应屏幕大小的网页(转)上面有更多这样的例子。这里还有一个测试小工具,可以在一张网页上,同时显示不同分辨率屏幕的测试效果,我推荐安装。二、允许网页宽度自动调整“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用。“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。<metaname=”viewport”content=”width=device-width,initial-scale=1″/>viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用。
2023-08-18 01:47:061

NVIDIA Ansel 游戏画面撷取技术与 VRWORKS AUDIO 音讯技术进一步介绍

NVIDIA在上周末宣布全新架构Pascal的娱乐级显示卡GTX1080与GTX1070时,也一并宣布两项新技术,分别是游戏内截图的Ansel,以及为了VR音讯的VRWORKSAUDIO;稍早NVIDIA也在台湾进一步介绍这两项技术的功能与原理,值得一提的是这两项技术并非Pascal架构独享的功能,未来仍可搭配近期架构的GPU体验。 Ansel的截图功能是与游戏开发商深度合作,为了让一些喜爱在游戏中撷取精美照片的玩家更容易拍摄他们想要的画面截图;虽然一些游戏内也有提供可让画面暂停并调整视角、加入特效的专业拍照模式,不过不是所有的游戏都有提供这样的功能,多半的玩家是透过截图软体的方式设法在游戏中拍下画面,不过截图软体毕竟没有与游戏系统整合,难以捕捉瞬间的大景与调整到喜欢的角度。 而Ansel则是透过GPU技术,借由多重Viewport(Viewport的概念有点像是从窗户忠看游戏3D场景)作为基础,让游戏可进入专业的撷取模式。而Ansel包括几个主要机能:自由视角、滤镜、HDR、超取样解析度以及360度拍摄。 自由视角对于构图是相当重要的,一般没有内建拍照功能而透过截图外怪的游戏要调整到满意的视角是有难度的,毕竟一般游戏的视角多半围绕在游戏主角身上,也使得取景受到限制,而Ansel则允许在游戏进入Ansel的截图模式后,在整个运算后的环境自由的移动(当然游戏厂商可限制移动的范围),就能取得理想的拍摄角度。 至于滤镜与HDR功能,则是透过GPU加速演算的方式帮游戏加入特效,无论是Lomo风、特殊色彩或是高对比画面下的影像后制,宛然真的在处理照片特效一样。 超取样解析度则是让游戏截图提升到专业照片等级的重要关键,透过以多个Viewport撷取的影像演算后进行解析度提升,最高可将4K影像进行高达32倍(依照显示卡效能而异)取样后达到4.5GigaPixel的惊人解析度,使得游戏截图足以作为专业海报列印输出,不过档案尺寸也会相当惊人,建议还是考虑实际使用情境决定取样倍率以免输出过高画素的影像。至于360度拍摄就宛如近期流行的天周相机一样,可拍摄360度游戏节图。 Ansel是一项软体开发商选择性的功能,毕竟不是所有的游戏都适合在游戏内提供专业拍照模式,例如线上游戏、多人连线FPS等,很可能玩家进入拍摄模式而暂停的同时就已经被其他玩家打死,回到画面才发现角色死亡,另外像是解谜游戏的迷宫场景也可能有玩家利用Ansel的特性以自由视角找寻路线作弊。不过对游戏开发商而言,导入Ansel的支援可不用另行开发游戏内的拍照模式,只要做好像是视角的可移动范围即可。目前包括全境封锁、巫师等数款还未上市以及已经上市的游戏将会预载或是透过更新方式支援Ansel。 至于VRWORKSAUDIO是针对VR游戏中的音效所做的技术,不同于一般游戏中的体验,VR体验有着更复杂的要求,包括声音与目前人物所在的位置、距离、空间、反射等等,为了营造更逼真的VR内音效,需要更接近自然声音的模拟。 为了产生更自然的VR世界声音,除了要能够即时追踪使用者位置提供合理的音效,例如上途中因为周遭不同特性物体反射造成的声音也要能一并模拟,所以这时NVIDIA的RayTracing技术就派上用场了。 谈到RayTracing,一般玩家会直觉想到是用于光线追踪的模拟技术,不过先前这项技术也被用于模拟声波的反射,像是具备杜比音效的电影院,音响配置就会透过基于RayTracing的声波模拟进行摆设方位的模拟;总之利用基于光线追踪与物理特性的技术,VRWORKSAUDIO可模拟声波在VR世界中的传递,让使用者听到更像真实环境的音效。 你或许会喜欢 iPhone玫瑰金母亲节现货供应 国外无限上网吃到饱
2023-08-18 01:47:251

pdf.js可以实现lazyload吗?

有个 disableAutoFetch 选项,在全局配置里面,搜索改为true就行了。如果使用视图框架,在viewer.js里面,否则就再pdf.worker.js中
2023-08-18 01:47:353

vue3 自适应布局: 注意!对于非style标签的px是无法转化为vw的

npm install postcss-px-to-viewport -D 新建文件:vue.config.js module.exports={ css: { extract: false,//false表示开发环境,true表示生成环境 sourceMap: false, loaderOptions: { postcss: { plugins: [ require("postcss-px-to-viewport")({ unitToConvert: "px", // 需要转换的单位,默认为"px" viewportWidth: 1920, // 视窗的宽度,对应pc设计稿的宽度,一般是1920 viewportHeight: 1080,// 视窗的高度,对应的是我们设计稿的高度,我做的是大屏监控,高度就是1080 unitPrecision: 3, // 单位转换后保留的精度 propList: [ // 能转化为vw的属性列表 "*" ], viewportUnit: "vw", // 希望使用的视口单位 fontViewportUnit: "vw", // 字体使用的视口单位 selectorBlackList: [], // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。 minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换 mediaQuery: false, // 媒体查询里的单位是否需要转换单位 replace: true, // 是否直接更换属性值,而不添加备用属性 exclude: /(/|)(node_modules)(/|)/, // 忽略某些文件夹下的文件或特定文件,例如 "node_modules" 下的文件 }) ] } } } }
2023-08-18 01:47:421

WPF 3D中如何选择模型的一部分并维护模型

我选择了一个方块,将方块显示为蓝色,同时屏幕坐上显示了点击方块后的操作。整个流程我处理了两个问题:1. 如何选择模型的这一部分2. 如何维护你选择的这个部分 问题1:如何选择模型的这一部分由于WPF 3D模型中只有Viewport3D对象有MouseButtonLeftDown事件,而模型的某个部分是没有这个事件的。因此需要使用首先VisualTreeHelper.HitTest来确定具体点击的是哪个模型,同时这个模型是需要给外部用的,因此我们自定义了一个ModelVisual3DSelectedEventHandler的事件给外部调用。 1 //自定义个一个模型选中的EventHandler 2 public class Visual3DEventArgs : EventArgs3 {4 public ModelVisual3D Visual3D { get; set; }56 public Visual3DEventArgs(ModelVisual3D modelVisual3D)7 {8 this.Visual3D = modelVisual3D;9 }10 }1112 public delegate void ModelVisual3DSelectedEventHandler(object sender, Visual3DEventArgs args);13 //....14 15 //声明Viewport3D的LeftButton事件16 ViewPort.MouseLeftButtonDown += ViewPort_MouseLeftButtonDown;1718 //Viewport LeftButton的函数19 void ViewPort_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs args)20 {21 Point mousePos = args.GetPosition(ViewPort);22 var hitParams = new PointHitTestParameters(mousePos);23 VisualTreeHelper.HitTest(ViewPort, null, ResultCallback, hitParams);24 }2526 //根据HitTest选中之后的处理27 private HitTestResultBehavior ResultCallback(HitTestResult result)28 {29 RayHitTestResult rayResult = result as RayHitTestResult;3031 if (rayResult != null)32 {33 var visual3D = result.VisualHit as ModelVisual3D;34 if (visual3D != null)35 {36 if (OnModelSelected != null)37 {38 OnModelSelected(this, new Visual3DEventArgs(visual3D));39 }4041 return HitTestResultBehavior.Stop;42 }4344 }45 return HitTestResultBehavior.Continue;46 } 2. 问题2:如何维护你选择部分我刚刚在Visual3DEventArgs中已经获得了选择的模型了,这时候我就可以对它进行操作了。或许数据库中有个模型叫"block1",查找数据等等.... 但是很悲催的是, 虽然在xaml文件中ModelVisual3D是有x:name的,但是ModelVisual3D本书是没有 ModelVisual3D.Name这个属性的,即使获取了这个模型,也只能对其进行基本的渲染,根本没有办法进行逻辑操作(例如根据数据库通信等)。 只有通过viewport3D.FindName(string name)才能获取对象! 解决办法是:我们自己可以维护一个模型名字表(其实就是个xml文件): dg01 dg02 dg04 然后定义一个返回名字的函数: 1 public Section GetSelSection(ModelVisual3D visual3D)2 {3 if (_context != null && _context.Sections != null && visual3D != null)4 {5 var viewPort = _context.Model.ViewPort;67 foreach (var section in _context.Sections)8 {9 if (viewPort.FindName(section.Name) == visual3D)10 {11 return section;12 }13 }14 }15 17 return null;18 } 我就可以通过GetSelSection(args.Visual3D)获得这个section对象了。对了,这个Section就是刚才XML文件的映射类。
2023-08-18 01:47:521

ObjectARX 自定义实体重写viewportDraw(AcGiViewPortDraw*)的问题

模型空间中是调用WorldDraw函数,只有返回True才能正确绘制,ViewPortDraw是在视口中显示实体用的函数。
2023-08-18 01:47:591

是什么意思?

meta是一个标签,你用eclipse自动创建一个空的JSP的时候会默认生成<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">;这个标签一半不会用它做什么事
2023-08-18 01:48:061

用javascript 怎样才能很好的获取手机的屏幕宽度和高度

window.innerWidthwindow.innerHeight
2023-08-18 01:48:154