html5怎么制作一个响应式网页?

html-css06

html5怎么制作一个响应式网页?,第1张

HTML5 制作响应式网页,首先需要考虑是全平台适配还是只是移动端适配。这里以移动端响应式网站为例,讲述如何制作响应式网页。

1、选定基本设计尺寸,一般以1080为基准。确定响应式web设计的应用场景之后,和美工(或设计师)沟通,之前,一般需要美工出几套主流移动设备屏幕分辨率的设计图,现在,使用流式布局以及rem等可以使用一套设计图,以最常用的移动设备屏幕分辨率为基准。

2、当美工完成设计图之后,前端工程师的工作就开始了。这时你就可以使用PS或是FW进行切图了。一般说来,Fireworks cs6切图更快,但是Fireworks有时会有图片失真的情况发生,所以,有时需要使用PS进行配合,PS有切片工具可以专门用来切图。

具体代码:

(function (doc, win) {

var docEl = doc.documentElement,

resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',

recalc = function () {

var clientWidth = docEl.clientWidth

if (!clientWidth) return

docEl.style.fontSize = 20 * (clientWidth / 320) + 'px'

}

   响应式网页设计 (英语:Responsive web design,通常缩写为 RWD ),也称为自适应网页设计,这一项网页设计的技术可以使得网站在不同的设备上都有一个合适的呈现,减少了用户进行缩放,移动等操作行为的次数。对前端工程师来说使用响应式布局设计 更易于维护网页。因为移动流量现在占互联网流量的一半以上,响应式布局变得更加的重要。

响应式布局 技术的概念是伴随着CSS3的媒体查询技术的出现而产生的,现在已成为优秀页面布局的标准,是当今主流的设计。其中,Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。本人曾做过网页设计相关的工作深知响应式设计对于提升用户体验的重要性。不少朋友希望学习响应式布局技术却苦于没有办法找到合适的实例,我多年搜集了一套实用的HTML5响应式模板。涵盖各领域,可以直接修改 ,详情请看

举个实现HTML5响应式表格的实例,仅供参考:

HTML结构如下:

<table id="miyazaki">

<caption>The Films of Miyazaki</caption>

<thead>

<tr><th>Film<th>Year<th>Honor

<tbody>

<tr>

<td data-th="Film">My Neighbor Totoro

<td data-th="Year">1988

<td data-th="Honor">Blue Ribbon Award (Special)

<tr>

<td data-th="Film">Princess Mononoke

<td data-th="Year">1997

<td data-th="Honor">Nebula Award (Best Script)

<tr>

<td data-th="Film">Spirited Away

<td data-th="Year">2001

<td data-th="Honor">Academy Award (Best Animated Feature)

<tr>

<td data-th="Film">Howl’s Moving Castle

<td data-th="Year">2004

<td data-th="Honor">Hollywood Film Festival (Animation OTY)

</table>

注意代码中的data属性,每一个单元格的data属性都与表格的header相对应。

CSS样式

表格基本的CSS样式如下:

table#miyazaki caption {

font-size: 2remcolor: #444

margin: 1rem

background-image: url(miyazaki.png), url(miyazaki2.png)

background-size: contain

background-repeat: no-repeat

background-position: center left, center right

}

table#miyazaki {

border-collapse: collapse

font-family: Agenda-Lightfont-weight: 100

background: #333color: #fff

text-rendering: optimizeLegibility

border-radius: 5px

}

table#miyazaki thead th { font-weight: 600}

table#miyazaki thead th, table#miyazaki tbody td {

padding: .8remfont-size: 1.4rem

}

table#miyazaki tbody td {

padding: .8remfont-size: 1.4rem

color: #444background: #eee

}

table#miyazaki tbody tr:not(:last-child) {

border-top: 1px solid #ddd

border-bottom: 1px solid #ddd

}

下面是响应式表格的CSS代码:

@media screen and (max-width: 600px) {

table#miyazaki caption { background-image: none}

table#miyazaki thead { display: none}

table#miyazaki tbody td { display: blockpadding: .6rem}

table#miyazaki tbody tr td:first-child { background: #333color: #fff}

table#miyazaki tbody td:before {

content: attr(data-th)font-weight: bold

display: inline-blockwidth: 6rem

}

}

media query代码中隐藏表格的头部单元,并且将每一个单元格的data-th作为标签显示在单元格内容的前面。每一行的第一个单元格都设置了特别的背景色和前景色,使之更为清晰。

扩展

你现在可以缩放浏览器来看看效果,非常不错。但是上面的代码是不可扩展的:要添加一个新行必须手动为每个单元格添加一个data-th属性。要想做到自动化,可以在服务器端实现,如PHP。也可以通过javascript来实现它。

首先,将整个表格都进行简化:

<table id="miyazaki">

<caption>The Films of Hayao Miyazaki</caption>

<thead>

<tr><th>Film<th>Year<th>Honor

<tbody>

<tr>

<td>My Neighbor Totoro

<td>1988

<td>Blue Ribbon Award (Special)

<tr>

<td>Princess Mononoke

<td>1997

<td>Nebula Award (Best Script)

<tr>

<td>Spirited Away

<td>2001

<td>Academy Award (Best Animated Feature)

<tr>

<td>Howl’s Moving Castle

<td>2004

<td>Hollywood Film Festival (Animation OTY)

</table>

然后在文档的底部添加下面的javascript代码:

<script>

var headertext = []

var headers = document.querySelectorAll("#miyazaki th"),

tablerows = document.querySelectorAll("#miyazaki th"),

tablebody = document.querySelector("#miyazaki tbody")

for(var i = 0i <headers.lengthi++) {

var current = headers[i]

headertext.push( current.textContent.replace( /\r?\n|\r/,"") )

}

for (var i = 0, rowrow = tablebody.rows[i]i++) {

for (var j = 0, colcol = row.cells[j]j++) {

col.setAttribute("data-th", headertext[j])

} }

</script>

上面的代码的意思是:获取每一个<th>中的文本内容,然后分别剔除它们的回车和换行符。然后将这些文本分别添加到适当的单元格的data属性上,添加的规则与CSS样式的规则相一致。(使用setAttribute要比dataset要好,后者只有在IE 11中得到支持。)