我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何通过CSS3 Media Query实现响应式Web设计

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何通过CSS3 Media Query实现响应式Web设计

今天就跟大家聊聊有关如何通过CSS3 Media Query实现响应式Web设计,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

我们将从前文介绍过的“弹性布局结构”这方面出发,通过一个具体的实例来深入学习。

如今的屏幕分辨率,小至320px(iPhone),大到2560px甚至更高(大显示器),变化范围极大。除了使用传统的台式机,用户会越来越多的通过手机、上网本、iPad一类的平板设备来浏览页面。这种情况下,固定宽度的设计方案将会显得越发不合理。页面需要有更好的适应性,其布局结构要做到根据不同的设备及屏幕分辨率进行响应调整。接下来,我们将了解一下怎样通过HTML5和CSS3 Media Queries(媒介查询)相关技术来实现跨设备跨浏览器的响应式Web设计方案。

范例效果预览

首先,我们来看看本篇范例的最终效果演示。打开该页面,拖拽浏览器边框,将窗口慢慢缩小,同时观察页面结构及元素布局是怎样基于宽度变化而自动响应调整的。

如何通过CSS3 Media Query实现响应式Web设计

更多范例

我(原文作者)使用media query的方式设计了一些WordPress模板,比如Tisa、Elemin、Suco、iTheme2、Funki、Minblr和Wumblr等。

概述

我们将范例页面的父级容器宽度设置为固定的980px,对于桌面浏览环境,该宽度适用于任何宽于1024像素的分辨率。我们通过media query来监测那些宽度小于980px的设备分辨率,并将页面的宽度设置由“固定”方式改为“液态”,布局元素的宽度随着浏览器窗口的尺寸变化进行调整。当可视部分的宽度进一步减小到650px以下时,主要内容部分的容器宽度会增大至全屏,而侧边栏将被置于主内容部分的下方,整个页面变为单栏布局。

如何通过CSS3 Media Query实现响应式Web设计

HTML代码

我们将把注意力集中在页面的主要布局方面,并使用HTML5标签来更加语义化的实现这些结构,包括页头、主要内容部分、侧边栏和页脚:

<div id="pagewrap">        <header id="header">         <hgroup>             <h2 id="site-logo">Demo</h2>             <h3 id="site-description">Site Description</h3>         </hgroup>         <nav>             <ul id="main-nav">                 <li><a href="#">Home</a></li>             </ul>         </nav>         <form id="searchform">             <input type="search">         </form>     </header>            <div id="content">         <article class="post">             blog post          </article>     </div>            <aside id="sidebar">         <section class="widget">              widget          </section>     </aside>        <footer id="footer">         footer      </footer>        </div>

HTML5

IE是永恒的话题;对于我们使用的HTML5标签,IE9之前的版本无法提供支持。目前的***解决方案仍是通过html5.js来帮助这些旧版本的IE浏览器创建HTML5元素节点。在我们的页面HTML代码中调用该JS文件:

<!--[if lt IE 9]>     <script class="lazy" data-src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]-->

CSS

HTML5块级元素样式

首先仍是浏览器兼容问题。虽然我们已经可以在低版本的IE中创建HTML5元素节点,但还是需要在样式方面做些工作,将这些“新”元素声明为块级:

article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {       display: block;  }

主要结构的CSS

忽略细节,我们仍是将注意力集中在大问题上。正如在前文“概述”中提到的,默认情况下页面容器的固定宽度为980像素,页头部分(header)的固定高度为160像素;主要内容部分(content)的宽度为600像素,左浮动;侧边栏(sidebar)右浮动,宽度为280像素。

#pagewrap {      width: 980px;      margin: 0 auto;  }     #header {      height: 160px;  }     #content {      width: 600px;      float: left;  }     #sidebar {      width: 280px;      float: right;  }     #footer {      clear: both;  }

截至目前的效果演示

目前我们只是初步完成了页面结构的HTML和默认结构样式,当然,并不包括那些与话题无关的细节实现问题。正如可以在目前的演示中看到的,由于还没有做任何media query方面的工作,页面还不能随着浏览器尺寸的变化而改变布局。

CSS3 Media Query

终于开始说正事儿了。首先我们需要在页面中调用css3-mediaqueries.js文件,来帮助IE8或是之前的版本支持CSS3 media queries:

<!--[if lt IE 9]>     <script class="lazy" data-src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> <![endif]-->

接下来,我们要创建CSS样式表,并在页面中调用:

<link href="media-queries.css" rel="stylesheet" type="text/css">

当浏览器可视部分宽度大于650px小于980px时(液态布局)

◆ 将pagewrap的宽度设置为95%

◆ 将content的宽度设置为60%

◆ 将sidebar的宽度设置为30%

@media screen and (max-width: 980px) {         #pagewrap {          width: 95%;      }         #content {          width: 60%;          padding: 3% 4%;      }         #sidebar {          width: 30%;      }      #sidebar .widget {          padding: 8% 7%;          margin-bottom: 10px;      }     }

当浏览器可视部分宽度小于650px时(单栏布局)

◆ 将header的高度设置为auto

◆ 将searchform绝对定位在top 5px的位置

◆ 将main-nav、site-logo、site-description的定位设置为static

◆ 将content的宽度设置为auto(主要内容部分的宽度将扩展至满屏),并取消float设置

◆ 将sidebar的宽度设置为100%,并取消float设置

@media screen and (max-width: 650px) {         #header {          height: auto;      }         #searchform {          position: absolute;          top: 5px;          right: 0;      }         #main-nav {          position: static;      }         #site-logo {          margin: 15px 100px 5px 0;          position: static;      }         #site-description {          margin: 0 0 15px;          position: static;      }         #content {          width: auto;          float: none;          margin: 20px 0;      }         #sidebar {          width: 100%;          float: none;          margin: 0;      }     }

当浏览器可视部分宽度小于480px时

480px也就是iPhone横屏时的宽度。当可视部分的宽度小于该数值时,我们需要做以下调整:

◆ 禁用html节点的字号自动调整。默认情况下,iPhone会将过小的字号放大,我们可以通过-webkit-text-size-adjust属性进行调整。

◆ 将main-nav中的字号设置为90%

弹性图片

我们需要为图片设置max-width: 100%和height: auto,来实现其弹性化。对于IE,仍然需要一点额外的工作:

img {      max-width: 100%;      height: auto;      width: auto\9;   }

弹性内嵌视频

同样的,对于视频,我们也需要做max-width: 100%的设置;但是Safari对embed的该属性支持不是很给力,所以我们以width: 100%来代替:

.video embed,  .video object,  .video iframe {      width: 100%;      height: auto;  }

iPhone中的初始化缩放

默认情况下,iPhone中的Safari浏览器会对页面进行自动缩放,以适应屏幕尺寸。我们可以使用以下的meta设置,将设备的默认宽度作为页面在Safari的可视部分宽度,并禁止初始化缩放。

<meta name="viewport" content="width=device-width; initial-scale=1.0">

最终效果演示

该范例的最终演示正像我们在本文开始时看到的那样;另外记得,在条件允许的情况下,使用各种典型移动设备(iPhone、iPad、Android、Blackberry等)来检验页面的移动版本。

如何通过CSS3 Media Query实现响应式Web设计

要点总结

Media Query JavaScript

对于那些尚不支持media query的浏览器,我们要在页面中调用css3-mediaqueries.js

<!--[if lt IE 9]>     <script class="lazy" data-src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> <![endif]-->

CSS Media Queries

实现自适应页面设计的关键之一,就是使用CSS根据分辨率宽度的变化来调整页面布局结构。

@media screen and (max-width: 560px) {         #content {          width: auto;          float: none;      }         #sidebar {          width: 100%;          float: none;      }     }

弹性图片

通过max-width: 100%和height: auto实现图片的弹性化。

img {      max-width: 100%;      height: auto;      width: auto\9;   }

弹性内嵌元素(视频)

通过width: 100%和height: auto实现内嵌元素的弹性化。

.video embed,  .video object,  .video iframe {      width: 100%;      height: auto;  }

字号自动调整的问题

通过-webkit-text-size-adjust:none禁用iPhone中Safari的字号自动调整

html {      -webkit-text-size-adjust: none;  }

页面宽度缩放的问题

<meta name="viewport" content="width=device-width; initial-scale=1.0">

看完上述内容,你们对如何通过CSS3 Media Query实现响应式Web设计有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何通过CSS3 Media Query实现响应式Web设计

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何让IE支持CSS3 Media Query实现响应式Web设计

这篇文章将为大家详细讲解有关如何让IE支持CSS3 Media Query实现响应式Web设计,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如今的屏幕分辨率,小至320px(iPhone),大到2560p
2023-06-08

如何通过CSS实现响应式图像的自适应大小

在现代的Web设计中,响应式设计已经成为了必不可少的一部分。在不同的设备和屏幕尺寸上能够自动调整和适应的网页布局和元素显得尤为重要。而在响应式设计中,图像的自适应大小同样是一个重要的考虑因素。本文将介绍如何通过CSS来实现图像的自适应大小,
2023-10-21

如何通过Css Flex 弹性布局实现响应式导航栏

在现代网页设计中,响应式布局是非常重要的一个概念。在设计网站导航栏时,我们希望能够在不同设备上都能够良好地展示导航菜单,以提供更好的用户体验。而 CSS Flex 弹性布局正是一种非常适合用来实现响应式导航栏的技术。本文将介绍如何通过 CS
2023-10-21

如何通过Css Flex 弹性布局实现响应式表格布局

在前端开发中,响应式布局是一个非常重要的概念。随着移动设备的普及,网页需要适应不同的屏幕尺寸,以提供更好的用户体验。而表格是网页中常用的布局方式之一。在本文中,我们将介绍如何利用CSS Flex弹性布局实现响应式表格布局。CSS Flex弹
2023-10-21

如何使用php函数来优化响应式设计的实现?

随着移动设备的普及,响应式设计已成为网页开发的重要技术之一。在实现响应式设计时,使用 PHP 函数可以帮助我们更好地处理不同设备的请求,提升用户体验和网页性能。本文将介绍如何使用 PHP 函数来优化响应式设计的实现,并提供具体的代码示例。检
2023-10-21

编程热搜

目录