响应式网站设计常见的几种方案。
根据 JS 判断设备的类型,进而控制进入移动端页面还是PC端页面。
通过媒体查询,在不同的宽度下,进行不同的设计
rem 方案+JS 控制根字体大小
Flex 布局
网页设计的布局的种类
响应式布局:根据页面宽度自动更改布局和样式
流式布局:像素改为百分比(相对单位)作为单位,可以根据页面宽度做变化
弹性布局:用em和rem作为单位(根据字体百分比强制放大缩小页面)
自适应布局:预设了一些布局样式,根据用户机型判断展示样式
在现在技术发展比较快的情况下,以上几种布局的界限不是很清晰,通常以上结合以上几种方案实现一个完美的响应式网站。
设计方法
媒体查询
媒体查询的宽度规则有两种:
min-device-wdith- 设备宽度min-width- 窗口宽度
在不同的情况下,按需选择使用哪一种。
CSS
@media screen and (min-width:400px)and (max-width:780px){
....
}
/*
通常我们会采用以下的方式,管理CSS
common.css
pc.css
mobile.css
*/媒体查询的引入方式也有两种:
link方式的引入
css 里面引入
rem 方案
根据设备宽度自动改变字体大小函数
JS部分
JavaScript
let changeFontSize = () => {
// 获取设备的宽度
let w = document.documentElement.clientWidth
// 在各种字体尺寸里面最大值是不超过40的
let n = 20 * (w / 320) > 40 ? 40 + 'px' : 20 * (w / 320) + 'px'
document.documentElement.style.fontSize = n
}
// 初始化的事件
window.addEventListener('load', changeFontSize)
// 当屏幕尺寸改变后的事件
window.addEventListener('resize', changeFontSize)CSS部分
CSS
html {
font-size: 10px;
}
div {
font-size: 3rem;
}自适应方案
根据设备自动跳转到不同的网页函数
JavaScript
function redirect() {
// 获取设备的信息
let userAgent = navigator.userAgent.toLocaleLowerCase()
// 正则表达式,判断设备类型
let device =
/ipad|iphone|midp|rv:1,2,3,4|ucweb|android|windows ce|windows mobile/
if (device.test(userAgent)) {
// 跳转移动端页面
window.location.href = './mobile.html'
} else {
// 跳转pc端页面
window.location.href = './pc.html'
}
}
redirect()