【移动WEB开发】rem适配布局

目录

1. rem基础

2.媒体查询

2.1 语法规范

2.2 媒体查询+rem

2.3 引入资源(理解)

3. less基础

3.1 维护css的弊端

3.2 less介绍

3.3 less变量

3.4 less编译

3.5 less嵌套

3.6 less运算

4. rem适配方案

4.1 rem实际开发

4.2 技术使用

4.3 rem+媒体查询+less

5. 苏宁网首页案例制作

6. rem适配方案2


 

1. rem基础

2.媒体查询

2.1 语法规范

        /* 媒体查询一般按照从大到小或从小到大的顺序 */
        /* 样式具有层叠性 */
        /* screen and 不能省略 */
        /* 数字后面必须跟单位,and后面要跟空格 */
        @media screen and (max-width:539px) {
            body {
                background-color: blue;
            }
        }

        @media screen and (min-width:540px) {
            body {
                background-color: green;
            }
        }

        @media screen and (min-width:970px) {
            body {
                background-color: red;
            }
        }

2.2 媒体查询+rem

        @media screen and (min-width:320px) {
            html {
                font-size: 50px;
            }
        }

        @media screen and (min-width:640px) {
            html {
                font-size: 100px;
            }
        }

        .top {
            height: 1rem;
            font-size: .5rem;
            background-color: green;
            color: #fff;
            text-align: center;
            line-height: 1rem;
        }

2.3 引入资源(理解)

    <!-- 媒体查询最好从小到大写 -->
    <!-- 引入资源就是针对不同屏幕尺寸,调用不同的css文件 -->
    <link rel="stylesheet" href="style320.css" media="screen and (min-width:320px)">
    <link rel="stylesheet" href="style640.css" media="screen and (min-width:640px)">

3. less基础

3.1 维护css的弊端

3.2 less介绍

3.3 less变量

3.4 less编译

3.5 less嵌套

3.6 less运算

除法运算要加小括号才能算

4. rem适配方案

4.1 rem实际开发

4.2 技术使用

4.3 rem+媒体查询+less

5. 苏宁网首页案例制作

将样式文件导入样式文件中

index.html

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="css/index.css">
    <title>Document</title>
</head>

<body>
    <!-- 顶部搜索框 -->
    <div class="search-content">
        <a href="#" class="classify"></a>
        <div class="search">
            <form action="">
                <input type="search" value="厨卫保暖季">
            </form>
        </div>
        <a href="#" class="login">登录</a>
    </div>
    <!-- banner 部分 -->
    <div class="banner">
        <img src="upload/banner.gif" alt="">
    </div>
    <!-- 广告部分 -->
    <div class="ad">
        <a href="#"><img src="upload/ad1.gif" alt=""></a>
        <a href="#"><img src="upload/ad2.gif" alt=""></a>
        <a href="#"><img src="upload/ad3.gif" alt=""></a>
    </div>
    <!-- nav -->
    <nav>
        <a href="#"><img src="upload/nav1.png" alt=""><span>爆款手机</span></a>
        <a href="#"><img src="upload/nav1.png" alt=""><span>爆款手机</span></a>
        <a href="#"><img src="upload/nav1.png" alt=""><span>爆款手机</span></a>
        <a href="#"><img src="upload/nav1.png" alt=""><span>爆款手机</span></a>
        <a href="#"><img src="upload/nav1.png" alt=""><span>爆款手机</span></a>
        <a href="#"><img src="upload/nav1.png" alt=""><span>爆款手机</span></a>
        <a href="#"><img src="upload/nav1.png" alt=""><span>爆款手机</span></a>
        <a href="#"><img src="upload/nav1.png" alt=""><span>爆款手机</span></a>
        <a href="#"><img src="upload/nav1.png" alt=""><span>爆款手机</span></a>
        <a href="#"><img src="upload/nav1.png" alt=""><span>爆款手机</span></a>
    </nav>
</body>

</html>

common.less

// 设置常见屏幕尺寸,修改里面的html文字大小
a {
    text-decoration: none;
}

html {
    // pc端也可以打开
    font-size: 50px;
}

// 本次定义划分的份数为15
@no: 15;
@media screen and (min-width: 320px) {
    html {
        font-size: (320px / @no);
    }
}

@media screen and (min-width:360px) {
    html {
        font-size: (360px / @no);
    }
}

// 375 iphone 678
@media screen and (min-width:375px) {
    html {
        font-size: (375px / @no);
    }
}

@media screen and (min-width:384px) {
    html {
        font-size: (384px / @no);
    }
}

@media screen and (min-width:400px) {
    html {
        font-size: (400px / @no);
    }
}

@media screen and (min-width:414px) {
    html {
        font-size: (375px / @no);
    }
}

@media screen and (min-width:424px) {
    html {
        font-size: (424px / @no);
    }
}

@media screen and (min-width:480px) {
    html {
        font-size: (480x / @no);
    }
}

@media screen and (min-width:540px) {
    html {
        font-size: (540px / @no);
    }
}

@media screen and (min-width:720px) {
    html {
        font-size: (720px / @no);
    }
}

@media screen and (min-width:750px) {
    html {
        font-size: (750px / @no);
    }
}

index.less

// 将样式文件导入样式文件中
@import "common";

body {
    min-width: 320px;
    width: 15rem;
    margin: 0 auto;
    line-height: 1.5;
    font-family: Arial, Helvetica, sans-serif;
    background: #f2f2f2;
}

// search-content
@baseFont: 50rem;

.search-content {
    display: flex;
    position: fixed;
    top: 0;
    left: 50%;
    transform: translate(-50%);
    width: 15rem;
    height: (88rem / @baseFont);
    background-color: #ffcc01;

    .classify {
        width: (44 / @baseFont);
        height: (70 / @baseFont);
        background: url(../images/classify.png);
        background-size: (44 / @baseFont) (70 / @baseFont);
        margin: (11 / @baseFont) (25 / @baseFont) (7 / @baseFont) (24 / @baseFont);
    }

    .search {
        flex: 1;

        input {
            // 去掉输入时的边框效果
            outline: none;
            width: 100%;
            border: 0;
            height: (66 / @baseFont);
            border-radius: (33 / @baseFont);
            background-color: #fff2cc;
            margin-top: (12 / @baseFont);
            font-size: (25 / @baseFont);
            color: #757575;
            padding-left: (55 / @baseFont);
        }
    }

    .login {
        width: (75 / @baseFont);
        height: (70 / @baseFont);
        margin: (10 / @baseFont);
        font-size: (25 / @baseFont);
        text-align: center;
        color: #fff;
        line-height: (70 / @baseFont);
    }
}

// banner
.banner {
    width: (750 / @baseFont);
    height: (368 / @baseFont);

    img {
        width: 100%;
        height: 100%;
    }
}

// ad
.ad {
    display: flex;

    a {
        flex: 1;

        img {
            width: 100%;
        }
    }
}

// nav
nav {
    width: (750 / @baseFont);

    a {
        float: left;
        width: (150 / @baseFont);
        height: (140 / @baseFont);
        text-align: center;

        img {
            display: block;
            width: (82 / @baseFont);
            height: (82 / @baseFont);
            margin: (10 / @baseFont) auto 0;
        }

        span {
            display: block;
            font-size: (25 / @baseFont);
            color: #333;
            margin-top: 5px;
        }
    }
}

6. rem适配方案2

flexible.js + rem

插件 cssrem 可以将px转换成rem;

这个插件默认的html文字大小 cssroot  16px;

在设置中搜索设置 cssroot ,将工作区的font size 设置为想要的。

index.html

<!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">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="css/index.css">
    <!-- 引入我们的flexible.js 文件 -->
    <script src="js/flexible.js"></script>
    <title>Document</title>
</head>

<body>
    <div class="search-content">
        <a href="#" class="classify"></a>
        <div class="search">
            <form action="">
                <input type="search" value="rem适配方案2很开心哦">
            </form>
        </div>
        <a href="#" class="login">登录</a>
    </div>
</body>

</html>

index.css

body {
    min-width: 320px;
    max-width: 750px;
    /* flexible 给我们划分了 10 等份 */
    width: 10rem;
    margin: 0 auto;
    line-height: 1.5;
    font-family: Arial, Helvetica;
    background: #f2f2f2;

}

a {
    text-decoration: none;
    font-size: .333333rem;
}


/* 这个插件默认的html文字大小 cssroot  16px */


/* 
img {
    width: 5.125rem;
    height: 4rem;
    width: 1rem;
    width: 1.093333rem;
    height: 1rem;
} */


/* 如果我们的屏幕超过了 750px  那么我们就按照 750设计稿来走 不会让我们页面超过750px */

@media screen and (min-width: 750px) {
    html {
        font-size: 75px !important;
    }
}


/* search-content */

.search-content {
    display: flex;
    position: fixed;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 10rem;
    height: 1.173333rem;
    background-color: #FFC001;
}

.classify {
    width: .586667rem;
    height: .933333rem;
    margin: .146667rem .333333rem .133333rem;
    background: url(../images/classify.png) no-repeat;
    background-size: .586667rem .933333rem;
}

.search {
    flex: 1;
}

.search input {
    outline: none;
    border: 0;
    width: 100%;
    height: .88rem;
    font-size: .333333rem;
    background-color: #FFF2CC;
    margin-top: .133333rem;
    border-radius: .44rem;
    color: #757575;
    padding-left: .733333rem;
}

.login {
    width: 1rem;
    height: .933333rem;
    margin: .133333rem;
    color: #fff;
    text-align: center;
    line-height: .933333rem;
    font-size: .333333rem;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字电子技术基础(二十六)——TTL门电路的输入特性和扇出系数

1 TTL门电路的输入特性 如下图所示为输入端伏安特性曲线的测试电路&#xff1a; 图1 输入端伏安特性曲线测试电路 以流入输入端的方向作为输入电流的参考方向&#xff0c;调节测试电路当中&#xff0c;电位器滑动端的位置&#xff0c;可以为这个与非门的B输入端提供一个可调的…

DeepSeek-R1本地化部署(Mac)

一、下载 Ollama 本地化部署需要用到 Ollama&#xff0c;它能支持很多大模型。官方网站&#xff1a;https://ollama.com/ 点击 Download 即可&#xff0c;支持macOS,Linux 和 Windows&#xff1b;我下载的是 mac 版本&#xff0c;要求macOS 11 Big Sur or later&#xff0c;Ol…

tp8 + easywechat6.17 token 验证失败

按照文档死活不行&#xff1a; 调整为以下就成功了&#xff08;return也是失败&#xff09;&#xff1a;

C++:入门详解(关于C与C++基本差别)

目录 一.C的第一个程序 二.命名空间&#xff08;namespace&#xff09; 1.命名空间的定义与使用&#xff1a; &#xff08;1&#xff09;命名空间里可以定义变量&#xff0c;函数&#xff0c;结构体等多种类型 &#xff08;2&#xff09;命名空间调用&#xff08;&#xf…

Redis 数据持久化之AOF

AOF&#xff08;Append Only File&#xff09; 以日志的形式来记录每个写操作&#xff0c;将Redis执行过的所有写指令记录下来&#xff08;读操作不记录&#xff09;&#xff0c;只许追加文件但不可以改写文件&#xff0c;redis启动之初会读取该文件重新构建数据&#xff0c;换…

网格图学习(附题单与做题思路)

文章目录 一、DFS 经典题型695. 岛屿的最大面积 二、BFS 经典题型994. 腐烂的橘子**算法选择对照表** 一、DFS 经典题型 岛屿的最大面积 LeetCode 695描述&#xff1a;求网格中最大的陆地连通区域面积解题&#xff1a;DFS 遍历所有相邻陆地&#xff0c;标记已访问关键点&#…

开发者社区测试报告(功能测试+性能测试)

功能测试 测试相关用例 开发者社区功能背景 在当今数字化时代&#xff0c;编程已经成为一项核心技能&#xff0c;越来越多的人开始学习编程&#xff0c;以适应快速变化的科技 环境。基于这一需求&#xff0c;我设计开发了一个类似博客的论坛系统&#xff0c;专注于方便程序员…

pyecharts 中设置 ​Map 图表的宽高

在 pyecharts 中设置 ​Map 图表的宽高&#xff0c;需要通过 InitOpts 初始化参数实现。以下是具体方法&#xff1a; &#x1f3af; 完整代码示例 from pyecharts import options as opts from pyecharts.charts import Map# 创建地图时设置宽高 map_chart (Map(init_optsopt…

FPGA|Verilog-SPI驱动

最近准备蓝桥杯FPGA的竞赛&#xff0c;因为感觉官方出的IIC的驱动代码思路非常好&#xff0c;写的内容非常有逻辑并且规范。也想学习一下SPI的协议&#xff0c;所以准备自己照着写一下。直到我打开他们给出的SPI底层驱动&#xff0c;我整个人傻眼了&#xff0c;我只能说&#x…

python语言总结(持续更新)

本文主要是总结各函数&#xff0c;简单的函数不会给予示例&#xff0c;如果在平日遇到一些新类型将会添加 基础知识 输入与输出 print([要输出的内容])输出函数 input([提示内容]如果输入提示内容会在交互界面显示&#xff0c;用以提示用户)输入函数 注释 # 单行注释符&…

NO.26十六届蓝桥杯备战|字符数组七道练习|islower|isupper|tolower|toupper|strstr(C++)

P5733 【深基6.例1】自动修正 - 洛谷 小写字母 - 32 大写字母 大写字母 32 小写字母 #include <bits/stdc.h> using namespace std;const int N 110; char a[N] { 0 };int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cin >> a;int i 0;while (a…

笔记四:C语言中的文件和文件操作

Faye&#xff1a;只要有正确的伴奏&#xff0c;什么都能变成好旋律。 ---------《寻找天堂》 目录 一、文件介绍 1.1程序文件 1.2 数据文件 1.3 文件名 二、文件的打开和关闭 2.1 文件指针 2.2.文件的打开和关闭 2.3 文件读取结束的判定 三、 文件的顺序读写 3.1 顺序读写…

DeepSeek进阶应用(一):结合Mermaid绘图(流程图、时序图、类图、状态图、甘特图、饼图)

&#x1f31f;前言: 在软件开发、项目管理和系统设计等领域&#xff0c;图表是表达复杂信息的有效工具。随着AI助手如DeepSeek的普及&#xff0c;我们现在可以更轻松地创建各种专业图表。 名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&…

【OneAPI】网页截图API-V2

API简介 生成指定URL的网页截图或缩略图。 旧版本请参考&#xff1a;网页截图 V2版本新增全屏截图、带壳截图等功能&#xff0c;并修复了一些已知问题。 全屏截图&#xff1a; 支持全屏截图&#xff0c;通过设置fullscreentrue来支持全屏截图。全屏模式下&#xff0c;系统…

基于SpringBoot的餐厅点餐管理系统设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

Windows Server 2022:赋能未来,打造智能高效的企业数字基座---免费下载

免费下载地址 Windows Server 2022&#xff1a;赋能未来&#xff0c;打造智能高效的企业数字基座‌ 在数字化转型的浪潮中&#xff0c;企业需要更安全、更灵活、更智能的基础设施支撑。‌Windows Server 2022‌作为微软新一代服务器操作系统&#xff0c;以革新性的技术架构和行…

支持向量简要理解

决策方程符合感知机区分理论&#xff0c;我们基于线性代数来看这满足子空间理论&#xff0c;可以获取得到超平面。 支持向量机的目标是寻找最与超平面最近的点的最大距离&#xff0c;而距离计算如上&#xff0c;符合数学上计算点到线&#xff08;面&#xff09;的距离公式。 …

USB2.0 学习(1)字段和包

目录 1 字段 1.1 包识别字段PID 1.2 地址字段 1.3帧号字段 1.4 数据字段 1.5 CRC字段 2 包 2.1令牌包 2.2帧起始包 2.3数据包 2.4SPLIT包(分割事务包) 2.5握手包 参考 USB包的构成是一个逐层的过程,首先这些串行数据按照特定的规则构成字段,字段是构成包的基本…

AI 人工智能深度解析:从基础到前沿,全面掌握未来科技

AI 人工智能深度解析&#xff1a;从基础到前沿&#xff0c;全面掌握未来科技 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 文章目录 AI 人工智能深度解析…

2025-03-09 学习记录--C/C++-PTA 习题11-1 输出月份英文名

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 裁判测试程序样例&#xff1a; #include <stdio.h>char *getmonth( int n );int main() {int n;char …