重要!响应式开发
目录是什么?
多终端显示不同,更好看
PC,ipad,手机适配
怎么实现?
媒体查询,断点:
视口宽不同,布局不同
移动端???
320-480端口
rem
不考虑大尺寸,更好体验
响应式:三端都可以看,但是适配没有移动端好看
成本低
媒体
媒体查询
检测不同媒体视口宽度
- @media关键字
- 媒体类型
body{
background-color: skyblue;
color: #fff;
}
/*我们的设备是屏幕显示的css*/
@media print{
body{
background-color: red;
color: yellow;
}/*打印机可见*/
}
- 媒体特性
可以忽略
最小最大宽,横竖屏,像素比
要2,3均满足,需要逻辑运算符号链接
/*当前任意设备,但是屏幕要大于等于400px才显示*/
@media screen and (min-width:400px){
body{
background-color: red;
}
}
/*当前任意设备,但是屏幕要大于等于400px,小于等于500px才显示*/
@media screen and (min-width:400px) and (max-width:500px){
body{
background-color: red;
}
}
像素比:移动端,根据手机的设备像素比设计css
横屏竖屏?
@media screen and (orientation:landscape){
body{
background-color: red;
}
}
断点
是什么
满足对应窗口,出现对应样式,一定写在正常css代码之后
根据行业经验总结约定俗成的常见断点
xs:<576px 超小屏
sm:576~768px 小屏
md:768px~992px 中屏
lg:992px~1200px 大屏
xl:>=1200px 超大屏
适配方案
PC端:一般PC端优先,然后慢慢适配小屏效果,只需要使用 max-width 即可
移动端:移动端优先: 先考虑最小屏,再考虑大屏;只需要使用 min-width 即可
栅格布局
把容器分成?份
每份占比
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.row{
display: flex;
flex-wrap: wrap;
}
.col{
box-sizing: border-box;
border: 1px solid;
height: 200px;
}
/* <!-- 容器分成12份 --> */
/* <!-- 1份占的宽 --> */
.col-1{
width: 8.3333333%;
}
.col-2{
width: 16.666666667%;
}
.col-3{
width: 25%;
}
.col-4{
width: 33.3333333%;
}
.col-5{
width: 41.66667%;
}
.col-6{
width: 50%;
}
.col-7{
width: 58.33333333333%;
}
.col-8{
width: 66.6666667%;
}
.col-9{
width: 75%;
}
.col-10{
width: 83.3333333%;
}
.col-11{
width: 91.6666667%;
}
.col-12{
width: 100%;
}
</style>
</head>
<body>
<!-- 将容器分成12份 -->
<div class="row">
<div class="col col-3">1</div>
<div class="col col-3">2</div>
<div class="col col-3">3</div>
<div class="col col-3">4</div>
</div>
<div class="row">
<div class="col col-4">1</div>
<div class="col col-4">2</div>
<div class="col col-4">3</div>
</div>
<div class="row">
<div class="col col-6">1</div>
<div class="col col-6">2</div>
</div>
<div class="row">
<div class="col col-12">1</div>
</div>
</body>
</html>
响应式栅格系统
xxl | xl | lg | md | sm | 无缀名 |
---|---|---|---|---|---|
x > 1400px | 1200 < x <= 1400 | 992 < x <=1200 | 768 < x <= 992 | 576 < x <= 768 | x <= 576 |
这些都是宽度的上限,只要小于上限就会起效
1400 1200 992 768 576
/*
第一:我们将页面分成12分
第二:我们选择的断点是行业标准断点
第三:我们选择的适配方案,是PC端优先
*/
/* ....这里的css样式,会在屏幕宽大于1400px时生效.... */
.col-xxl-1 {
width: 8.333333%;
}
.col-xxl-2 {
width: 16.6666667%;
}
.col-xxl-3 {
width: 25%;
}
.col-xxl-4 {
width: 33.33333333%;
}
.col-xxl-5 {
width: 41.66666667%;
}
.col-xxl-6 {
width: 50%;
}
.col-xxl-7 {
width: 58.33333333%;
}
.col-xxl-8 {
width: 66.6666667%;
}
.col-xxl-9 {
width: 75%;
}
.col-xxl-10 {
width: 83.33333333%;
}
.col-xxl-11 {
width: 91.66666667%;
}
.col-xxl-12 {
width: 100%;
}
/* 当屏幕宽度大于1200px ,但小于等于1400px时,显示如下样式 */
@media screen and (max-width: 1400px) {
.col-xl-1 {
width: 8.333333%;
}
.col-xl-2 {
width: 16.6666667%;
}
.col-xl-3 {
width: 25%;
}
.col-xl-4 {
width: 33.33333333%;
}
.col-xl-5 {
width: 41.66666667%;
}
.col-xl-6 {
width: 50%;
}
.col-xl-7 {
width: 58.33333333%;
}
.col-xl-8 {
width: 66.6666667%;
}
.col-xl-9 {
width: 75%;
}
.col-xl-10 {
width: 83.33333333%;
}
.col-xl-11 {
width: 91.66666667%;
}
.col-xl-12 {
width: 100%;
}
}
/* 当屏幕宽度大于992px ,但小于等于1200px时,显示如下样式 */
@media screen and (max-width: 1200px) {
.col-lg-1 {
width: 8.333333%;
}
.col-lg-2 {
width: 16.6666667%;
}
.col-lg-3 {
width: 25%;
}
.col-lg-4 {
width: 33.33333333%;
}
.col-lg-5 {
width: 41.66666667%;
}
.col-lg-6 {
width: 50%;
}
.col-lg-7 {
width: 58.33333333%;
}
.col-lg-8 {
width: 66.6666667%;
}
.col-lg-9 {
width: 75%;
}
.col-lg-10 {
width: 83.33333333%;
}
.col-lg-11 {
width: 91.66666667%;
}
.col-lg-12 {
width: 100%;
}
}
/* 当屏幕宽度大于768px ,但小于等于992px时,显示如下样式 */
@media screen and (max-width: 992px) {
.col-md-1 {
width: 8.333333%;
}
.col-md-2 {
width: 16.6666667%;
}
.col-md-3 {
width: 25%;
}
.col-md-4 {
width: 33.33333333%;
}
.col-md-5 {
width: 41.66666667%;
}
.col-md-6 {
width: 50%;
}
.col-md-7 {
width: 58.33333333%;
}
.col-md-8 {
width: 66.6666667%;
}
.col-md-9 {
width: 75%;
}
.col-md-10 {
width: 83.33333333%;
}
.col-md-11 {
width: 91.66666667%;
}
.col-md-12 {
width: 100%;
}
}
/* 当屏幕宽度大于576px ,但小于等于768px时,显示如下样式 */
@media screen and (max-width: 768px) {
.col-sm-1 {
width: 8.333333%;
}
.col-sm-2 {
width: 16.6666667%;
}
.col-sm-3 {
width: 25%;
}
.col-sm-4 {
width: 33.33333333%;
}
.col-sm-5 {
width: 41.66666667%;
}
.col-sm-6 {
width: 50%;
}
.col-sm-7 {
width: 58.33333333%;
}
.col-sm-8 {
width: 66.6666667%;
}
.col-sm-9 {
width: 75%;
}
.col-sm-10 {
width: 83.33333333%;
}
.col-sm-11 {
width: 91.66666667%;
}
.col-sm-12 {
width: 100%;
}
}
/* 当屏幕宽度小于等于576px时,显示如下样式 */
@media screen and (max-width: 576px) {
.col-1 {
width: 8.333333%;
}
.col-2 {
width: 16.6666667%;
}
.col-3 {
width: 25%;
}
.col-4 {
width: 33.33333333%;
}
.col-5 {
width: 41.66666667%;
}
.col-6 {
width: 50%;
}
.col-7 {
width: 58.33333333%;
}
.col-8 {
width: 66.6666667%;
}
.col-9 {
width: 75%;
}
.col-10 {
width: 83.33333333%;
}
.col-11 {
width: 91.66666667%;
}
.col-12 {
width: 100%;
}
}
运用实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./media.css">
<style>
.row{
display: flex;
flex-wrap: wrap;
}
.col{
box-sizing: border-box;
background-color: skyblue;
height: 100px;
border: 1px solid #fff;
}
</style>
</head>
<body>
<!-- 将容器分成12份 -->
<!-- 大于 1200px 显示 3列
大于 992px 显示 2列
大于 768px 显示 1列 -->
<div class="row">
<div class="col col-xl-4 col-lg-6 col-md-12">1</div>
<div class="col col-xl-4 col-lg-6 col-md-12">2</div>
<div class="col col-xl-4 col-lg-6 col-md-12">3</div>
</div>
</body>
</html>
实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./media.css">
<style>
.row{
display: flex;
flex-wrap: wrap;
}
.col{
box-sizing: border-box;
background-color: skyblue;
height: 100px;
border: 1px solid #fff;
}
</style>
</head>
<body>
<!-- 12个,
当视口宽 >1200px 时,以显示4 3 2 1
当视口宽 <= 1200px 时,显示2 3 2 1
当视口宽 <= 992px 时,显示2 2 1 1
当视口宽 <= 768px 时,1 1 1 1同时上面的导航变成点击下拉菜单形式 -->
<div class="row">
<!-- 1200 768 xl sm -->
<div class="col col-xxl-3 col-xl-6 col-sm-12">1</div>
<div class="col col-xxl-3 col-xl-6 col-sm-12">1</div>
<div class="col col-xxl-3 col-xl-6 col-sm-12">1</div>
<div class="col col-xxl-3 col-xl-6 col-sm-12">1</div>
</div>
<div class="row">
<!--992 768 md sm -->
<div class="col col-xxl-4 col-md-6 col-sm-12">2</div>
<div class="col col-xxl-4 col-md-6 col-sm-12">2</div>
<div class="col col-xxl-4 col-md-6 col-sm-12">2</div>
</div>
<div class="row">
<!-- 992 lg -->
<div class="col col-xxl-6 col-lg-12">3</div>
<div class="col col-xxl-6 col-lg-12">3</div>
</div>
<div class="row">
<div class="col col-xxl-12">4</div>
</div>
</body>
</html>
p.s.其实twcss已经完美解决这个问题了,当然也可以自己外链media.css,都行
标签:lg,多端,xl,width,md,响应,sm,col From: https://www.cnblogs.com/GJ504b/p/18682455