一套适用于手机、iPad 和 PC 的代码。每次加载不同的样式时,它们都能在一个项目中兼容。这就是所谓的响应性。然后,我希望产品经理能多考虑一下。我不想做了设计工作,最后却说它不好看,因为我不会做设计。
自适应是一套代码,无论屏幕尺寸如何变化,改变的只是页面的元素尺寸,而不会出现三栏变两栏的表格变化。以前,领导和设计总让我修改页面,说是自适应窗口的变化。结果要求把三栏改成两栏。为什么要把这个按钮隐藏起来,那个按钮改成外观,怎么改呢?难道不需要设计一张图片吗?我是不是在幻想?
智能手机屏幕尺寸和分辨率列表
height
, width
, padding
, border
, 和 margin
等属性,它们都依赖于父组件的宽度和高度(margin 和 padding 都可以使用百分比值的形式,但这与通常的想法有点不同,不同之处在于 margin-top, margin-bottom, padding-top, and padding-bottom 的百分比值不是指容器的高度,而是指父容器的宽度)。padding
和 margin
设置为百分比,无论是垂直还是水平,它们都是相对于直接父元素的宽度而言的,与父元素的高度无关。 border-radius
是一个百分比,是相对于其宽度而言的缺点计算困难。如果我们要根据设计草案定义元素的宽度和高度,必须将其转换为百分比单位。
使用 @media
媒体查询,我们可以针对不同的屏幕尺寸编写不同的样式,从而实现响应式布局。
响应式的缺点:如果有太多的样式需要在浏览器尺寸发生变化时进行更改,那么多套样式代码将非常麻烦。
@media mediatype and not only (media feature) { css-code; }
<link rel="stylesheet" media="mediatype and not only (media feature)" href"mystylesheet.css"
<link rel="stylesheet" href="styleB.css" media="screen and (max-width: 800px)">
@media screen and (max-device-width:960px){
body{background:red;}
}
常用响应断点阈值设置
rem
通常用于适应移动终端,页面根据视口分为 10 个部分。
例如,现在有 5 个大小相同的屏幕(750 640 480 375 320),所有屏幕的总宽度被划分为 10rem.
然后,我们需要获取与这些不同屏幕相对应的 html 根元素的字体大小。
flexible.js 插件还可以解决以下问题
em
和 rem
与之类似,它们都根据 font-size
来缩放页面布局,但 em 主要取决于直接父级标签 font-size 的大小,并且只会查找最近的父级标签,而不会直接依赖于整个 html 根标签。
因为 100vw = 100 视图窗口宽度,100vh = 100 视图窗口高度,那么根据 750 的设计草案,100vw 就是 750。那么 1vw 就是 7.5px
flex-direction, flex-wrap, justify-content, align-items
align-content: order, flex-grow, flex-shrink, flex-basis, align-self
左右两列的宽度是恒定的,中间一列的宽度则根据浏览器窗口的大小自适应调整。
与双飞翼布局一样,左右两栏的宽度是恒定的,中间一栏的宽度根据浏览器窗口的大小自适应,但它更加完整。