html5页面布局总结
发布日期:2021-08-31 13:57:41 浏览次数:32 分类:技术文章

本文共 2658 字,大约阅读时间需要 8 分钟。

先写点题外话吧,算是对最近经历的一个总结。2017年,貌似是个多事之秋啊,工作中遇到些不顺,本来是很美好的愿景,可是现在貌似破灭了,抱着“山重水复疑无路,柳暗花明又一村”的希冀,目前可能也希望渺茫了,没事,工作的事情总能解决的,还是有自身优势的,我相信自己,OK,给自己打气的话就写到这吧。

以前做移动端webapp开发,屏幕比较小,手机都是一个版本一个版本的固定产品,界面布局随便布布,修修改改也就OK了。后来接触PC大屏幕开发,界面元素顿时增加很多,不注重布局就会很慌乱和被动,其实想好好总结布局方面已经很长时间了,但总是没有一个很好的去总结一下,在加之之前的项目对自适应要求也不是很高,最近做了一个界面,界面元素各种不规则布局,并且还有动画,网联网产品还要求能够适应各种屏幕,各种浏览器版本,之前做项目最讨厌IE浏览器,觉得它总是那么个性,各种不兼容,做这个产品竟然发现了IE浏览器的优点,IE浏览器版本少,方便浏览器各种版本的兼容性测试,对于不支持的h5属性,有各路大神开发的各种查件,这些插件可以解决IE低版本中的h5特性的不支持问题。

言归正转,下面开始总结h5界面布局问题。

1. 首先,拿到一个界面UI设计,需要先对界面进行分块,分成几部分开发。h5有个特性,就是语义化布局,我的布局中也使用到了,可能受以前做firefox os项目的影响,这个项目对h5的语义化还是使用听充分的,这种语义化使用有的好处我就不说了(结构明了),但是,这种布局在IE9以下,IE8 IE7中,就不怎么好了,它们不认这些标签,在这些版本中就深深的体会了一把什么是div+css布局,这种布局就不会带来标签不识别的问题了。

2.块分好了,如果要兼容IE地版本,选择div+css布局,开始具体布局。在布局中,position属性就显得很重要,div元素位置如果不需要进行调整,按照盒模型顺排下来可以,就不用进行设置,取默认值static,如果要进行偏移,设置为relative,元素不会脱离文档流。在一个元素上,还有其他的元素也在它的占位上的某个位置,那么外层的div设置为relative,它的位置上的元素就用absolute来定位,并且给top:0;left:0来进行偏移; 这里,元素进行偏移时,使用怎么的单位很重要,对于相对于界面,要在界面某个位置的元素,界面宽度width,left和top使用%来偏移,这样,在任何分辨率的屏幕上,元素都在相对于界面相同的位置上,使得元素在任何显示器上都能正常显示。但是,如果对于一个元素快,里面有其他的元素组成,他们组成了一个一体的布局,并且位置不规整,那么内部的元素请使用absolute进行布局,并且top和left请使用rem进行布局这样在任何分辨率下,元素块虽然显示大小不同,但是元素块的相对位置不变,元素块一直是一个整体。另外,如果一个元素是absolute元素,它里面还有元素,请使用relative,并且使用rem为单位,这样,这个元素 就是一体的,是个整体,在任何分辨率下都是那样的布局整体。

3.同一行的元素块,如果分成几个部分,那么最外层元素使用relative布局,里面的使用position:relative;display:inline-block;width:20%的比例式布局(这里也可以考虑使用flex布局),通过left。top来调整子元素块的位置,在不同分辨率时,调整left,top实现自适应。如果分块的元素里面还有子元素,接着进行分块,并且元素宽度使用%来定义。

4.关于自适应,不同尺寸的显示器,分辨率不同,找出不同分辨率下位置变化的元素,根据@media screen进行位置的微调,其实需要微调的元素,很多是top为rem为单位的元素,left为百分比的,在每种分辨率下位置左偏移位置不变,为了做好自适应,布局界面时让尽可能少的元素相对于界面的位置不稳定。在做自适应的时候,注意各种分辨率的写法,如果用到了max-width,那么顺序应该重大往小的写,这样界面就能使用到最合适的尺寸。

5.自适应的调试通过调整分辨率实现,做为互联网产品,浏览器兼容性的测试很重要,这时候IE就很有优势,IE11浏览器,有IE5 IE7 IE8 IE9的模式,可以直接测试,还有IE tester工具。但是chrome和firefox就惨了,目前只有在线工具,收费的,免费也是有限的,并且国外网站,国内哪个慢啊。 总得来说,这个工具还可以,通过安装插件,插件模拟器允许安装各种版本浏览器,进行测试,这里有个坑,就是他的插件在windows7上可以安装使用,在windows10上安装不了。

这个工具需要你能把你的网页发布到公网上,在远端服务器上运行了,发送截图给你,但是每天发布的截图数量有限,并且只能免费一个月。

这个是对IE浏览器进行测试,有了IE11,意义不是特别大,有的浏览器还是测试不出来。

在说个测试中遇到的坑。firefox浏览器21.0版本,对绝对定位的元素,box-align:end和通常的使用方式有差异,解决方法是在原本的div结构中,在添加一层div,使用relative定位,再使用这个box-align:end属性,但是父级div的高度需要进行调整,总之,这个版本很不同,根据实际情况进行处理吧。

6.说说h5的canvas和css的animation,深深的体会了一把动画,如果是几个元素的联动,还是乖乖使用div和 css的linear的animation吧,如果是线性的动画,使用canvas,其实canvas就是在一个容器上,调用接口定时的去重绘,canvas中还不支持skew属性,没法实现形变。animation中的

transform-origin: 50% 50% 我原本以为只是在0%的时候设置就全部生效,如果动画位置变换了,不在是默认的中心点位置,要在每个进度进行设置。jQuery的animation()接口,貌似都可以用css的animation实现,animation-fill-mode: forwards;属性很重要,对于一些动画效果。如果想要更多动画效果,好好了解下贝塞尔曲线很有必要。 如果要实现自适应,canvas的width和height也使用%进行设置。 插入部分做的效果。

 
 

 

转载于:https://www.cnblogs.com/liangxin/p/7000345.html

转载地址:https://blog.csdn.net/weixin_34077371/article/details/93139394 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mysql主从复制
下一篇:EF中新建表和关联表的方法

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月15日 19时56分39秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

html5 带图片导航,html5 带声音的导航 2019-04-21
point 如何求elbow_机器人学——实践一(Arm Navigation 理论+代码) 2019-04-21
avs3 mkv格式封装_将你的视频无损封装成MP4,非转码哦! 2019-04-21
java http服务端_HTTP协议经典面试题整理及答案详解 2019-04-21
mysql 递归查找父节点_数据结构与算法—浅显易懂的二叉排序(查找)树 2019-04-21
body里写注释 postman_使用 Postman 做 API 自动化测试 2019-04-21
python3的配置文件类单例实现_Servlet是单例还多例 2019-04-21
写一个饿汉单例模式的例子_看完这篇单例模式,终于敢和面试官对线了 2019-04-21
华为手机的分类有何区别_动画有哪些分类?又有何区别? 2019-04-21
编程迷宫_跟我学编程第十期——迷宫游戏 2019-04-21
一键生成安卓证书_【带壳截图+电影台词 生成器】 2019-04-21
北斗轨迹记录_北斗定位+智慧4G视频校车行业解决方案 2019-04-21
存放哪些内容 项目中vuex_房屋安全鉴定中房屋抗震检测内容有哪些 2019-04-21
extjs的panel怎么自适应高度_Ext Js自适应高度 2019-04-21
ilm 和dlm差异_Oracle 的信息生命周期管理工具(ILM assistant) 2019-04-21
斥候密报_斥候密报《最强王者》三国幕后巾帼之黄月英_吉吉建站手游网 2019-04-21
python的循环控制结构是什么_7.Python控制和循环结构 2019-04-21
python 死循环插曲变量_FishC03 讲:python小插曲之变量和字符串 2019-04-21
八大排序算法总结 2019-04-21
Java GC、新生代、老年代 2019-04-21