移动WEB开发之流式布局--移动端常见布局--流式布局

news2025/1/18 17:09:34

移动端技术选型

移动端布局和以前我们学习的PC端有所区别:

1. 单独制作移动端页面(主流)

流式布局(百分比布局)

flex 弹性布局(强烈推荐)

less+rem+媒体查询布局

混合布局

2. 响应式页面兼容移动端(其次)

媒体查询

bootstarp

流式布局(百分比布局)

流式布局,就是百分比布局,也称非固定像素布局。

通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制,内容向两侧填充。

 流式布局方式是移动web开发使用的比较常见的布局方式。

 max-width 最大宽度 (max-height 最大高度)

min-width 最小宽度 (min-height 最小高度)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        section {
            width: 100%;
            max-width: 980px;
            min-width: 320px;
            margin: 0 auto;
        }
        
        section div {
            float: left;
            width: 50%;
            height: 400px;
        }
        
        section div:nth-child(1) {
            background-color: pink;
        }
        
        section div:nth-child(2) {
            background-color: purple;
        }
    </style>
</head>

<body>
    <section>
        <div></div>
        <div></div>
    </section>
</body>

</html>

最大宽度和最小宽度为

<= 

案例:京东移动端首页

访问地址:

多快好省,购物上京东! (jd.com)

1. 技术选型

方案:我们采取单独制作移动页面方案 技术:布局采取流式布局

2. 搭建相关文件夹结构

3. 设置视口标签以及引入初始化样式

我们现在开发的是移动端要初始化

<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no,maximum-scale=1.0,minimum-scale=1.0">
    <link rel="stylesheet" href="./css/normalize.css">
    <link rel="stylesheet" href="./css/index.css">

 4. 常用初始化样式

body {
margin: 0 auto;
min-width: 320px;
max-width: 640px;
background: #fff;
font-size: 14px;
font-family: -apple-system, Helvetica, sans-serif;
line-height: 1.5;
color: #666;
}

app首页制作

vertical-align: middle;        图片和文字基线对齐

为什么第一个图片可以,因为第一个图片很小所以跟文字对齐

 俩边写死,因为position: absolute;不占标准文档流 中间的搜索宽度就跟父元素一样,此时我们设置它的外边距,这样它就会随浏览器的大小变化而变化 

5. 二倍精灵图做法

在firework里面把精灵图等比例缩放为原来的一半

之后根据大小 测量坐标

注意代码里面background-size也要写: 精灵图原来宽度的一半 

 设置了固定定位,就要设置宽度为100%,最大宽度和最小宽度

品牌日制作

 盒子有多宽,图片就有多宽

 百分比布局的特点,只需要设置宽度,不用设置高度

新闻快报模块

二倍图,要缩放成原来的百分之50 注意缩放的是a而不是img 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no,maximum-scale=1.0,minimum-scale=1.0">
    <link rel="stylesheet" href="./css/normalize.css">
    <link rel="stylesheet" href="./css/index.css">
    <title>Document</title>
</head>
<body>
    <!-- 头部 -->
    <header class="app">
        <ul>
            <li>
                <img src="./images/close.png" alt="">
            </li>
            <li>
                <img src="./images/logo.png" alt="">
            </li>
            <li>打开京东APP,购物更轻松</li>
            <li>立即打开</li>
        </ul>
    </header>
    <!-- 搜索 -->
    <div class="search-wrap">
        <div class="search-btn"></div>
        <div class="search">
            <div class="jd-icon">
                <div class="sou"></div>
            </div>
        </div>
        <div class="search-login">登录</div>
    </div>
    <!-- 主体内容部分 -->
    <div class="main-Content">
        <!-- 滑动图 -->
        <div class="slider">
            <img src="upload/banner.dpg" alt="">
        </div>
        <!-- 品牌日 -->
        <div class="brand">
            <div>
                <a href=""><img src="upload/pic11.dpg" alt="" srcset=""></a>
                
            </div>
            <div>
                <a href=""><img src="upload/pic22.dpg" alt="" srcset=""></a>
            </div>
            <div>
                <a href=""><img src="upload/pic33.dpg" alt="" srcset=""></a>
            </div>
        </div>
        <!-- nav部分 -->
        <nav>
            <a href="">
                <img src="upload/nav1.webp" alt="" srcset="">
                <span>京东超市</span>
            </a>
            <a href="">
                <img src="upload/nav1.webp" alt="" srcset="">
                <span>京东超市</span>
            </a>
            <a href="">
                <img src="upload/nav1.webp" alt="" srcset="">
                <span>京东超市</span>
            </a>
            <a href="">
                <img src="upload/nav1.webp" alt="" srcset="">
                <span>京东超市</span>
            </a>
            <a href="">
                <img src="upload/nav1.webp" alt="" srcset="">
                <span>京东超市</span>
            </a>
            <a href="">
                <img src="upload/nav1.webp" alt="" srcset="">
                <span>京东超市</span>
            </a>
            <a href="">
                <img src="upload/nav1.webp" alt="" srcset="">
                <span>京东超市</span>
            </a>
            <a href="">
                <img src="upload/nav1.webp" alt="" srcset="">
                <span>京东超市</span>
            </a>
            <a href="">
                <img src="upload/nav1.webp" alt="" srcset="">
                <span>京东超市</span>
            </a>
            <a href="">
                <img src="upload/nav1.webp" alt="" srcset="">
                <span>京东超市</span>
            </a>
        </nav>
        <!-- 新闻模块 -->
        <div class="news">
            <a href="">
                <img src="upload/new1.dpg" alt="">
            </a>
            <a href="">
                <img src="upload/new2.dpg" alt="">
            </a>
            <a href="">
                <img src="upload/new3.dpg" alt="">
            </a>
        </div>
    </div>
</body>
</html>
body {
    margin: 0 auto;
    min-width: 320px;
    max-width: 640px;
    background: #fff;
    font-size: 14px;
    font-family: -apple-system, Helvetica, sans-serif;
    line-height: 1.5;
    color: #666;

}
*{
    -webkit-tap-highlight-color: transparent;
}
input{
    -webkit-appearance: none;
}
img,a{
    -webkit-touch-callout: none;
}
a{
    color: #666;
    text-decoration: none;
}
.app{
    height: 45px;
}   
ul{
    margin: 0;
    padding: 0;
    list-style: none;
} 
img{
    /* 去除图片顶部的空白缝隙 */
    vertical-align: middle;
}
.app ul li{
    float: left;
    height: 45px;
    background-color: #333;
    text-align: center;
    line-height: 45px;
    color: #fff;
}
.app ul li:nth-child(1){
    width: 8%;
}
.app ul li:nth-child(1) img{
    width: 10px;
}
.app ul li:nth-child(2){
    width: 10%;
}
.app ul li:nth-child(2) img{
    /* 图片和文字基线对齐 */
    width: 30px;
    vertical-align: middle;
}
.app ul li:nth-child(3){
    width: 57%;
}
.app ul li:nth-child(4){
    width: 25%;
    background-color: #f63515;
}
/* 搜索 */
.search-wrap{
    position: fixed;
    height: 44px;
    overflow: hidden;
    width: 100%;
    min-width: 320px;
    max-width: 640px;
}
.search-btn{
    position: absolute;
    top: 0;
    left: 0;
    width: 40px;
    height: 44px;
    /* background: pink; */
}
.search-btn::before{
    content: "";
    display: block;
    width: 20px;
    height: 18px;
    background: url(../images/s-btn.png) no-repeat;
    background-size: 20px 18px ;
    margin: 14px 0 0 15px;
}
.search-login{
    position: absolute;
    top: 1px;
    right: 0;
    width: 40px;
    height: 44px;
    /* background: pink; */
    color: #fff;
    line-height: 44px;
}
.search{
    position: relative;
    height: 30px;
    margin: 0 50px;
    border-radius: 15px;
    background-color: #fff;
    margin-top: 7px;
}
.jd-icon{
    width: 20px;
    height: 15px;
    position: absolute;
    top: 8px;
    left: 13px;
    background: url(../images/jd.png) no-repeat;
    background-size: contain;
}
.jd-icon::after{
    content: "";
    display: block;
    width: 1px;
    height: 15px;
    background-color: #ccc;
    position: absolute;
    right: -8px;
    top: 0;
}
.sou{
    position: absolute;
    width: 18px;
    height: 15px;
    top: 2px;
    left: 40px;
    background: url(../images/jd-sprites.png) no-repeat -81px 0;
    background-size: 200px auto;
}
.slider img{
    width: 100%;
}
/* 品牌日 */
.brand{
    /* 切割的是盒子,图片并没有变化 */
    overflow: hidden;
    border-radius: 10px 10px 0 0;
}
.brand div{
    width: calc(100%/3);
    float: left;
}
.brand div img{
    width: 100%;
}
/* nav */
nav{
    padding-top: 5px;
}
nav a{
    float: left;
    width: 20%;
    text-align: center;
}
nav a img{
    width: 40px;
    margin: 10px 0;
}
nav a span{
    display: block;
}

/* news */
.news {
    margin-top: 200px;
}
.news img{
    width: 100%;
}
.news a{
    float: left;
    box-sizing: border-box;
}
.news a:nth-child(1){
    width: 50%;
}
/* .news a:nth-child(2){
    width: 25%;
} */
/* n+2就是从第二的开始 */
.news a:nth-child(n+2){
    width: 25%;
    border-left: 1px solid #ccc;
}

 

 6. 图片格式

DPG图片压缩技术

京东自主研发推出DPG图片压缩技术,经测试 该技术,可直接节省用户近50%的浏览流量, 极大的提升了用户的网页打开速度。 能够兼容jpeg,实现全平台、全部浏览器的兼 容支持,经过内部和外部上万张图片的人眼浏 览测试后发现,压缩后的图片和webp的清晰度 对比没有差距

webp 图片格式

谷歌开发的一种旨在加快图片加载速度的图片 格式。图片压缩体积大约只有JPEG的2/3,并 能节省大量的服务器宽带资源和数据空间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ConcurrentHashMap的实现原理是分段锁?你Out了

前言 Java后端开发面试的时候&#xff0c;一场好的面试&#xff0c;是无论如何也绕不开并发编程的。并发编程里面往往有个很重要的类可能会被拿出来探讨&#xff1a;ConcurrentHashMap。 ConcurrentHashMap是HashMap的线程安全版。大家都知道HashMap的高性能&#xff0c;但是H…

动静态库的制作

目录 一.动静态库的原理 二.静态库 2.1制作静态库 2.2使用静态库 三.动态库 3.1制作动态库 3.2动态库的使用 一.动静态库的原理 首先要知道可执行程序的生成过程&#xff1a;1&#xff0c;预处理 2&#xff0c;编译 3&#xff0c;汇编 4 &#xff0c;链接 1.预处理 头…

03 LaTex之标题页摘要

1.标题页 \title{{ABC}\footnote{explain}}%生成标题和标题的脚注\author{\small $^a$lay \qquad $^b$winter \footnote{super star}\\%换行符 %作者信息 \small $^a$ lays brief\\ \small lays address, 710021\\%换行 \small $^b$ winters introduction \\ \small winters …

0101 蓝桥杯真题04

/* * 马虎的算式 * 小明是个急性子&#xff0c;上小学的时候经常把老师写在黑板上的题目抄错了。 * 有一次&#xff0c;老师出的题目是&#xff1a;36 x 495 ? * 他却给抄成了&#xff1a;396 x 45 ? * 但结果却很戏剧性&#xff0c;他的答案竟然是对的&#xff01;&a…

同花顺_代码解析_技术指标_Z_3

本文通过对同花顺中现成代码进行解析&#xff0c;用以了解同花顺相关策略设计的思想 目录 ZNZ_DPCYC1 ZNZ_DPCYR ZNZ_HLD ZNZ_HUO ZNZ_MYL1 ZNZ_MYP1 ZNZ_PAS ZNZ_PAS1 ZNZ_RPY1 ZNZ_RPY2 ZNZ_SDR ZNZ_TAO ZNZ_YHBOL1 ZNZ_YHCBB ZX ZNZ_DPCYC1 大盘成本均线 行…

python 给图片添加噪声

import numpy as np import cv2 import matplotlib.pyplot as plt import skimage from skimage import io import randomdef addGaussNoise(origin,var0.0005):#添加高斯噪声函数var random.uniform(0.0001, 0.04)noisy skimage.util.random_noise(origin, modegaussian, va…

idea iu 2021 Mac版本的使用,如何创建java web项目,包括tomcat和web包

Java web系列文章目录 第一章 前端学习入门之idea iu 2021版本的使用 目录Java web系列文章目录前言一、Java web是什么&#xff1f;二、配置步骤1.下载Tomcat服务器2.idea iu 2021版本界面总结前言 随着前端的学习路径&#xff0c;java web项目不可避免要学习使用&#xff0…

YUV与RGB 以及之间的转换

目录 一、RGB 二、YUV 三、YUV类型和存储方式 1、类型 2、存储方式 四、分析YUV 4:2:0 1、YU12(I420&#xff0c;YUV420P) 2、YV12 3、NV12(YUV420SP) 4、NV21(YUV420SP) 5、占用空间大小比较 五、RGB与YUV之间的转换 1、转换标准 2、Color Range 3、计算公式 在…

【ArcGIS】属性表导出及乱码问题

这玩意其实说难不难&#xff0c;但是乱码有时候还是烦人 直接复制到EXCEL 部分表细节被我删掉了 直接点击全选&#xff0c;然后复制&#xff0c;再到EXCEL里粘贴。我有时候就是这么干的。而且量大概是二十万行左右。 Table to Table 如果你的属性文件大于65533行&#xff…

十一、组合API(1)

本章概要 为什么要引入组合APIsetup() 函数 组合&#xff08;Composition&#xff09;API 是在 Vue 3.0 中引入的&#xff0c;它是一组附加的、基于函数的 API &#xff0c;允许灵活地组合组件逻辑。 组合 API 并没有引入新的概念&#xff0c;更多地是将 Vue 的核心功能&…

项目相互依赖调用解决方法两种方法

Bmodel依赖于Amodel&#xff0c;但是Amodel又需要BModel的信息。原来是在Amodel创建一块内存&#xff0c;在Bmodel中将内存地址赋给这块内存&#xff0c;然后在Amodel去做其他操作。 方法一&#xff1a;采用静态变量static链接&#xff1a;C开发中一个解决方案里&#xff0c;两…

LeetCode 0808. 分汤:好题【感叹号】

【LetMeFly】808.分汤&#xff1a;好题&#xff01; 力扣题目链接&#xff1a;https://leetcode.cn/problems/soup-servings/ 有 A 和 B 两种类型 的汤。一开始每种类型的汤有 n 毫升。有四种分配操作&#xff1a; 提供 100ml 的 汤A 和 0ml 的 汤B 。提供 75ml 的 汤A 和 2…

Google Earth Engine(GEE)—— 各矿区时序NDVI变化图(包含具体的运行函数)

函数: ee.Filter.eq(name, value) Filter to metadata equal to the given value. Returns the constructed filter. Arguments: name (String): The property name to filter on. value (Object): The value to compare against. Returns: Filter ui.Chart.image.s…

7、Jedis测试

文章目录7、Jedis测试7.1. Jedis所需要的jar包7.2. 连接Redis注意事项7.3. Jedis常用操作7.3.1. 创建动态的工程7.3.2. 创建测试程序7.4. 测试相关数据类型7.4.1. Jedis-API&#xff1a;Key7.4.2. Jedis-API&#xff1a;String7.4.3. Jedis-API&#xff1a;List7.4.4. Jedis-AP…

葡萄糖-聚乙二醇-6-羧甲基荧光素 Glucose-PEG-6-FAM

葡萄糖-聚乙二醇-6-羧甲基荧光素 Glucose-PEG-6-FAM 中文名称&#xff1a;葡萄糖-6-羧甲基荧光素 英文名称&#xff1a;Glucose-6-FAM 别称&#xff1a;6-羧甲基荧光素标记葡萄糖&#xff0c;6-羧甲基荧光素-葡萄糖 PEG接枝修饰葡萄糖 Glucose-PEG-6-FAM 葡萄糖-聚乙二醇…

需求收集方法工具,以及进行需求分析的6大要素

通过本文你将了解&#xff1a;1、需求管理流程包括哪四个步骤&#xff1b;2、如何进行需求收集&#xff1b;3、如何进行需求分析&#xff1f;4、如何进行需求分发&#xff1b;5、如何进行需求验证&#xff1b;6、有哪些辅助软件需求管理的工具系统&#xff1f;一、需求管理包括…

MyBatis核心配置文件

1.environments 注 : environments下面可以配置多个环境 , 需要使用哪个环境default里面的参数就对应哪个Id. 2.properties 配置连接 方法一 :(直接配置参数) 方法二 :(使用properties配置文件) (1)创建一个 properties 文件 , 在里面配置连接 (2)在核心配置文件中配置使用p…

41.朴素贝叶斯Naive Bayes公式推导与理解+求解公园凉鞋问题(借助文氏图)

朴素贝叶斯是基于概率论统计学的分类算法。 贝叶斯理论是指根据一个已发生事件的概率&#xff0c;计算另一个事件的发生概率。 目录 1.相关概念 1.1先验概率 应用举例 1.2条件概率 应用举例 1.3全概率公式 应用举例 1.4后验概率 应用举例 2.课堂笔记 ​ 3.文…

ubuntu16.04+cuda10.0+cudnn7.6+tensorflow_gpu-1.11.0环境安装

为了搭深度学习环境,又装了一遍各种库,在此记录安装版本和流程. ubuntu16.04cuda10.0cudnn7.6tensorflow_gpu-1.11.0环境安装1 安装NVIDIA显卡2 安装CUDA10.03 安装CUDNN4 安装tensorflow_gpu-1.11.01 安装NVIDIA显卡 查看自己的显卡型号: lspci |grep -i nvidianvidia官网:h…

linux安装Zookeeper3.5.7详解

官网下载链接&#xff1a;Apache ZooKeeper 如下图可以下载历史版本 然后找到3.5.7版本&#xff0c;直接下载即可然后将Zookeeper拷贝到一个文件夹下&#xff0c;这里我选择的是/opt/software文件夹 然后将其解压到指定目录下 tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C …