响应式网页设计技巧、最佳实践和动态图像缩放技术[关闭]

2024-01-13

我希望这个问题不会因为主题太宽泛而结束,但我想知道响应式/自适应网页设计,即适用于所有浏览器、所有设备的一个网站。

在结构和布局方面,实现此类网站的最佳方法是什么?

我一直在尝试阅读它,因为移动网站现在是一件大事,而且还会持续一段时间,但我找不到提示和指南的列表,我想如果这样的资源可以在这里找到那么我们都可以受益。

另一件令我困惑的事情是动态图像缩放是如何完成的?

在所有事情中,这是最让我困惑的事情,因为我猜测布局可能是使用百分比而不是像素值来完成的,因为像素会因一台设备而异,但图像可能是实现一个网站所有内容的关键因素。

我期待着阅读人们的意见和答案,即使它只是我尚未找到的网络教程的链接。


1. 一个网站所有浏览器。

正如@Tak 提到的,这里的答案是“渐进增强”和“优雅降级”。然而他给出的定义并不完全正确。以下是正确的:

'渐进增强' (see link http://en.wikipedia.org/wiki/Progressive_enhancement)意味着您首先使用 HTML4 和 CSS1 等久经考验的技术为旧浏览器(带/不带 JavaScript 的 IE6/7 是一个很好的起点)编写代码,然后在更现代的浏览器上进行测试时添加增强功能支持 CSS3 和大部分 HTML5 的移动设备上的 Chome 和 Safari。通过这种方式,您的目标是为任何浏览器提供其所支持的功能的最佳组合(顺便说一句,它永远不会是完美的,因此请记住80/20 规则 http://en.wikipedia.org/wiki/Pareto_principle以避免项目进入地面)。

'优雅降级' (see link http://en.wikipedia.org/wiki/Fault-tolerant_system)有点相同,但相反,这是一种更懒惰的做法。您开始针对现代浏览器构建网站,然后应用“补丁”和“修复”,直到其在旧版浏览器上可接受。这最终会产生比从一开始就正确规划更多的工作,并且这种方法通常会发生的情况是开发人员/利益相关者会在某个时候放弃(即,到底是什么?实现这个目标的工作量太大了)在 IE6/7 中工作 - 我只是取消它们的范围)

2. 标准化布局的最佳方式

就我个人而言,我的建议是,如果您想要跨移动和桌面设备的标准布局,我建议您使用大字体(这样它们在很小的移动屏幕中可见)和小字体(这样拥有桌面浏览器的人可以阅读)的组合所有细节)在桌面尺寸 900-1000 像素宽度上。

这个网站就是一个例子:

http://www.valuetrader.net http://www.valuetrader.net

当我在桌面浏览器中打开它时,我会看到很多细节,但是当我在旅途中使用智能手机时,所有关键信息(即我应该购买还是出售股票?)都会以非常大的字体显示,在我的小屏幕上清晰可见。

2014 年更新

问题的这一部分现在实际上已更改为“实施布局的最佳方式是什么?”.

目前(以及过去几年广泛使用的 CSS3 支持)跨设备布局设计的标准方法是使用基于媒体查询 https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries。有许多CSS 框架 http://en.wikipedia.org/wiki/CSS_frameworks可帮助用户开始使用适合移动设备的布局。

“响应式”设计的基本原则是,在移动设备上滚动使垂直空间几乎无限,因此您仅受水平空间的限制。因此,您必须确保随着屏幕变小,您可以让页面流动以填充所有可用的水平空间,并且所有导航栏或水平元素都垂直折叠,以便项目彼此堆叠而不是占用空间水平地。

测试网站“响应能力”的标准方法是拖动浏览器窗口的一侧以减少可用宽度。

更好的方法是使用开发者工具,例如 Chrome 有一个用于切换设备模式的按钮,下面是使用 Stackoverflow 的示例:

用于指定布局的媒体查询示例#site-banner桌面和移动屏幕上的元素如下:

/* DESKTOP SUPPORT */
#site-banner { width: 1000px; background: #fff; margin: 0px auto; height: 120px; }

/* TABLET SUPPORT - rules apply below 1000px width */
@media all and (max-width: 1000px) {
    #site-banner { width: 700px; }
}

/* PHABLET & MOBILE SUPPORT - rules apply below 700px width */
@media all and (max-width: 700px) {
    #site-banner { width: 480px; height: auto; }
}

/* MOBILE SUPPORT - rules apply below 480px width */
@media all and (max-width: 480px) {
    #site-banner { width: auto; height: auto;}
}

3. 动态图像缩放是如何完成的?

移动设备可以为您完成很多工作,因此通常您只需要了解它的工作原理即可。基本上,当第一个移动浏览器问世时,他们必须确保已经适用于桌面浏览器的网站也适用于移动设备(否则没有人会使用智能手机浏览网页),因此他们必须想出检测网站宽度并将其大小调整为可用的屏幕分辨率的巧妙方法。

例如我的网站'www.desalasworks.com http://www.desalasworks.com' 被编码为 900px 宽度,但通过在 320px 小屏幕上缩小(页面上的图像会自动重新采样 http://en.wikipedia.org/wiki/Resampling_%28bitmap%29使用多种方法 - 例如最近邻采样 http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation and 双三次插值 http://en.wikipedia.org/wiki/Bicubic_interpolation,并尽可能将字体替换为原生字体)。就图像采样而言,如果您曾经在智能手机上捏过照片来“放大”和“缩小”,那么您就知道我在说什么。

你通常不需要担心 CSS 来让你的图像正确地重新采样,我注意到有时使用百分比宽度时它们有点有趣,所以坚持使用像素,如果是这样的话,可以让浏览器更容易地知道项目在哪里彼此之间的关系。请注意,您可以专门检测移动浏览器并将网站的宽度设置为 320px,其中的所有内容都相应地排列,但实际上,这对于移动设备上的工作网站来说是不必要的,这样做会迫使您维护 2 个网站,一个移动网站和一个桌面网站(有些公司很乐意这样做)。

4. 百分比/固定宽度。

就我个人而言,我倾向于使用以屏幕为中心的固定宽度(使用 CSS margin: 0px auto),我已经很长一段时间没有使用百分比宽度了,主要是因为标准化布局有点噩梦。如果您确实使用百分比宽度,您基本上必须进行更多测试,因此我倾向于放弃它们。

请记住,这只是我的观点,一些“响应式网络”专家会发誓在几乎所有事情上都使用百分比宽度,我只是不同意为了我认为的边际效益而牺牲布局的可预测性的想法。但我有构建桌面网络应用程序的背景,如果我只专注于移动网络(水平空间非常宝贵,布局往往更简单),我可能会有不同的想法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

响应式网页设计技巧、最佳实践和动态图像缩放技术[关闭] 的相关文章

  • 身体动画不流畅

    下面代码中的 spaceShip 在开始按住任何箭头键时移动并不顺利 它移动一步 冻结一瞬间 然后 平稳 地移动 怎样才能让它从一开始就顺利运转 而不是 冻结 My code
  • 指南针字体输出错误的字体文件路径

    font face font family HelveticaNeueLTStd Lt src url css fonts HelveticaNeueLTStd Lt otf format opentype 这是我的指南针代码的输出 inc
  • 先按行再按列布局 div

    我有一个容器div and 3 div里面如下 div div 1 div div 2 div div 3 div div 不知道每一个的内容div内部 但它们的高度和宽度是可变的 集装箱的高度由最高的决定div inside 我想展示这些
  • jQuery - 如何从 div > p 获取文本

    如何从 div 类中获取主题名称 div class subject img src image eng jpg p English p div div class subject img src image bio jpg p Biolo
  • 获取 FileReader() 的结果对象

    有什么方法可以在不通过函数的情况下获取 FileReader 的结果对象 我在下面制作了示例代码 HTML br br br div div JS var code lorem ipsum input type file change fu
  • 自定义rc-time-picker的样式

    我在用rc time picker我的项目的包 但我在自定义样式时遇到问题pop up of my time picker成分 这是我的组件的屏幕截图 首先 我需要更改时间的背景颜色item在当时li from light grey 在屏幕
  • 我如何能够以两行显示标题,并且每行的字体大小不同?

    我正在使用 Google Chart API 创建时间线图 并希望将图的标题修改为两行 问题 我如何能够显示具有不同字体大小的两线图表标题 电流输出 理想输出 相关研究 我唯一能找到的是有人试图用饼图来做到这一点 但我尝试了但无法使其发挥作
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • @media语法/可能的组合

    我见过其中一些 media print media screen handheld print projection media all media all and property value media screen and prope
  • 为什么我的淘汰单选按钮在另一个具有点击绑定的元素内时会失败?

    我有一个单选按钮列表 我想要点击 li 他们还检查单选按钮 这一切都有效 直到我放了一个name单选元素上的属性 然后我的代码停止工作 我的代码如下所示 ul li li ul li
  • 如何在更大的 div 中垂直和水平居中一个 div?

    如何将一个 水平居中于另一个 中 我设法使用已接受答案中的样式水平居中 我怎样才能让它垂直居中 内部 div 的高度未知 https stackoverflow com questions 114543 how to center div
  • Twitter 卡元标签问题

    有问题的网址 https www halleonard com viewpressreleasedetail action releaseid 10261 https www halleonard com viewpressreleased
  • 最大宽度调整以适应文本?

    不是最好的标题 但无论如何 我有一个元素max width和一些文字 如果文本长度超过一行所能容纳的长度 我会得到以下结果 My text here hello everyone 换句话说 它占据了完整的最大宽度 但由于单词向下移动 右侧有
  • Jquery 数据表列总和

    我只是参考一下这个链接 https datatables net examples advanced init footer callback html了解如何获取 jquery 数据表中的列总计 但我已经完成了一半的项目 我在html页面
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • 页面上使用 HTML Editor Extender 进行回发会导致 IE11 中出现 JavaScript 错误

    我已将 HTML 编辑器扩展程序添加到我正在处理的页面中 现在每当我在页面上发回帖子时 都会收到以下 Javascript 错误 JavaScript 运行时错误 参数无效 之后什么也没有发生 这在 IE10 或更低版本以及我所知道的所有其
  • 图像背景不透明度不影响边框

    如何设置背景不透明度而不影响边框线不透明度 我找到的解决方案没有帮助 div class selected img src assets img image product 1 thumbnail jpg alt product 1 thu
  • CSS3 信封形状

    正如您可能已经猜到的 该图像是邮件信封形状的一部分 如果可能的话 我想使用 CSS3 创建该形状 我已经制作了其他部分 但这个很棘手 该形状需要两侧都有三角形切口和圆角 大概是 border radius bottom left borde
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 在 HTML 下拉列表中有一个滚动条

    我正在寻找一种在 HTML 的下拉列表中添加滚动条的方法 这样如果下拉列表包含的内容超过例如 5 项 将出现滚动条以查看其余项 这是因为我将被迫列出一些大清单 过去几个小时我一直在谷歌上搜索它 但没有运气 它需要适用于 IE8 FF 和 C

随机推荐

  • 如何使用 BouncyCastle 执行 TLS?

    有人知道 BouncyCastle 的 TLS 示例吗 我对互联网上缺少它们感到惊讶 如果确实没有 我们就收集起来作为答案 这是一个非常基本的示例 具有仅服务器身份验证和自签名证书 代码基于 BC 1 49 主要是轻量级 API Serve
  • 在lxml中查找元素结束标记的行号

    在使用 lxml 解析 XML 文档时 我想找到特定标记的起始行号和结束行号 我可以使用以下命令找到起始标签的位置sourceline属性于lxml etree Element 但是我很难找到结束标签的行号 我的尝试的一个简单例子 impo
  • 我是否必须将“通过 Apple 登录”作为第一个选项才能让我的 iOS 应用程序获得批准? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这里是policy https developer apple com app store review guidelines cid siwa
  • php 邮件程序中的stream_socket_enable_crypto()错误

    我使用过 PHP 5 3 并且尝试使用 php mailer LIBRARY 发送邮件 但出现错误 警告 stream socket enable crypto streams crypto 此流不支持 D xampp htdocs mai
  • 如何在打字稿中输入类装饰器?

    编写仅接受特定类的类装饰器的正确方法是什么 我尝试了以下方法 class Component age number function registerComponent name string return
  • React Native 上的背景图像和滚动视图

    我正在使用 React Native 构建一个应用程序 想要实现一个背景图像和一个覆盖在背景图像顶部的滚动视图 就像雅虎天气应用程序一样 但我无法让它发挥作用 请帮忙 要获得这种效果 您需要设置一个绝对定位的图像 然后在 View 顶部放置
  • 如何将 Functor 实例与 Fix 类型一起使用

    假设我想要一个非常通用的ListF数据类型 LANGUAGE GADTs DataKinds data ListF gt gt where Nil List a b Cons a gt b gt List a b 现在我可以使用这种数据类型
  • 仅在shinyapps.io上为特定Shiny应用程序设置不同的区域设置

    我正在使用shinyapps io 托管相当多的Shiny 应用程序 通常 我用德语托管应用程序 现在我想主持one英文应用程序 唯一不起作用的是月份名称的缩写scale x dateggplot 的轴 这些仍然以德语显示 我在 serve
  • Java:序列化期间何时添加 readObjectNoData()?

    我正在阅读连载章节有效的Java 我试图理解书中的下面一段话 如果您实现一个具有可序列化和可扩展的实例字段的类 则您应该注意一个警告 如果类的实例字段初始化为其默认值 整型为零 布尔值为 false 对象引用类型为 null 则该类具有会违
  • 实体框架 6 上下文不检索导航属性

    我发现了许多其他帖子 但他们没有面临完全相同的问题 他们使用的代码略有不同 所以我认为值得回顾一下 我首先使用 EF6 代码 并创建了一个具有一些导航属性的客户端实体 我将仅发布相关代码 考虑还有更多属性和外键 但与问题无关 模型生成正常
  • 无法通过 JQuery 从 Bootstrap DateTimePicker 获取日期对象

    从日期时间选择器框中选择日期时间后 我无法获取日期对象 如何获取 datetime 对象并将其转换为 unix 整数 这是我的 html 代码 div class form group align center div class inpu
  • 使用单个会话在 shell/bash 中递归列出 FTP 目录(使用 cURL 或 ftp)

    我正在编写一个小 shellscript 需要遍历 ftp 服务器上的所有文件夹和文件 递归地 到目前为止 使用 cURL 一切正常 但速度相当慢 因为 cURL 为每个命令启动一个新会话 因此 对于 500 个目录 cURL 执行 500
  • PHP 正则表达式获取 BBCode 标签之间的文本

    我需要有关以下 PHP 代码的帮助 获取给定字符串中每次出现的 BBCode 标记 code 和 code 之间的文本 以便我可以将空格 替换为 nbsp 字符 长话短说 我不能使用 CSS 或 DOM 来执行此操作 我需要在服务器上执行此
  • 私有构造函数和最终构造函数

    为什么将仅具有私有构造函数的类标记为最终类是一个好习惯 我的猜测是 这是为了让其他程序员知道它不能被子类化 人们通常认为 例如 Josh Bloch 和 C 的设计者 将所有内容标记为最终版本是一种良好的做法 除非您有明确的理由不这样做 假
  • React Native MapView:什么是 latitudeDelta longitudeDelta

    在示例中来自反应原生地图视图 https github com react community react native maps blob master README md mapview他们有 latitudeDelta 和 longi
  • 按特定顺序使用 testng 重复测试用例 TestA -> TestNG -> TestS -> TestA -> TestS

    我希望能够按照这一特定顺序执行测试用例 其中每个测试用例都依赖于前一个测试用例 请注意 TestA 和 TestC 将按此顺序再次执行 我怎样才能使用 testng 和 Java 来做到这一点 测试A gt 测试 gt 测试 gt 测试 g
  • 发送特殊字符到串口

    我有一个允许交换消息的应用程序 并且我正在尝试发送带有特殊字符的字符串 string my str isto n o est a funcionar pt comPort1 Write my str 但我收到isto n o est a f
  • 必须相互更新的两个表的触发器替代方案

    很抱歉这篇文章很长 但我想所有信息都是非常必要的 我们有两个表 任务和子任务 每个任务由一个或多个子任务组成 每个对象都有开始日期 结束日期和持续时间 此外 子任务有顺序 Tables create table task pk number
  • 作为静态类的片段

    只是一个简单的问题 在我在android文档中看到的所有示例中 片段都是静态内部类 安卓有这个要求吗 或者可以将它们设置为常规内部类吗 有没有人足够了解 Android 的内部结构来提供答案 根据我在 OCJP 文档中读到的内容 这些静态内
  • 响应式网页设计技巧、最佳实践和动态图像缩放技术[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我希望这个问题不会因为主题太宽泛而结束 但我想知道响应式 自适应网页设计 即适用于所有浏览器 所有设备的一个网站 在结构和布局方面 实现此类网站