HTML5自适应布局技术独步天下的今天,table是一个不鼓励使用的HTML标记,但现实工作中,我们避免不了的偶尔会用到它。那么,怎样让一个传统的表格也表现出自适应性呢?
网上有很多种解决方案,最常见的是配合JavaScript。css-tricks里给出了一个用纯CSS实现的,但它需要将一些业务数据写在CSS里。而本文在这里将提到的一种方法也是用纯CSS实现表格的自适应布局,而且CSS只负责表现,不牵涉业务逻辑和数据。
例如:
借助伪元素和自定义属性
我们将借助伪元素 :before 和 :after 的力量。通常, 它们用显示图标类的内容,比如一个箭头,提示,或文字图案(icon)。它的另外一个神奇的功能是元素属性值显示到HTML内容里,content: attr(data-label),放在before/after伪元素类里。沿着这个思路,我们就能够让table在PC端表现成网格效果,而在小屏的手机端表现成流式布局。
我们暂以600px为小屏幕大屏幕的分界点,下面的CSS使用媒体查询语句,在小于600px宽的屏幕上,用CSS将td上的属性值取出来,放到内容区显示。
@media screen and (max-width: 600px) {table td:before {content: attr(data-label);float: left;text-transform: uppercase;font-weight: bold;}}
在大屏幕上的显示效果是这样:
而到了手机设备上,变成了这样:
说明:本篇《自适应布局中table元素的自适应性》的内容采自互联网,如有侵权,请联系我们删除!
、 利用meta标签
Meta标签主要用来描述一个HTML网页文档的属性,如作者、日期时间、网页描述、关键词、页面刷新等,它的Description和Keywords属性,可加入网站的关键字,让网页利于搜索引擎。
<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
解释:Viewport指用户网页的可视区域,content中的“width”指的是虚拟窗口宽度,上面代码意为虚拟窗口/页面宽度初始比例为1,最小比例为1,最大比例为1,用户不可扩展,页面不可缩放。
以上标签只支持一种尺寸,正确的做法是用js动态生成下面标签,前提是要先获取屏幕尺寸。
<script type="text/javascript">
var phoneWidth=parseInt(window.screen.width);
var phoneScale=phoneWidth/640;
var ua=navigator.userAgent;
if (/Android (d+.d+)/.test(ua)){var version=parseFloat(RegExp.);
if(version>2.3){ document.write(‘<meta name="viewport" content="width=640, minimum-scale=‘+phoneScale+‘, maximum-scale=‘+phoneScale+‘, target-densitydpi=device-dpi">‘); }
else{document.write(‘<meta name="viewport" content="width=640, target-densitydpi=device-dpi">‘); }
else { document.write(‘<meta name="viewport" content="width=640, user-scalable=no, target-densitydpi=device-dpi">‘); }
</script>
2、百分比法
CSS中的百分比中指的是相对于父元素的宽度。子元素的padding-left:50%,父元素的宽度是百,子元素的margin-top:20%,那么父元素的高是百。body默认宽度是屏幕宽度(PC中指的是浏览器宽度)子孙元素按百分比定位(或指定尺寸)就可以了。但这只适合布局简单的页面,复杂的页面实现很困难。
3、 使用CSS3单位rem
在页面载入开始时首先判断window的宽度(是window的宽度($(window).width()),不是屏幕分辩率的宽度(screen.width),两者差别请自行查阅),假设宽度为W,一个div在宽度为640px的设计稿的下的宽度为dW1,如果html的font-size为100px,那么这个div的宽度用rem表示是多少呢?
计算:div宽度dW2=dW1/100,px与rem之间换算除以100就可以,这是假定屏幕宽度为640的,而不同宽度的屏幕怎么处理,为了能保证换算容易那就要为html设置一个合适的font-size,计算:100 / 640=fontSize / W, fontSize=W / 640 * 100=W / 6.4。大多数浏览器font-size的最小值为12px,所以只能用100作为缩放比例。
所以会在头部加上这个JS代码:
<script type="text/javascript">
var html=document.querySelector(‘html‘);
var rem=html.offsetWidth / 6.4;
html.style.fontSize=rem + "px";
</script>
4、 媒体查询
媒体查询正是为解决网页适应手机屏幕。媒体查询的功能就是为不同的“媒体”设置不同的css样式,页面尺寸,设备屏幕尺寸等,比如我们要为宽度小于480px的页面中的class="icon"的元素设置样式,可以这样写,@media screen and (max-width=480px) {.icon{ some styles }};具体可自行研究。
以上几种方法,仅供大家参考。如有不妥,欢迎指正。制作自适应页面需要比较好的编程基础和技术觉悟,一般的小白,不建议大家为了做自适应网页专门学习HTML5、CSS3和JS,毕竟这并非一朝一夕就能学会的。如果技术小白想做自适应网页,这里给大家提供一种思路,用建站宝盒。完全不需要编程基础,全程拖拽,一样能做出让人惊艳的自适应网站。现在还有免费建站活动,无论外行内行,大家可以注册体验一下。
零基础免费做HTML5自适应网站:http://www.iisp.com/design/free-site.php?s=yuqiuping
eb前端开发面试题,前端面体及答案2020
(1) 响应式布局 (2) 100%布局(弹性布局) (3) 等比缩放布局(rem)
(1) 将前端输出数据都进行转义 (2) 将输出的字符串中的\反斜杠进行转义 (3) 从url中获取的信息,防治方法是由后端获取,在前端转义后再行输出 (4) 使用cookie的HttpOnly属性,保护好cookie
增强WebView : 原生WebView基本是PC平台浏览器内核的移植,但对于移动场景并不完全适合,各种硬件API得不到HTML5原生支持。因此对于WebView的种种Hack、增强应运而生,甚至出现了基于增强WebView提供第三方服务的。
路由: 应用内跳转由于加入了 WebView而变得复杂起来,同时由于组件化、模块化带来的问 题,路由也成为人们讨论的重点。
缓存: 移动网络条件差,为了用户体验,必须要做资源缓存和预加载。
通信: 即HTML5和Native之间的通信。利用系统提供的桥接API可以实现,不过在应用上还 有着一些坑点和安全问题。
IIO 密集而非计算密集的情景;高并发微数据(比如账号系统)的情景。特别是高并发,Node.js 的性能随并发数量的提高而衰减的现象相比其他 server 都有很明显的优势。
Bad Use Cases 1.CPU heavy apps (高CPU消耗的app) 2.Simple CRUD / HTML apps (简单的CRUD / HTML apps) 3.NoSQL + Node.js + Buzzword Bullshit (NoSQL + Node.js + 各种时髦词汇)
Good Use Cases 1.JSON API 2.Single page apps (单页面app) 3.Shelling out to unix tools (对unix工具的脚本化调用) 4.Streaming data (流数据) 5.Soft Realtime Applications (软件实时程序)
以上就是酷仔今天整理提供的Web前端开发面试题,希望为Web前端同学提供了有用的面试素材,以后酷仔每日均会提供Python及Web相关的习题。
特殊说明:以上资料由开课吧提供!
*请认真填写需求信息,我们会在24小时内与您取得联系。