首页 > 其他分享 >【响应式】105-响应式网页设计中的 Break Point

【响应式】105-响应式网页设计中的 Break Point

时间:2022-10-13 15:03:51浏览次数:70  
标签:字体大小 Point media Break 响应 480px 宽度 queries 我们

由于移动设备(手机,平板电脑等)的流行,越来越多的网站开始使用响应式设计来设计网站。其核心归结为一句话就是,在不同设备上自动适配不同的内容(如下图所示)。而我们为了让网站样式能够支持响应式设计,其中最关键的因素就是 CSS 中的 media queries,media queries 允许我们定义在不同内容和尺寸的设备上的样式。【响应式】105-响应式网页设计中的 Break Point_safari

最先发布在 https://xeodou.me/2016/12/27/break-point-in-responsive-web-design/

如何使用 Media Queries

上面我们说到 media queries 可以帮助我们定义不同尺寸设备上的内容显示,那么我们只需要在我们现有的样式中增加针对特定内容在特定设备或者尺寸的样式即可,例如:

div.container {  width: 100%;}@media screen only and (min-width: 480px) {  div.container {    width: 40%;  }}

上面的例子中,我们的定义了只在屏幕(screen only)宽度最小值大于 ​​480px​​ 的时候将宽度从 100% 变成 40%,而这个​​480px​​就是我们通常所说的 Break Point 。其中关于更多的 media queries 的属性可以去参考下 Mozilla 的文档。 不过这个时候大家可能会有所疑问,这里的 ​​480px​​ 真的会预期一样么?

【响应式】105-响应式网页设计中的 Break Point_css_02

Break Point 介绍

首先我们要知道,上面的例子中 media queries 针对的是内容的宽度,而通常一个父级元素的宽度是由它包含的子类元素确定的,当然我们也可以制定一个绝对值。当元素的宽度超过屏幕的宽度时我们的内容就会出现水平可滚动的效果,类似下面这种效果:

【响应式】105-响应式网页设计中的 Break Point_chrome_03

同样高度也会出现类似的情况,但是一般从网页交互和用户体验的角度来考虑,我们不会对特定的高度做限定,因为网页的内容是自上而下滚动的,高度可以自由延展。这是可能会想那我定义个 ​​max-width:280px​​ 不就好了嘛。是的,这确实解决了我们的问题,但是随之而来的问题是如果用户改变了他的浏览器的默认字体大小怎么办?在我的上一篇博客中「font-size 的常用长度单位」我介绍了 CSS 中的几种常见单位,其中的单位对于我们做响应式设计中依然至关重要,那具体是怎么表现的呢?

【响应式】105-响应式网页设计中的 Break Point_css_04

CodePen 示例链接:

​http://codepen.io/xeodou/pen/xRNeqo​


在这个例子中当宽度变化时,​​div​​ 标签的背景透明度将发生改变,我们将从不同维度来看break point 的变化:

  • 更改系统字体大小
  • 缩放屏幕大小
  • 不同浏览器


注:我使用的浏览器版本为 Chrome Version 55.0.2883.95 (64-bit) 和 Safari Version 10.0.2 (12602.3.12.0.1)


正常状态
  • Chrome【响应式】105-响应式网页设计中的 Break Point_chrome_05我们可以看到在我拖拽的过程中,随着宽度的缩小三个​​div​​标签的背景颜色同时变化,那是因为在不改变系统字体大小并且指定​​html { font-size: 62.5%; }​​的时候,在 Chrome 下​​480px = 30em = 30rem​​。
  • Safari【响应式】105-响应式网页设计中的 Break Point_css_06我们可以看到其显示的效果和 Chrome 下却有所不同,在宽度小于​​480px=30em​​时红色块和绿色块颜色透明度减小,而当宽度小于​​300px=30rem​​时蓝色块才开始变化。
更改字体大小
  • Chrome

Chrome 下可以通过​​设置​​>​​高级设置​​>​​网页内容​​ 更改字体大小,我们将字体大小从​​Medium​​更改到​​Large​​,这时 Chrome 的页面内容正常情况下​​1rem=20px​​,而当加载​​html { font-size:62.5%; }​​后字体大小变成​​1rem=12.5px​​。【响应式】105-响应式网页设计中的 Break Point_chrome_07我们可以看到其中字体明显变大了,这时候红色色块依然在宽度小于​​480px​​的时候颜色变化,而绿色和蓝色色块都同时在​​30rem=30em=600px​​时候颜色发生变化。

  • Safari

Safari 下通过点开​​视图(View)​​菜单后按住​​Option​​键后点击放大或者缩小页面字体2。这时我们将字体像 Chrome 下一样增加字体大小后​​1rem=19.2px​​,而当加载​​html { font-size:62.5%; }​​后字体大小变成​​1rem=12px​​。【响应式】105-响应式网页设计中的 Break Point_css_08文字大小和 Chrome 下一样都明显被放大了,而这时候红色色块也一样在宽度小于​​480px​​的时候改变了颜色,而绿色色块在宽度小于​​30em=12*1.6*30px=576px​​时候改变了颜色,蓝色块在宽度小于​​30rem=12*30px​​的时候颜色发生变化。

定义 Break Point

从上面的这几个例子我们可以看到,就算在同一个设备不同的浏览器下不同的单位也会有不同的表现,虽然​​px​​在不同的浏览器甚至是不同的设备中的表现都是一样的,但是当用户希望改变页面的展示形式(字体大小)或者在一个不同的设备上时,他所希望的就是他浏览的网页随着这种改变而改变,所以我们不应该选取​​px​​这种非响应式的单位,而且不同浏览器下​​rem​​的定义不一致导致我们很难对最终的宽度很有个预测,因此建议选取​​em​​做为单位。如果我们在使用 SASS这种预编译 CSS 时,我们可以使用类似 sass-mq 这种工具库去方便使用各种 media queries,如:

$mq-breakpoints: (  mobile:  20em,  tablet:  46.24em,  desktop: 61.25em,  wide:    81.25em);@import 'mq';.foo {  @include mq($from: mobile, $until: tablet) {    background: red;  }  @include mq($from: tablet) {    background: green;  }}

参考链接:

  1. ​https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries​
  2. ​https://support.apple.com/en-us/HT207209​

【响应式】105-响应式网页设计中的 Break Point_chrome_09


标签:字体大小,Point,media,Break,响应,480px,宽度,queries,我们
From: https://blog.51cto.com/u_11887782/5753458

相关文章

  • 修改charles,fiddler响应信息
    修改charles响应信息1、tools>maplocal Setings配置请求对应的响应信息mapFrom配置请求信息mapTo 配置响应信息(json)  2、有些请求会有跨域问题,需要修改响......
  • Springboot 之 Filter 实现超大响应 JSON 数据压缩
    简介项目中,请求时发送超大json数据外;响应时也有可能返回超大json数据。上一篇实现了请求数据的gzip压缩。本篇通过filter实现对响应json数据的压缩。先了解一下......
  • 频率响应分析方法
     摘要:大家知道电感的阻抗为什么是\(jwL\)吗?滤波器的截止频率为什么是\(\frac1{2\piRC}\)吗?本文将从复数的概念给大家推导出电感(容)的阻抗公式,并进一步以滤波器为例给大......
  • JMeter响应数据中文乱码问题
    解决方法1.打开JMeter安装目录->bin文件夹->jmeter.properties文件2.编辑文件搜索关键字sampleresult.default.encoding删掉注释符#编码替换为UTF-8......
  • axios 请求拦截器&响应拦截器
    一、拦截器介绍一般在使用axios时,会用到拦截器的功能,一般分为两种:请求拦截器、响应拦截器。请求拦截器在请求发送前进行必要操作处理,例如添加统一cookie、请求体加验......
  • 测试 HTTP 请求和响应的各种信息
    httpbin.org这个网站能测试HTTP请求和响应的各种信息,比如cookie、ip、headers和登录验证等,且支持GET、POST等多种方法,对web开发和测试很有帮助。它用Python+F......
  • nginx配置——根据路由参数来设置对应响应方式
      location/{set$is_matched0;#是否有匹配的参数#正则判断url中携带的参数是否有匹配if($query_string~".*(?:^|\?|&)token=123"){set$is_ma......
  • Java-Day05 while/do-while/多重嵌套例题/break/continue
    学习时间:2022/10/10-2022/10/11一、while循环1.结构:①初始化条件While(②循环条件[布尔类型]){③循环体;④迭代条件;}执行过程:①-②......
  • VMware ESXi 7.0 U3 主机未响应的应急解决方法
    【说明】这是2021年写的文章,是当时vSphere7.0U3刚发布的时候出的问题。现在VMware官网上已经提供的7.0U3C及以后的版本没有这个问题。在此只是将当时的情况记录下来​。......
  • 18、Java——NullPointerException异常的原因和解决办法
    目录 ​​1、NullPointerException异常原因​​​​2、NullPointerException异常解决办法​​1、NullPointerException异常原因        一般空指针的原因就是:当前......