适配布局类型
pc及移动端页面适配方法
设备屏幕有多种不同分辨率,页面适配方案有如下几种:
1、全适配:响应式布局+流体布局
2、移动端适配:
- 流体布局+少量响应式
- 基于rem的布局
流体布局:
元素的宽度用百分比来设置,高度写固定值。元素的边线无法用百分比,可以使用样式中的计算函数calc()来设置宽度,或者使用box-sizing属性将盒子设置为从边线计算盒子尺寸。
calc()
可以通过计算的方式给元素加尺寸,比如:width:calc(25% - 4px);
例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!-- meta:vp --> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <title>Document</title> <style> body{ margin:0; } .con a{ display:block; /*calc是css3的一个新属性,括号中的减号前后要加空格*/ width:calc(25% - 4px); height:100px; background-color:gold; text-align: center; line-height: 100px; text-decoration:none; color:#333; font-size:14px; float:left; border:2px solid #000; } </style> </head> <body> <div class="con"> <a href="#">菜单文字</a> <a href="#">菜单文字</a> <a href="#">菜单文字</a> <a href="#">菜单文字</a> </div> </body> </html>
box-sizing
1、content-box 默认的盒子尺寸计算方式
2、border-box 设置盒子的尺寸计算方式为从边框开始,盒子的尺寸,边框和内填充算在盒子尺寸内
例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!-- meta:vp --> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <title>Document</title> <style> body{ margin:0; } .con a{ display:block; /*calc是css3的一个新属性,括号中的减号前后要加空格*/ /*width:calc(25% - 4px);*/ width:25%; height:100px; background-color:gold; text-align: center; line-height: 100px; text-decoration:none; color:#333; font-size:14px; float:left; border:2px solid #000; box-sizing:border-box; } </style> </head> <body> <div class="con"> <a href="#">菜单文字</a> <a href="#">菜单文字</a> <a href="#">菜单文字</a> <a href="#">菜单文字</a> </div> </body> </html>
响应式布局:
响应式布局就是使用媒体查询的方式,通过查询浏览器的宽度,不同的宽度应用不同的样式块,每个样式块对应的是该宽度下的布局方式,从而实现响应式布局。响应式布局的页面可以适配多种终端屏幕
响应式布局伪代码:
<!-- #宽度小于960px时用这个样式: -->
@media (max-width:960px){
.left_con{width:58%;}
.right_con{width:38%;}
}
<!-- #宽度小于768px时用这个样式: -->
@media (max-width:768px){
.left_con{width:100%;}
.right_con{width:100%;}
}
例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <title>响应式布局</title> <style> body{margin:0;} .con div{ width:23%; height:200px; border:2px solid #000; background-color:gold; margin:1%; float:left; box-sizing:border-box; } @media (max-width:800px){ .con div{ width:46%; margin:2%; } } @media (max-width:500px){ .con div{ width:94%; margin:3%; } } </style> </head> <body> <div class="con"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> </div> </body> </html>
基于rem的布局
em是一个单位,rem也是,只是参照的值不一样,rem参照的是html标签中的font-size
示例说明:
<!DOCTYPE html> <html lang="en" style="font-size:30px;"> <head> <meta charset="UTF-8"> <title>rem</title> <style> p{ font-size: 20px; /* 首行缩进:text-indent:40px; 或者: */ text-indent:2em; /*2em = 2 * font-size 如果是2rem,则 2rem = 2 * <html>中的font-size */ } </style> </head> <body> <p>本教程针对那些想要设置一个生产web服务器的Django用户。它介绍了设置Django以使得其与uWSGI和nginx工作良好的必要步骤。它涵盖了所有三个组成部分,提供了一个web应用和服务器软件的完整栈。 Django 是一个高层次的Python Web框架,鼓励快速开发和干净实用的设计。 nginx (发音为 engine-x) 是一个免费开源并且高性能的HTTP服务器和反向代理,还是一个IMAP/POP3代理服务器。 </p> </body> </html>
示例2,其中js还没学:
<!DOCTYPE html> <!-- 通过js实现窗口宽度不同时font-size相应改变 --> <html lang="en" style="font-size:20px"> <head> <meta charset="UTF-8"> <!-- 适配移动端 --> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <script src="js/aa.js"></script> <title>rem示例,实现头部等比缩放</title> <style> body{margin:0;} .header{ height:2.5rem; /*height = 2.5 * <html>中的font-size值*/ background-color:gold; text-align:center; line-height:2.5rem; font-size:20px; } </style> </head> <body> <div class="header">头部文字</div> </body> </html>

浙公网安备 33010602011771号