前端案例:极速问诊项目(移动端自适应)(HTML+CSS+JS)

news2024/12/26 9:22:16

一个简单的移动端案例,模拟不同设备下逻辑分辨率不同,宽高自适应

正常打开整体布局

打开 f12 (ctrl + shift + M)或者点击左上角图标,将其模拟为移动端设备

在移动设备iPhone6/7/8,逻辑分辨率375的整体布局

其banner图尺寸

                

现在切换设备为iPad,逻辑分辨率为768,此设备下banner图尺寸自适应

                   

再切换设备为iPhone 14 Pro Max,逻辑分辨率为430,此设备下banner图尺寸自适应

            

源码

HTML(index.html)代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>极速问诊</title>
    <link rel="stylesheet" href="./iconfont/iconfont.css">
    <link rel="stylesheet" href="./css/index.css">
</head>
<body>
    <!-- 头部区域 -->
    <header>
        <a href="#" class="back"><span class="iconfont icon-jiantou3"></span></a>
        <h3>极速问诊</h3>
        <a href="#" class="note">问诊记录</a>
    </header>

    <!-- banner区域 -->
    <div class="banner">
        <img src="./assets/docter.jpg" alt="">
        <p><span>20s</span> 快速匹配专业医生</p>
    </div>

    <!-- 问诊类型 -->
    <div class="type">
        <ul>
            <li>
                <a href="#">
                    <span class="iconfont icon-yisheng"></span>
                    <div class="txt">
                        <h4>三甲图文问诊</h4>
                        <p>三甲主治及以上级别医生</p>
                    </div>
                    <span class="iconfont icon-jiantou21"></span>
                </a>
            </li>
            <li>
                <a href="#">
                    <span class="iconfont icon-xinxi1"></span>
                    <div class="txt">
                        <h4>普通图文问诊</h4>
                        <p>二甲主治及以上级别医生</p>
                    </div>
                    <span class="iconfont icon-jiantou21"></span>
                </a>
            </li>
        </ul>
    </div>
    <!-- 引入flexible.js移动端布局js -->
    <script src="./js/flexible.js"></script>
</body>
</html>

CSS样式(index.css)代码:

*,
::after,
::before {
  box-sizing: border-box;
}
body,
ul,
ol,
p,
h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 0;
  padding: 0;
}
body {
  font-family: -apple-system, BlinkMacSystemFont, PingFangSC-Regular, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 14px;
  color: #333;
}
a {
  color: #333;
  text-decoration: none;
  -webkit-tap-highlight-color: regb(0, 0, 0, 0);
}
ul {
  list-style-type: none;
}
li {
  list-style: none;
}
img {
  vertical-align: bottom;
}
header {
  display: flex;
  justify-content: space-between;
  padding: 0 0.4rem;
  height: 1.17333333rem;
  line-height: 1.17333333rem;
}
header .icon-jiantou3 {
  font-size: 0.48rem;
}
header h3 {
  font-size: 0.45333333rem;
}
header .note {
  font-size: 0.4rem;
  color: #2cb2a5;
}
.banner {
  margin-top: 0.8rem;
  margin-bottom: 0.90666667rem;
  text-align: center;
}
.banner img {
  margin-bottom: 0.48rem;
  width: 6.4rem;
  height: 5.49333333rem;
}
.banner p {
  font-size: 0.42666667rem;
}
.banner p span {
  color: #16c2a3;
}
.type {
  padding: 0 0.4rem;
}
.type li {
  margin-bottom: 0.4rem;
  padding: 0 0.4rem;
  height: 2.08rem;
  border: 0.5px solid #ededed;
  border-radius: 0.10666667rem;
}
.type a {
  display: flex;
  align-items: center;
  height: 2.08rem;
}
.type a .icon-yisheng,
.type a .icon-xinxi1 {
  margin-right: 0.37333333rem;
  width: 1.06666667rem;
  height: 1.06666667rem;
  border-radius: 50%;
  line-height: 1.06666667rem;
  text-align: center;
  font-size: 0.64rem;
  color: #faf5f5;
}
.type a .icon-yisheng {
  background-color: #16c2a3;
  background-image: linear-gradient(to right bottom, #a3eddf, #41c2aa);
}
.type a .icon-xinxi1 {
  background-color: aqua;
  background-image: linear-gradient(to right bottom, #97c4f3, #6c8dde);
}
.type a .txt {
  flex: 1;
}
.type a .txt h4 {
  margin-bottom: 0.13333333rem;
  font-size: 0.42666667rem;
  color: #3c3e42;
  line-height: 0.64rem;
}
.type a .txt p {
  font-size: 0.34666667rem;
  color: #848484;
  line-height: 0.53333333rem;
}
.type a .icon-jiantou21 {
  font-size: 0.42666667rem;
}

JS(flexible.js)代码:

(function flexible(window, document) {
    //获取html根目录
    var docEl = document.documentElement
        //dpr 物理像素比
    var dpr = window.devicePixelRatio || 1

    // adjust body font size 设置body字体大小
    function setBodyFontSize() {
        if (document.body) {
            document.body.style.fontSize = (12 * dpr) + 'px'
        } else {
            //如果页面没有body 这个元素,则只用DOMContentLoaded 监听,等待 DOM 元素加载完毕
            document.addEventListener('DOMContentLoaded', setBodyFontSize)
        }
    }
    setBodyFontSize();

    // set 1rem = viewWidth / 10 设置html 元素字体大小
    function setRemUnit() {
        var rem = docEl.clientWidth / 10
        docEl.style.fontSize = rem + 'px'
    }

    setRemUnit()

    // reset rem unit on page resize 当页面尺寸大小发生改变时,重新设置一下rem大小。
    window.addEventListener('resize', setRemUnit)
        //pageshow 是我们重新加载页面触发的事件
    window.addEventListener('pageshow', function(e) {
        //e.persisted 返回的是 true 就是如果这个页面从缓存中获取过来,也要重新设置rem大小
        if (e.persisted) {
            setRemUnit()
        }
    })

    // detect 0.5px supports 解决移动端浏览器支持0.5像素
    if (dpr >= 2) {
        var fakeBody = document.createElement('body')
        var testElement = document.createElement('div')
        testElement.style.border = '.5px solid transparent'
        fakeBody.appendChild(testElement)
        docEl.appendChild(fakeBody)
        if (testElement.offsetHeight === 1) {
            docEl.classList.add('hairlines')
        }
        docEl.removeChild(fakeBody)
    }
}(window, document))

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

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

相关文章

1.9万亿字节跳动,没钱了?

字节再融资 近期投行圈热度最高的事情&#xff0c;是字节跳动正在积极与相关金融机构展开洽谈&#xff0c;期望对其现有的 50 亿美元贷款进行再融资&#xff0c;期限三年。 若是再融资能成&#xff0c;大概率会成为中国借款人年内进行的最大规模贷款再融资交易事件。 这下可好了…

Cesium for Unreal 打包像素流去掉 CLICK TO START

文章目录 1. 像素流去掉 CLICK TO START问题分析1. 像素流去掉 CLICK TO START 问题 分析 在后缀添加参数:MatchViewportRes=true&HoveringMouse=true 例如: http://192.168.0.106:5027/?MatchViewportRes=true&HoveringMouse

【课程总结】day24(上):大模型三阶段训练方法(LLaMa Factory)

前言 本章我们将通过 LLaMA-Factory 具体实践大模型训练的三个阶段&#xff0c;包括&#xff1a;预训练、监督微调和偏好纠正。 大模型训练回顾 训练目标 训练一个医疗大模型 训练过程实施 准备训练框架 LLaMA Factory是一款开源低代码大模型微调框架&#xff0c;集成了业…

Spring Security 01.两个功能

在 Spring Security 的架构设计中&#xff0c;认证&#xff08;Authentication&#xff09;和授权&#xff08;Authorization&#xff09;是分开 的&#xff0c;在本书后面的章节中读者可以看到&#xff0c;无论使用什么样的认证方式&#xff0c;都不会影响授权&#xff0c;这是…

国际网络组网如何布署?

国际网络组网的布署涉及多个关键的步骤和注意事项&#xff0c;以确保网络的可靠性、可扩展性和安全性。通过深入分析网络需求、基础设施选择、网络设备配置、数据安全及灾难恢复计划等方面&#xff0c;可以实现有效的国际网络组网布署。 在网络需求分析的阶段&#xff0c;首先需…

Flow Simulator 案例分享:换热器的一维仿真

换热器的 CFD 仿真 换热器广泛用于动力设备、空调系统和电子设备等冷、热介质的热量交换。由于结构上存在大量的管束和翅片结构&#xff0c;在 CFD 仿真中通常不会创建全细节模型&#xff0c;而是采用多孔介质和换热效率模型来简化。 各种类型的换热器 Flow Simulator中的换热器…

探索Python的隐秘武器:itsdangerous的威力与妙用

文章目录 **探索Python的隐秘武器&#xff1a;itsdangerous的威力与妙用**第一部分&#xff1a;背景介绍第二部分&#xff1a;itsdangerous是什么&#xff1f;第三部分&#xff1a;如何安装itsdangerous&#xff1f;第四部分&#xff1a;itsdangerous的五个简单函数第五部分&am…

DVWA中文件上传漏洞之High渗透测试

1、代码分析 我们可以看到DVWA中文件上传漏洞的代码&#xff0c;现在我们对这个进行渗透测试。 方法1&#xff1a;直接用脚本改成图片格式看是否可行。改成jpg或者jpeg或者png 通过这种方式&#xff0c;我们发现上传的时候会被拦截&#xff0c;所以这个方式不可取 方法2&…

【MATLAB源码-第248期】基于matlab的EMD算法+ICA算法轴承故障分析。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 经验模态分解&#xff08;EMD&#xff09;与轴承故障识别 EMD的基本原理 EMD 是一种自适应的信号分解技术&#xff0c;最初由 Huang 等人在 1998 年提出&#xff0c;旨在分析非线性和非平稳信号。传统的信号处理方法通常假…

Spring框架的应用(面试题)

目录 14. Spring框架中的Bean的作用域 通过XML方式设置bean的作用域 通过注解方式设置bean的作用域 15. Spring框架中的Bean的线程安全 16.Spring 框架中的Bean生命周期 17.Spring 框架如何解决循环依赖? 18.Spring 框架中有哪些注解? 19.Spring 框架中用到的设计模式…

uniapp在线下载安装包更新app

首先用getSystemInfo判断平台、 再通过json文件模拟接口 判断版本号是否一致 不一致则下载服务器apk进行更新 外加网络波动导致失败重新下载更新包 uni.getSystemInfo({success: function (e) {// #ifndef H5// 获取手机系统版本const system e.system.toLowerCase();const pl…

博世(BOSCH)× Milvus:智能驾驶领域的数据挖掘革新

01.博世智能驾控&#xff1a;智能驾驶技术的领航者 博世&#xff08;BOSCH&#xff09;智能驾控是全球汽车技术领域的领导者&#xff0c;以其在自动驾驶技术上的创新和深厚历史而闻名。博世的自动驾驶解决方案&#xff0c;包括先进的驾驶辅助系统&#xff08;ADAS&#xff09;…

四十二、大数据技术之Kafka3.x(5)

&#x1f33b;&#x1f33b; 目录 一、Kafka-Eagle 监控1.1 MySQL 环境准备1.2 Kafka 环境准备1.3 Kafka-Eagle 安装1.4 Kafka-Eagle 页面操作 二、集成 SpringBoot2.1 前期准备2.2 SpringBoot 生产者2.3 SpringBoot 消费者 三、集成 Spark&#xff08;拓展 Scala 语言&#xf…

Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data精读

文章目录 1.摘要2.引言2.相关工作3.Depth Anything3.1 Learning Labeled Images3.2. Unleashing the Power of Unlabeled Images3.3. Semantic-Assisted Perception 4. Experiment4.1. 实施细节4.2. 零样本相对深度估计4.3. 微调至度量深度估计4.3.1 领域内度量深度估计4.3.2 零…

数的个位相加

给定一个非负整数 num&#xff0c;反复将各个位上的数字相加&#xff0c;直到结果为一位数。返回这个结果。 示例 1: 输入: num 38输出: 2 解释: 各位相加的过程为&#xff1a; 38 --> 3 8 --> 11 11 --> 1 1 --> 2 由于 2 是一位数&#xff0c;所以返回 2。…

pytorch分布式训练卡住,显卡占用100

1、问题 使用pytorch进行分布式训练&#xff0c;一机多卡&#xff0c;采用 DistributedDataParallel 方式&#xff0c;多次执行卡在了同一个地方。但是单卡和 DataParallel 方式都没有卡住的现象。 执行nvidia-smi&#xff0c;此时全部GPU利用率均为100%&#xff1a; 2、debug…

【建模与仿真】一文搞定AFSIM

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解【建模与仿真】一文搞定AFSIM&#xff0c;期待与你一同探索、学习、进步&#xff0c;一起卷起来叭&#xff01; 目录 一、CMAKE二、AFSIM前言架构元素核心应用核心架构…

《学会 SpringBoot 系列 · ConfigurableApplicationContext 详解》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

WordPress多用途电子商务博客新闻主题betheme 21.5.6版本

简介&#xff1a; WordPress多用途电子商务博客新闻主题betheme 21.5.6版本 自带500多套模板 BeTheme第一次发布于2014年5月21日&#xff0c;自那时以来&#xff0c;已有数以百万计的人下载了BeTheme&#xff0c;其评分为4.8。 这个主题是WooCommerce支持的&#xff0c;在此…

UniApp第一天

一、官网介绍 1.1、 SDK SDK是"Software Development Kit"的缩写&#xff0c;中文意思是“软件开发工具包”。SDK通常是由软件开发者为其他开发者提供的一个软件工具集合&#xff0c;用于帮助开发者快速开发、测试和部署软件应用。SDK通常包含了一系列的开发工具、库…