IT入门 > 图文教程 > HTML5+CSS3 >

IT入门 > 图文教程 > HTML5+CSS3 >

前端杂谈 - 5个常见响应式设计陷阱及解决方案

  你会看到这个提示,那是因为你的系统无法识别某栏目的模型信息,或者你新建模型后,没为这个模型设计单独的模板。不同模型的文档浏览页的模板为:article_模型名字标识.htm 如“article_article.htm”,更多的信息你可以在频道模型管理的地方查看。
文件类型 内容:
模板调用标记:
.exe
语言 内容:
模板调用标记:
简体中文
软件类型 内容:
模板调用标记:
国产软件
授权方式 内容:
模板调用标记:
共享软件
操作系统 内容:
模板调用标记:
软件等级 内容:
模板调用标记:
3
官方网址 内容:
模板调用标记:
演示网址 内容:
模板调用标记:
软件大小课程时长 内容:
模板调用标记:
下载资料 内容:
模板调用标记:
详细介绍 内容:
模板调用标记:

0. 目录

  • 目录

  • 引言

  • 正文

    • 1 引入

    • 1 意外的文字改变

    • 2 非期望的表单样式

    • 3 误导的仿真器错误mulator Errors

    • 4 桌面端表现良好动画的移动端呈现问题

    • 5 触摸事件Touch Event的坐标注册问题

    • 6 总结

1. 引言

原文: Sitepoint 的 5 Responsive Design Pitfalls and How to Avoid Them

译者:前端开发whqet,意译为主不当之处,欢迎指正!

译言:希望能够对大家所有帮助。

2. 正文

2.1 引入

想象这样的场景: 您刚刚创建了一个 杰出的 响应式设计,然后准备在移动设备中测试一下。在您意想不到的地方产生了一些问题,文字乱糟糟的,动画波涛汹涌,表单没有呈现您设计的样式。然后花费N多时间修复这些问题,您可能抓狂地把电脑扔出窗外砸中邻居家的猫。

好消息是,我准备在本篇文章里介绍这些可能令您抓狂的问题,并讲解相应的解决方案。主要包括以下五个问题:

  1. 意外的文字改变

  2. 非期望的表单样式

  3. 误导的仿真器错误

  4. 桌面端表现良好动画的移动端呈现问题

  5. 触摸事件(Touch Event)的坐标注册问题

好的,言归正传。

本文假设您了解响应式网页开发的基础知识,否则您可能需要进行一下提升( 简明教程 )。

2.1 意外的文字改变

ios设备的旋转将破坏布局、改变页面中的文字大小,当元素(例如导航条、菜单等)设置为固定定位时经常产生类似的问题,只有刷新页面才可以修复问题。幸运的是,有一个方法可以防患于未然。

在您的css中添加如下代码

前端杂谈 - 5个常见响应式设计陷阱及解决方案

该代码设置横屏时文字的缩放为100%,从而防止意外的文字改变发生。

2.2 非期望的表单样式

平板或移动设备经常调用默认样式搞糟您的表单样式,我们可以使用如下的css代码阻止表单的默认样式。

前端杂谈 - 5个常见响应式设计陷阱及解决方案

您可以根据需要选择重置的表单,例如将input[type=text]改变为input会选择所有类型的input。

2.3 误导的仿真器错误(mulator Errors)

如果您使用基于浏览器的移动仿真器进行测试,有时会产生一些烦人的问题。在您代码没有问题的情况下抛出一个问题,令人纠结。

例如,有一次正在开发中的页面底部的导航条莫名其妙的消失了,正当我准备查找问题原因时,我发现Chrome模拟器的视窗底部被切掉一部分,当我在新tab中打开页面,然后切换移动视图刷新之后就解决了问题。

遇到类似的问题,最为重要的是,要保证您的代码没问题仅仅是模拟器的问题。您可以尝试隔离问题区域看看代码是否正常工作,然后在真正的移动设备上测试一下。

2.4 桌面端表现良好动画的移动端呈现问题

如果您在移动设备上使用动画,请一定要尤其注意动画的性能问题。一般来说,浏览器能够有效的动画以下属性translate、scale、rotate和 opacity等,例如下面的案例。

前端杂谈 - 5个常见响应式设计陷阱及解决方案

这些属性动画性能良好的原因是,这些属性位于浏览器渲染器的顶层。您可以把一个网页看成一个餐桌,动画这些属性就类似于移动一个调羹,动画底层属性类似于移动整个餐桌布,您需要同时移动上面的所有覆盖物,所以更加费劲一些(性能就会差一点)。

为了最大化的支持您的动画,您可能需要加浏览器前缀(verdor prefix),您也可以到Caniuse了解更多的兼容情况。

另外注意,盒阴影(box-shadow)有时会影响动画性能,所以强烈建议使用盒阴影时注意移动设备的测试。

2.5 触摸事件(Touch Event)的坐标注册问题

触摸事件的坐标注册问题也比较微妙,因为坐标在不同设备中存储区域不同。一些设备(例如ios)的触摸坐标和单击坐标相同,而另一些(例如android)设备则不同。好消息是,在任何移动设备中都可以通过特定的触摸事件数据(touch event data)获取坐标。

对于触摸事件来说,使用e.touches[0].pageX而非e.pageX获取触摸点的x坐标,获取y坐标也是类似的道理。下面是一些可能实际应用的代码。

前端杂谈 - 5个常见响应式设计陷阱及解决方案

大家不妨模拟器里测试下上面的代码。

2.6 总结

本文罗列一些响应式网页开发中的一些常见陷阱,并指定了对应的解决方案,希望可以对您为您节省时间,少些麻烦。

欢迎通过评论讨论、指教。

前端观察


下载级别 内容:
模板调用标记:
0
需要金币 内容:
模板调用标记:
0
课程难度 内容:
模板调用标记:
0
(责任编辑:zengmumu)
    广告位API接口通信错误,查看德得广告获取帮助