css响应式设计

417 阅读4分钟

css响应式设计

一. 响应式设计的概念

设计一套网页适配不同的屏幕,在不丢弃网页信息的前提下获得最佳的用户体验。如果您使用 HTML和 CSS调整大小,隐藏、缩小、放大或移动内容,以使其在任何屏幕上看起来都很好,则称为响应式 Web 设计。

二. 视口(viewport)

视口是用户在网页上的可见区域。

视口随设备而异,在移动电话上会比在计算机屏幕上更小。

在平板电脑和手机之前,网页仅设计为用于计算机屏幕,并且网页拥有静态设计和固定大小是很常见的。

然后,当我们开始使用平板电脑和手机上网时,固定大小的网页太大了,无法适应视口。为了解决这个问题,这些设备上的浏览器会按比例缩小整个网页以适合屏幕大小。

设置视口

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

width=device-width: 将页面宽度设置为屏幕宽度;

initial-scale=1.0: 浏览器首次加载时,初始化缩放级别为1.0;

maximum-scale: 允许用户缩放的最大比例;

minimum-scale: 允许用户缩放到的最小比例;

user-scalable: 用户是否可以手动缩放;

把内容调整到视口大小

用户习惯在台式机和移动设备上垂直滚动网站,而不是水平滚动!

因此,如果迫使用户水平滚动或缩小以查看整个网页,则会导致不佳的用户体验。

还需要遵循的一些附加规则:

1. 请勿使用较大的固定宽度元素 - 例如,如果图像的宽度大于视口的宽度,则可能导致视口水平滚动。请务必调整此内容以适合视口的宽度。

2. 不要让内容依赖于特定的视口宽度来呈现好的效果 - 由于以 CSS 像素计的屏幕尺寸和宽度在设备之间变化很大,因此内容不应依赖于特定的视口宽度来呈现良好的效果。

3. 使用 CSS 媒体查询为小屏幕和大屏幕应用不同的样式 - 为页面元素设置较大的 CSS 绝对宽度将导致该元素对于较小设备上的视口太宽。而是应该考虑使用相对宽度值,例如 width: 100%。另外,要小心使用较大的绝对定位值,这可能会导致元素滑落到小型设备的视口之外。

三. 网格视图(grid-view)

响应式网格视图通常有 12 列,总宽度为 100%,并且在调整浏览器窗口大小时会收缩和伸展。

构建响应式网格视图

首先添加如下的css样式:

*{box-sizing: border-box} 确保元素的总宽度和高度包含内边距和边框。

其次计算每一列所占的百分比:100% / 12;在每列中指定class,class= "col-"用于定义每列有几个span。

<style>
    .col-1 {width: 8.33%}
    .col-2 {width: 16.66%}
        ...
</style>

四. 媒体查询

媒体查询是 CSS3 中引入的一种 CSS 技术。

仅在满足特定条件时,它才会使用 @media 规则来引用 CSS 属性块。

断点

顾名思义,断点即争对不同设备(屏幕尺寸)的边界值。

典型的设备断点
/* 超小型设备(电话,600px 及以下) */
@media only screen and (max-width: 600px) {...} 
​
/* 小型设备(纵向平板电脑和大型手机,600 像素及以上) */
@media only screen and (min-width: 600px) {...} 
​
/* 中型设备(横向平板电脑,768 像素及以上) */
@media only screen and (min-width: 768px) {...} 
​
/* 大型设备(笔记本电脑/台式机,992px 及以上) */
@media only screen and (min-width: 992px) {...} 
​
/* 超大型设备(大型笔记本电脑和台式机,1200px 及以上) */
@media only screen and (min-width: 1200px) {...}

五. 响应式图像与视频

图像

如果 width 属性设置为百分比,且高度设置为 "auto",则图像将进行响应来放大或缩小

img {
    width: 100%;
    height: auto;
}

如果将 max-width 属性设置为 100%,则图像将按需缩小,但绝不会放大到大于其原始大小

img {
    max-width: 100%;
    height: auto;
}
背景图像
  1. background-size属性设置为"contain",背景图像将缩放, 并尝试匹配内容区域, 保持长宽比
  2. background-size 属性设置为 "100% 100%",则背景图像将拉伸以覆盖整个内容区域
  3. 如果 background-size属性设置为 "cover",则背景图像将缩放以覆盖整个内容区域。请注意,"cover" 值保持长宽比,且可能会裁剪背景图像的某部分
视频

针对视频依旧有widthmax-width属性