前端响应式布局原理与方案(详细版)
文章目录
- 媒体查询
- Grid布局
- Flex布局
响应式布局:在不同屏幕尺寸下, 同一页面有不同的布局。
传统的开发模式:PC端搞一套布局,移动端搞一套布局。
使用了响应式布局,只需要开发一套即可,缺点是CSS比较重
响应式设计和自适应设计的区别:响应式开发一套界面,通过检测视口分辨率,针对不同客户端在客户端做代码处理,展现不同的布局和内容
自适应需要开发多套界面,通过检测视口分辨率,判断当前访问的设备是PC端、平板、手机,从而请求服务层返回不同的页面
媒体查询
不同尺寸设置不同css样式,移动用的多,pc不多
device-width device-height 是用在移动端
width height 用在pc端
<body>
<script src="./dist/app.js"></script>
<div class="div0">
sgfdl
</div>
</body>
<style>
.div0 {
width: 100px;
}
/* screen */
/* 最小屏幕尺寸200px 最大300px */
@media screen and (min-device-width: 200px) and (max-device-width: 300px){
.div0 {
background-color: rebeccapurple;
}
}
@media screen and (min-device-width: 301px) and (max-device-width: 500px) {
.div0 {
background-color: blue;
}
}
</style>
在pc端做个案例: 【500, 800】px一行一个div , 【801, 1000】第一行两个,第二行放1个, 【1001,无穷】一行三个div
主要是媒体查询,根据不同宽度选择不同的style, 使用float使元素左浮动,利用%宽使得元素是否在一行显示
<body>
<script src="./dist/app.js"></script>
<div class="div0">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
</body>
<style>
.div0 {
height: 100px;
width: 100%;
background-color: blueviolet;
}
/* 给三个div添加浮动 ,添加高度不然不显示*/
.div0 div {
float: left;
height: 100px;
}
/* 不同的div设置不同颜色 */
.div0 div:nth-child(1) {
background-color: antiquewhite;
}
.div0 div:nth-child(2) {
background-color: aqua;
}
.div0 div:nth-child(3) {
background-color: blue;
}
/* 设置不同尺寸的style */
@media screen and (min-width: 500px) and (max-width: 800px) {
.div0 div{
/* 给子元素统一设置宽度 */
width: 100%;
}
}
@media screen and (min-width: 801px) and (max-width: 1000px) {
.div0 div {
width: 50%;
}
}
@media screen and (min-width: 10001px) {
.div0 div {
width: 33.3%;
}
}
</style>
<style media="(min-device-width: 200px) and (max-device-width: 400px)">
.div0 div {
/* 给子元素统一设置宽度 */
width: 100%;
}
</style>
<style media="(min-device-width: 401px) and (max-device-width: 500px)">
.div0 div {
width: 50%;
}
</style>
<style media="(min-device-width: 501px)">
.div0 div {
width: 33.3%;
}
</style>