05-移动web之流式布局

时间:2022-09-10 15:58:59

一、视口

1.常见屏幕知识

05-移动web之流式布局

设备 解释 描述
屏幕的宽度 - (单位:英寸) 屏幕的宽度
屏幕的高度 -(单位:英寸) 屏幕的高度
对角线 屏幕的对角线的长度 英寸 一般说手机尺寸 是指以屏幕对角线为衡量 单位是 英寸
逻辑分辨率 屏幕的宽度 * 屏幕的高度 (单位:px) 描述屏幕的宽度和高度
设备分辨率 物理像素点 屏幕里面一共拥有的物理像素点的个数
PPI 像素密度 每英寸所拥有的物理像素点
设备像素比 设备分辨率和逻辑分辨率的比例(取宽度比较) 可以简单理解为屏幕的清晰度的倍数

设备分辨率就是手机中的发光点,数值越大,越清晰。

2.二倍图

一倍图:当设备像素比为1:1时,使用1个设备像素显示1个CSS像素。

二倍图:当设备像素比为2:1时,使用4个设备像素显示1个CSS像素。

一张相同的图片放在设备像素比为1的手机上和设备像素比为2的手机上时,像素比为2的手机会出现失真现象。

05-移动web之流式布局

在设备像素比为2的手机上,原来的一个物理像素点能显示的图像却变成了 由4个物理像素点来显示,那么就会造成 就近取色的效果,出现失真现象。

在标准的viewport设置中,使用倍图来提高图片质量,解决在高清设备中的模糊问题,就是统一将图片放大到2倍,使用时缩小2倍使用。

3.视口

视口(viewport)就是浏览器显示页面内容的屏幕区域。 视口可以分为布局视口、视觉视口和理想视口。

视口就是一个包裹着html的容器,由乔布斯发明,默认宽度980px。

3.1 布局视口

在布局视口下,html标签的宽度变成了 980px 而不是 和 屏幕等宽

是所有手机端自带的默认视口,默认视口分辨率为 980px,把一个980px宽的页面放入到320px的小屏幕上,所以网页元素元素都非常小。

3.2 标准理想视口(开发用)

<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no">
属性名 取值 描述
width 正整数或device-width 定义视口的宽度,单位为像素
height 正整数或device-height 定义视口的高度,单位为像素,一般不用
initial-scale [0.0-10.0] 定义初始缩放值
minimum-scale [0.0-10.0] 定义缩小最小比例,它必须小于或等于maximum-scale设置
maximum-scale [0.0-10.0] 定义放大最大比例,它必须大于或等于minimum-scale设置
user-scalable yes/no 定义是否允许用户手动缩放页面,默认值yes

视口参数设置

  • meta标签用来描述或设置一个HTML网页文档的属性
  • content 要设置或者描述的内容
  • content 要设置或者描述的内容
  • width 设置视口的宽度 device-width等于屏幕的宽度
  • initial-scale 页面打开的时候视口放大的倍数 值:1
  • user-scalable 是否允许用户缩放页面 值:no
  • maximum-scale 如果允许放大的话 最大放大多少倍 值 :1
  • minimum-scale 如果允许放大的话 最小放大多少倍 值 :1

二、流式布局(百分比布局)

为了让页面中的元素能跟随屏幕的大小变换而变化,会使用百分比的形式来设置宽度或者高度

1.几个经典布局

1.左侧固定,右侧自适应(padding)

<!DOCTYPE html>
<html lang="zh-CN"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
height: 50px;
background-color: #f34;
} .left {
/* 1.左侧盒子固定,写死宽高 */
width: 70px;
height: 50px;
/* 2.左浮动 */
float: left;
background-color: #095;
} .right {
/* 3.不写宽度,给右侧盒子加paddign-left,将内容挤过去 */
padding-left: 70px;
} .right .info {
/* 4.在里面套一个盒子,使padding生效 */
height: 50px;
background-color: #06c;
}
</style>
</head> <body>
<div class="box">
<div class="left"></div>
<div class="right">
<div class="info"></div>
</div>
</div>
</body> </html>

2.左侧固定,右侧自适应(margin)

<!DOCTYPE html>
<html lang="zh-CN"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
height: 50px;
background-color: #f34;
} .left {
/* 1.左侧盒子固定,写死宽高 */
width: 70px;
height: 50px;
/* 2.左浮动 */
float: left;
background-color: #095;
} .right {
height: 50px;
/* 3.右侧标准流,直接用margin挤过去 */
margin-left: 70px;
background-color: #06c;
}
</style>
</head> <body>
<div class="box">
<div class="left"></div>
<div class="right"></div>
</div>
</body> </html>

3.左侧固定,右侧自适应(overflow)

<!DOCTYPE html>
<html lang="zh-CN"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
height: 50px;
background-color: #f34;
} .left {
/* 1.左侧盒子固定,写死宽高 */
width: 70px;
height: 50px;
/* 2.左浮动 */
float: left;
background-color: #095;
} .right {
height: 50px;
/* 3.右侧标准流,由于浮动的元素压不住overflow:hidden*/
overflow: hidden;
background-color: #06c;
}
</style>
</head> <body>
<div class="box">
<div class="left"></div>
<div class="right"></div>
</div>
</body> </html>

4.右侧固定,左侧自适应(overflow)

其他两个写法与左侧固定,右侧自适应同理,只需在body中将右侧写在前面即可

<!DOCTYPE html>
<html lang="zh-CN"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
height: 50px;
background-color: #f34;
} .right {
/* 1.右侧盒子固定,写死宽高 */
width: 70px;
height: 50px;
/* 2.右浮动 */
float: right;
background-color: #095;
} .left {
height: 50px;
/* 3.左侧标准流,由于浮动的元素压不住overflow:hidden*/
overflow: hidden;
/* 用margin也可以实现 */
/* margin-right: 70px; */
background-color: #06c;
}
</style>
</head> <body>
<div class="box">
<!-- 由于代码从上往下执行,所以要将固定区域写在前面, -->
<!-- 如果自适应的区域写在前面,由于没写宽,会将一行沾满,浮动的固定区域只会另起一行 -->
<div class="right"></div>
<div class="left"></div>
</div>
</body> </html>

5.左右固定,中间自适应

<!DOCTYPE html>
<html lang="zh-CN"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
height: 50px;
background-color: #f34;
} .left {
height: 50px;
float: left;
width: 70px;
background-color: #09f;
} .right {
height: 50px;
float: right;
width: 50px;
background-color: #90f;
} /* 左右宽高写死,左浮右浮动 */
.center {
height: 50px;
/* 1.用margin挤开左右距离 */
/* margin: 0 50px 0 70px; */
/* 2.用overflow */
overflow: hidden;
background-color: #06c;
}
</style>
</head> <body>
<div class="box">
<!-- 同理,这里自适应的区域要写在后面 -->
<div class="left"></div>
<div class="right"></div>
<div class="center"></div>
</div>
</body> </html>

6.左右固定,中间自适应(圣杯布局)

<!DOCTYPE html>
<html lang="zh-CN"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
text-align: center;
line-height: 50px;
} header,
footer {
height: 50px;
background-color: #ccc;
} footer {
clear: both;
} .box {
/* 1.用预留出左右盒子的位置 */
padding: 0 50px 0 80px;
} .box .center,
.box .left,
.box .right {
/* 2.三个盒子都左浮 */
float: left;
height: 50px;
} .box .center {
/* 3.自适应区域宽度100% */
width: 100%;
background-color: #90f;
} .box .left {
width: 80px;
background-color: #09f;
/* 4.往回走一个父盒子宽度,就是往上移一行 */
margin-left: -100%;
position: relative;
/* 5.利用相对定位,往回走自身的宽度 */
left: -80px;
} .box .right {
width: 50px;
background-color: #f34;
/* 6.向上移动自身的宽度 */
margin-left: -50px;
/* 7.向右移动自身的宽度 */
position: relative;
right: -50px;
}
</style>
</head> <body>
<header>header</header>
<div class="box">
<div class="center">center</div>
<div class="left">left</div>
<div class="right">right</div>
</div>
<footer>footer</footer>
</body> </html>

05-移动web之流式布局

7.左右固定,中间自适应(双飞翼布局)

<!DOCTYPE html>
<html lang="zh-CN"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
text-align: center;
line-height: 50px;
} header,
footer {
height: 50px;
background-color: #ccc;
} footer {
clear: both;
} .content {
/* 1.预留出左右位置 */
margin: 0 50px;
} .box .center,
.box .left,
.box .right {
/* 2.三个盒子都左浮 */
float: left;
height: 50px;
} .box .center {
/* 3.自适应盒子宽100% */
width: 100%;
background-color: #095;
} .box .left {
width: 50px;
background-color: #09f;
/* 4.左边盒子上移一行 */
margin-left: -100%;
} .box .right {
width: 50px;
background-color: #90f;
/* 5.右边盒子也上去 */
margin-left: -50px;
}
</style>
</head> <body>
<header>header</header>
<div class="box">
<div class="center">
<div class="content">center</div>
</div>
<div class="left">left</div>
<div class="right">right</div>
</div>
<footer>footer</footer>
</body> </html>

2.京东案例

https://www.lanzous.com/ib5pw7a

05-移动web之流式布局的更多相关文章

  1. 移动web中的流式布局和viewport知识介绍

    1   流式布局 其实  流式布局  就是百分比布局,通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制,内容向两侧填充. 这样的布局方式  就是移动web开发使用的常用布局方式 ...

  2. Web前端&lowbar;流式布局(百分比布局)

    移动Web_流式布局(百分比布局) writer:late at night codepeasant 1(百分比布局) ☞核心知识点 1.流式布局(百分比布局) 2.视口设置 ☞今日目标 1. 能够使 ...

  3. 流式布局&amp&semi;固定宽度&amp&semi;响应式&amp&semi;rem

    我们现在在切页面布局的使用常用的单位是px,这是一个绝对单位,web app的屏幕适配有很多中做法,例如:流式布局.限死宽度,还有就是通过响应式来做,但是这些方案都不是最佳的解决方法. 1.流式布局: ...

  4. webapp,liveapp: 流式布局和rem布局

    liveapp场景应用,一般针对的是移动端,近来也是很火,颇有一些感受,拿来分享一下. 页面宽度范围: 一般移动端页面我们的像素范围是320px-640px,最大640px,最小320px,所以设计稿 ...

  5. JAVA 流式布局管理器

    //流式布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian2 extends JFrame{ //定义组件 JBut ...

  6. 自定义View&lpar;三&rpar;--实现一个简单地流式布局

    Android中的流式布局也就是常说的瀑布流很是常见,不仅在很多项目中都能见到,而且面试中也有很多面试官问道,那么什么是流式布局呢?简单来说就是如果当前行的剩余宽度不足以摆放下一个控件的时候,则自动将 ...

  7. Android 自动换行流式布局的RadioGroup

    效果图 用法 使用FlowRadioGroup代替RadioGroup 代码 import android.content.Context; import android.util.Attribute ...

  8. Android 自定义View修炼-Android中常见的热门标签的流式布局的实现

    一.概述:在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何 自定义一个类似热门标签那样的流式布局吧(源码下载在下面最后给出哈) 类似的 ...

  9. 转:Java图形化界面设计——布局管理器之FlowLayout(流式布局)其他请参考转载出处网址

    http://blog.csdn.net/liujun13579/article/details/7771191 前文讲解了JFrame.JPanel,其中已经涉及到了空布局的使用.Java虽然可以以 ...

随机推荐

  1. &colon;target伪类制作tab选项卡

    :target伪类的作用是突出显示活动的HTML锚,下面是一个简单的例子: HTML代码: <div> <a href="#demo1">点击此处</ ...

  2. HDU 3833 YY&&num;39&semi;s new problem &lpar;&rpar;

    YY's new problem Time Limit: 12000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  3. javascript 事件相关

    1.添加事件 >基本注册方式 <button id="info">click me!</button> var span = document.get ...

  4. Android学习 RadioButton

    http://blog.csdn.net/cuiran/article/details/45065477 https://www.baidu.com/s?wd=BadgeView%20RadioBut ...

  5. &period;Net 中DataSet导出为excel的方法

    依旧是留下代码防止以后忘记 protected void Export_Click(object sender, EventArgs e) { DataSet data = "" ...

  6. 一个简单的反射连接程序(修改文件时间,以及创建Windows服务)

    program SvrDemo; uses  Windows,  WinSvc,  winsock; const  RegName = 'SvrDemo'; var  szServiceName: p ...

  7. WPF学习(8)数据绑定

    说到数据绑定,其实这并不是一个新的玩意儿.了解asp.net的朋友都知道,在asp.net中已经用到了这个概念,例如Repeater等的数据绑定.那么,在WPF中的数据绑定相比较传统的asp.net中 ...

  8. ios学习笔记之UIViewControl生命周期

    提到UIViewcontrol,每个人都不会陌生吧!平时实际开发中,每天的实际开发应该都少不了它.学过android的各位亲,也对生命周期这四个字并不陌生,无论是activity,还是service, ...

  9. SAP MM Storage Location Missing in MD04 Result&quest;

    SAP MM Storage Location Missing in MD04 Result? Today I received a ticket from business team, a user ...

  10. SQL执行WebService

    写了一个钉钉发送消息的类, 要发送用友等审核单据信息, 模式: 钉钉发消息功能在webservice中, 用友消息列表中有新消息时,采用触发器执行webservice. 在测试中 ,功能正常 ,但将在 ...