响应式网页设计

article/2025/10/9 2:04:27

目录

  • Responsive Web Design响应式网页设计
    • 流体网格(Fluid grid)
    • 弹性图片(Flexible image)
        • srcset和sizes属性
      • SVG
      • background-size
    • CSS3媒体查询(CSS3 media query)和断点
  • meta
  • 渐进增强
    • 过时控制工具Modernizr
      • Modernizr对象
      • 支持一系列CSS类
      • Modernizr.load和yepnope
      • 自定义扩展Modernizr
  • 响应式设计资源
  • 测试与优化
    • 响应式测试

完整的设计各部分抽离出来,并将之转换成移动网页的标签。
用百分比技术建立布局、实现响应式图片
移动优先:开始的时候画布很小,将会在网站变宽时重获控制,而不是在网站收缩时失去控制。

补充其他:
静态布局固定宽度布局
布局的大小不会随着用户调节浏览器窗口大小而变化
在传统PC端一般采用960px,可以被所有现代浏览器适配且能被主流屏幕宽度比例整除,移动端采用320px

Responsive Web Design响应式网页设计

单个URL实现所有入站链接打开的网页
RWD 有三大组件
流体网格(Fluid grid)
用于网页上排版网格的适配。这种技术利用了 CSS 的相对大小来保证网格及其内容在上下文里的显示保持合适的比例。e.g:Bootstrap移动设备优选的流式栅栏格系统。

栅栏系统实现响应式布局
是从桌面浏览器时代流传下来的响应式布局,主流的CSS框架诸如Blueprint、Bootstrap内置了栅栏系统

弹性图片(Flexible image)
包括使用 CSS 的 max-width 属性来让图片和其他媒体在其父元素里渲染,以及其他相关的用于避免定点样式的技巧,大小固定的样式会导致无法适配所有显示设备。
图片:包含以图片为代表的图形或者媒体元素。
CSS3媒体查询(CSS3 media query)和断点
根据页面渲染环境的物理特征使用特定的显示单位。

流体网格(Fluid grid)

Bootstrap和Foundation这两个框架都包含了独有的网格系统
– Bootstrap(https://github.com/twbs/bootstrap)
– Foundation(https://github.com/zurb/foundation)

Foundation包括:
响应式网格布局
包括slider、tab在内的导航元素
表单和按钮
用于modal pop-up和tooltip的jQuery插件

弹性图片(Flexible image)

figure{width:100%;
}figure img{width:100%;max-width: 1000px;/*不超过图片原大小,不失真*/height:auto;
/*保持居中*/display: block;margin: 0 auto;
}

srcset和sizes属性

srcset
允许开发人员指定一个图像源选项列表,供浏览器选择
属性格式:图片地址 宽度描述w 像素密度描述x,多个资源之间用逗号分隔。

<img src="defalut/xx.jpg" srcset="img-URL/XX.jpg 2x,img-URL/XX.jpg 3x">

x描述符告诉浏览器只根据屏幕分辨率选择
w描述符

SVG

SVG是一种基于XML的图像格式,可以用Illustrator、PS来创建和编辑(查看浏览器是否支持)

 <object type="image/svg+xml" width="400" height="400" style="float:right" data="images/star.svg">

background-size

css3属性
在移动端使用的地方很多,最常见应用于响应性布局

  • length 设置背景图片高度和宽度。第一个值设置宽度,第二个值设置的高度。如果只给出一个值,第二个是设置为 auto(自动)
  • percentage 将计算相对于背景定位区域的百分比。第一个值设置宽度,第二个值设置的高度。如果只给出一个值,第二个是设置为"auto(自动)"
  • cover 此时会保持图像的纵横比并将图像缩放成将完全覆盖背景定位区域的最小大小。(局部)
  • contain 此时会保持图像的纵横比并将图像缩放成将适合背景定位区域的最大大小。(全部)

CSS3媒体查询(CSS3 media query)和断点

注意
1.将不需要根据媒体查询变化的属性放到查询之外,减少冗余
2.设置好需要的断点

媒体查询的类型
数字屏幕screen
打印页面print
所有类型all

@media screen{p{color:ReadableStream;}
}
//方法二,通过一个HTTP请求
<link rel="stylesheet" type="text/css" media="screen" href="xx.css">

此外还可根据设备给服务器发送的信息包括用户代理、设备屏幕分辨率、窗口大小、设备方向、显色指数color index提供不同的CSS规则

需要浏览器检查的表达式
max-width、orientation

@media (max-width:600px){p{color:ReadableStream;}
}
@media (pointer:coarse){}

粗糙指针:e.g触摸屏coarse
精准指针:e.g鼠标precise

多条件关系
用,分割条件代表“或”
not非
and与

meta

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

可以控制视窗口宽度的大小。
实际的具体像素 width= 600 或为特殊设备设置宽度值:
width:可设定数值,或者指定为 device-width
height:可设定数值,或者指定為 device-height
initial-scale:第一次进入页面的初始比例
minimum-scale:允许缩小最小比例
maximum-scale:允许放大最大比例
user-scalable:允许使用者缩放,1 or 0 (yes or no)

渐进增强

简单网站=>先进网站的技术

过时控制工具Modernizr

开源的 JavaScript 库,Modernizr 检测浏览器对 CSS3 或 HTML5 功能支持情况。
要在页面头部加载,并在页面加载时候运行,会在渲染页面时候提供控制

会阻碍页面渲染,因为需要在渲染之前添加HTML类,所以需要慎重。尤其像使用Backbone这样的js库时候很明显。

Modernizr对象

  • 会创建一个Modernizr对象,对象中有所有运行着的测试的Boolean值。
<script>for(const a in Modernizr)console.log(a);</script>

输出:
在这里插入图片描述

支持一系列CSS类

  • 提供了一系列html标签的类,e.g.svg\no-svg、用这些类去适应不同情况
<!doctype html>
<html lang="en"><head><meta charset="utf-8"><script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script><style type="text/css">.yes{color:green;}.no{color:red;}.svg-wrapper .no{display:none;}.no-svg .yes{display:none;}</style></head><body><div class="svg-wrapper"><span class="yes">Huzzah!  You have SVG support.</span><span class="no">BOO!  You don't have SVG support.</span></div></body>
</html>

Modernizr.load和yepnope

基于 YepNope.js ,Modernizr.load()根据一些条件判断来动态选择加载CSS和JavaScript,这无疑对避免不必要的资源加载有极大的帮助。

Modernizr.load(test: Modernizr.webgl,yep : 'three.js',nope: ['jebgl.js' ,'xx.js','xx.css']
);

自定义扩展Modernizr

Modernizr.addTest('className',function(){//检测的逻辑代码,需要返回布尔值
});

Modernizr 并非试图添加老版本浏览器不支持的功能,而是令你通过创建可选风格配置修改页面设计。 它也可以通过加载定制的脚本来模拟老版本浏览器不支持的功能。

响应式设计资源

– Modernizr(https://github.com/Modernizr/Modernizr)
– Normalize CSS(https://github.com/necolas/normalize.css) • 起始项目

– HTML5 Boilerplate(https://github.com/h5bp/html5-boilerplate) • JavaScript 库
– jQuery(https://github.com/jquery/jquery)
– Backbone(https://github.com/documentcloud/backbone)

– Angular(https://github.com/angular/angular.js)
– Underscore(https://github.com/jashkenas/underscore)
– Ember(https://github.com/emberjs/ember.js)
– jQuery UI(https://github.com/jquery/jquery-ui)
– Knockout(https://github.com/knockout/knockout)

– Bootstrap(https://github.com/twbs/bootstrap)
– Foundation(https://github.com/zurb/foundation)

测试与优化

响应式意味着需要给网站添加一些额外的内容来支持响应式,如何在不影响网络加载时间的前提下添加响应式?

响应式测试

模拟测试环境
Mac和Window上有很多程序模拟window、Android环境
但是由于apple的软件体系,它必须在自己的硬件环境之下模拟
所以OS X是最受欢迎的开发环境

Parallels Desktop 被称为 macOS 上最强大的虚拟机软件

使用web审查器
降低请求时间的技巧

  • 减少HTTP请求:最小化JavaScript文件和css文件
  • 减少图片请求:使用Base64编码
  • 使用CDN

http://chatgpt.dhexx.cn/article/ScPCcqDE.shtml

相关文章

css 与 html5

折叠隐藏文字 快捷键&#xff1a;span*6&#xff0c;然后敲一个tap键&#xff0c;会生成6个span标签写业务style之前&#xff0c;需要先清除style的内置样式也就是在style里面写上* {margin: 0;padding: 0;}注意body的height:100vh;不要写100%弹性盒子能使子元素垂直居中的条件…

前端Vue书籍翻页功能利用turn.js来完成以及知识点(源码)

目录 下载文档开始构造方法可配置项 方法语法 事件两种方式添加事件 自动翻页loading加载功能 案例CSSbasic.css源码如下 JS里面代码太多了,直接官网下载index.html源码如下 最终效果如下 下载 下载完里面有源码,好几种翻页效果,很不错~ 官网 文档 接口文档 开始 构造方法 …

html局部翻页效果,基于Turn.js 实现翻书效果实例解析

最近项目经理我个项目练练手,其项目需求是要实现翻书效果,看到这个需求后,我真是懵了,这咋整,我可是java出身的啊,这个问题真是难住我了,后来有同事的指导,之前他曾经做过PC版的翻书效果,当时使用的是Turn.js ,查过其相关API后,整个人突然豁然开朗呀,使用Turn.js 完…

用Modernizr和Yepnope进行递归增强

Alex Sexton的yepnope.js脚本加载程序的1.0版已于上周发布&#xff0c;因此我认为这是一个向您展示如何将Yepnope与Modernizr结合使用HTML5功能而又不招致最新用户下载的绝佳时机。 -划痕的浏览器。 什么是回归增强&#xff1f; 您可能已经熟悉渐进增强的概念&#xff1a;设计…

modernizr_使用Modernizr和Yepnope进行递归增强

modernizr Alex Sexton的yepnope.js脚本加载程序的1.0版已于上周发布&#xff0c;因此我认为这是向您展示如何将Yepnope与Modernizr结合起来以利用HTML5功能而又不招致最新用户的最佳时机。 -划痕的浏览器。 什么是回归增强&#xff1f; 您可能已经熟悉渐进增强的概念&#x…

Modernizr YepNope Tips

<style> <!-- p {text-indent:2em; line-height:24px; font-size:14px} h1, img {margin:0.6em 0} --> </style> 本文由前端开发whqet翻译自WDL&#xff0c;Rochester Oliveira2013年5月2日写的文章Modernizr & YepNope Tips。 每天都有新的更好的浏览…

教你如何申请注册微软邮箱【快速接收发送国外邮件】

如果要收发国内的邮件。网易和QQ不错的选择&#xff0c;如果接受国外邮件&#xff0c;还是国际性的公司&#xff0c;微软的outlook据说用户体验感比较好&#xff0c;先申请着&#xff0c;以备不时之需&#xff01; 申请地址&#xff1a;https://outlook.live.com/owa/ 点击创…

OutLook 2010 设置MSN邮箱

OutLook 2010 设置MSN邮箱 1、选择电子邮件账户&#xff0c;点击下一步 2、选择手动配置服务器设置或其他服务器类型(M)&#xff0c;点击下一步 3、选择Internet电子邮件(I)&#xff0c;点击下一步 4、按照提示&#xff0c;输入姓名&#xff0c;邮件地址&#xff0c;在服务…

如何申请@MSN.Com后缀的邮箱?

最近辞职在家无事,想申请个MSN.Com后缀的信箱,在网上搜索了一下,原来只要从下面的地址进入注册即可!注册抵制: https://accountservices.passport.net/reg.srf?nsmsn.com&sl1&lc2052 一口气申请了2个&#xff0c;哈哈! 您已经创建了一个 MSN 帐户 您现在可以使用电…

便捷注册live、MSN邮箱

live邮箱和msn邮箱现在已经不开放注册&#xff0c;而这两个邮箱还有些简短的很不错的用户名可用&#xff0c;方便记忆。网上有一些使用火狐浏览器和工具进行注册的办法&#xff0c;感觉过于繁琐&#xff0c;之后看到一个便捷的方式&#xff0c;亲测有效&#xff0c;分享给大家。…

阿里达摩院证实叶杰平、薄列峰入职,网易科技数字化产业周报来了

NEW 关注Tech逆向思维视频号 最新视频→【国家云强势来袭&#xff01;云计算市场要变天&#xff1f;】 阿里达摩院证实叶杰平、薄列峰入职&#xff0c; 每周一期数字化产业周报&#xff0c; 记录行业大事记、投融资动态和最新人事变动。 RECOMMEND “ 网易智能有12个不同垂直领…

上海创蓝253董事长_宝剑锋从磨砺出,创蓝253召开第四季度誓师大会

2018 年 10 月 13 日&#xff0c;创蓝 253 业务中心全体成员齐聚一堂&#xff0c;举办第三季度表彰大会暨第四季度誓师大会。大会的主题一是表彰业务中心第三季度优秀员工与优秀团队;二是制定第四季度目标&#xff0c;为冲刺全年目标做准备。 此次誓师大会上&#xff0c;创蓝 2…

罗剑锋透视HTTP协议学习笔记---31 | 时代之风(下):HTTP/2内核剖析

31 | 时代之风&#xff08;下&#xff09;&#xff1a;HTTP/2内核剖析 连接前言 连接前言 connection preface PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n在wireshark里称为magic&#xff0c;是一个纯HTTP/1消息&#xff0c;意思是以后的消息切换到HTTP/2 本来h2在ALPN或h2c的connec…

架构师成长之路:如何做基础框架设计?架构师落地的核心能力

前面&#xff0c;已经统一了对框架的认识。 接下来看看如何做基础框架设计&#xff0c;聊聊要做些什么、以及如何做基础框架设计&#xff1b;然后再看看使用基础框架功能的基本方式。 一&#xff1a;基础框架要实现的功能的来源 1&#xff1a;持续积累的通用功能、公共功能 …

浙江省CIO峰会|数据安全+数字化转型,美创特色实践获“年度数字化赋能服务商”

近日&#xff0c;浙江省CIO年度峰会暨数实融合创新发展大会在杭州成功举办。美创科技受邀参加本次峰会&#xff0c;与全省数字化领袖人才共话数字化发展。 对话数字化转型 美创分享能力实践 在本次峰会以“数字化转型的昨天 今天 明天”为主题的论坛对话环节&#xff0c;美创科…

数字化转型导师坚鹏:企业数字化营销能力提升

企业数字化营销能力提升 课程背景&#xff1a; 很多企业存在以下问题&#xff1a; 不清楚数字化营销对企业发展有什么影响&#xff1f; 不知道如何提升企业数字化营销能力&#xff1f; 不知道企业如何开展数字化营销工作&#xff1f; 课程特色&#xff1a; 原创企业数…

构建数据中台建设之路

阿里巴巴数据中台是阿里云上实现数据智能的最佳实践&#xff0c;它是由数据中台方法论组织工具所组成&#xff0c;数据中台方法论采用实现企业数据的全局规划设计&#xff0c;通过前期的设计形成统一的数据标准、计算口径&#xff0c;统一保障数据质量&#xff0c;面向数据分析…

罗剑锋透视HTTP协议学习笔记---25 | 固若金汤的根本(下):数字签名与证书

25 | 固若金汤的根本&#xff08;下&#xff09;&#xff1a;数字签名与证书 黑客虽然拿不到会话密钥&#xff0c;无法破解密文&#xff0c;但可以通过窃听收集到足够多的密文&#xff0c;再尝试着修改、重组后发给网站。因为没有完整性保证&#xff0c;服务器只能“照单全收”…

浦发银行长沙分行党委书记、行长王起,华融湘江银行行长蒋俊文一行莅临麒麟信安调研考察

8月4日下午&#xff0c;浦发银行长沙分行党委书记、行长王起&#xff0c;华融湘江银行行长蒋俊文一行莅临麒麟信安调研考察并开展座谈&#xff0c;旨在进一步加强在金融IT业务领域的交流合作。麒麟信安董事长杨涛、副总裁颜跃进热情接待。 浦发银行及华融湘江银行领导一行来到…

14.十面埋伏的并发:多线程真的很难吗罗剑锋的C++实战笔记

14.十面埋伏的并发&#xff1a;多线程真的很难吗 并发与多线程 并发有很多实现方式,而多线程只是其中最常用的手段 认识多线程 在C中,线程就是一个能够独立运行的函数.你可以写一个lambda表达式让它在多线程中跑起来 auto f // 定义一个lambda表达式 { cout << "t…