前端html原生页面兼容多端H5和移动端适配方案

2023-09-14 16:24:44

图片

是一个注册页面
请添加图片描述

代码

自己查看效果

注意: 单位全部用rem这样才能保证兼容性适配多端,px转rem转换公式
1px = 1/37.5rem
所以想要20px应该对应20/37.5 = 0.53rem

<!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" />
		<title>注册五福亿家</title>
		<style>
			* {
				margin: 0;
				padding: 0
			}

			/* 但这样我们会发现在写布局的时候会非常复杂,也就是你需要自己手动去计算一下对应的rem值,
比如上面的font-size设计稿上是20px,那我们就要计算一下20px对应的rem是多少,
按我们上面的规则,1px = 1/37.5rem,所以20px应该对应20/37.5 = 0.53rem */

			.register {
				width: 10rem;
				height: 4rem;
				/* background-color: antiquewhite; */
				/* 18px 以18px字体为基准*/
				font-size: 0.48rem;
			}

			.register_box {
				padding: 0.4rem 0.98rem;
				box-sizing: border-box;
			}

			.register_nav {
				padding: 2.4rem 0;
				padding-bottom: 1.46rem;
			}

			.title {
				font-size: 0.69rem;
				font-weight: 600;
				margin-bottom: 0.42rem;
			}

			.register_form {
				display: flex;
				flex-direction: column;
			}

			.form_list {
				display: flex;
				align-items: center;
			}

			.form_list_tit {
				font-size: 0.45rem;
				/* 	position: relative;
				bottom: 1px; */
				width: 3rem;
			}

			.form_list_ipt {
				width: 4.96rem;
				height: 1.2rem;
				border-bottom: 0.02rem solid #f4f4f4;
				/* border: 0.02rem solid red; */
				display: flex;
				justify-content: center;
			}

			.form_list_ipt input {
				outline: none;
				background: transparent;
				border: none;
				outline: medium;
				width: 100%;
				/* font-size: 0.45rem; */
			}

			// 当输入框获取焦点时
			.form_list_ipt input:focus {
				outline: none;
				background-color: transparent;
			}

			// 选择输入文本时,默认蓝色,改为透明
			::selection {
				background: transparent;
			}

			::-moz-selection {
				background: rgb(241, 241, 241);
			}


			/* 阅读 */
			.read {
				padding-top: 0.4rem;
				display: flex;
				flex-direction: row;
				align-items: center;
			}

			.read_size {
				font-size: 0.1rem;
				color: f4f4f4;
			}

			.read_size_grn {
				font-size: 0.1rem;
				color: rgb(26, 173, 88);
			}

			.read_size_radio {
				margin-right: 0.1rem;
			}

			.read_size_rgt {
				margin-right: 0.1rem;
			}

			#registerBtn {
				width: 100%;
				height: 1.2rem;
				line-height: 1.2rem;
				font-size: 0.45rem;
				border-radius: 0.58rem;
				color: #ffffff;
				background-color: #19ad57;
				margin: 0.4rem 0;
				text-align: center;
			}
		</style>
		<script>
			function setRootRem() {
				const root = document.documentElement;
				/** 以iPhone6为例:布局视口为375px,我们把它分成10份,则1rem = 37.5px,
				 * 这时UI给定一个元素的宽为375px(设备独立像素),
				 * 我们只需要将它设置为375 / 37.5 = 10rem。
				 */
				const scale = root.clientWidth / 10
				root.style.fontSize = scale + 'px'
			}
			setRootRem()
			window.addEventListener('resize', setRootRem)
		</script>
	</head>
	<body>
		<div class="register">
			<div class="register_box">
				<div class="register_nav">
					<div class="title">
						注册五福亿家
					</div>
				</div>
				<div class="register_form">
					<div class="form_list">
						<div class="form_list_tit">手机号</div>
						<div class="form_list_ipt">
							<input type="number" id="mobile" placeholder="请填写手机号">
						</div>
					</div>

					<div class="form_list">
						<div class="form_list_tit">昵称</div>
						<div class="form_list_ipt">
							<input type="text" id="nick_name" placeholder="请填写昵称">
						</div>
					</div>

					<div class="form_list">
						<div class="form_list_tit">推荐人</div>
						<div class="form_list_ipt">
							<input type="number" id="referee_id" placeholder="请填写推荐人">
							<!-- <input type="number" id="input"> -->
						</div>
					</div>

					<div class="form_list">
						<div class="form_list_tit">登录密码</div>
						<div class="form_list_ipt">
							<input type="password" id="password" placeholder="请填写登录密码">
						</div>
					</div>

					<div class="form_list">
						<div class="form_list_tit">确认登录密码</div>
						<div class="form_list_ipt">
							<input type="password" id="repassword" placeholder="请填写确认登录密码">
						</div>
					</div>

					<div class="form_list">
						<div class="form_list_tit">支付密码</div>
						<div class="form_list_ipt">
							<input type="password" id="pay_password" placeholder="请填写支付密码">
						</div>
					</div>

					<div class="form_list">
						<div class="form_list_tit">确认支付密码</div>
						<div class="form_list_ipt">
							<input type="password" id="repay_password" placeholder="请填写确认支付密码">
						</div>
					</div>
				</div>

				<div class="read">
					<div class="read_size read_size_radio">
						<input type="radio" checked>
					</div>
					<div class="read_size read_size_rgt">
						我已阅读并接受
					</div>
					<div class="read_size_grn">
						《用户协议》
					</div>
					<div class="read_size"></div>
					<div class="read_size_grn">
						《隐私政策》
					</div>
				</div>


				<div id="registerBtn">
					注册
				</div>
			</div>
		</div>
	</body>
	<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></script>
	<script>
		var mobile = document.getElementById('mobile');
		var nick_name = document.getElementById('nick_name');
		var referee_id = document.getElementById('referee_id');
		var password = document.getElementById('password');
		var repassword = document.getElementById('repassword');
		var pay_password = document.getElementById('pay_password');
		var repay_password = document.getElementById('repay_password');

		var registerBtn = document.getElementById('registerBtn');
		
		registerBtn.onclick = function() {

				var mobiles = mobile.value;
				var nickName = nick_name.value;
				var refereeId = referee_id.value;
				var passwords = password.value;
				var repasswords = repassword.value;
				var payPassword = pay_password.value;
				var repayPassword = repay_password.value;


				// 验证  
				if (!mobiles || !nickName || !refereeId || !passwords || !repasswords || !payPassword || !repayPassword) {
					// alert('账号或密码不能为空')
					alert('请输入,不能为空')
					return
				}
				
				// 提交数据  
				$.ajax({
					type:"POST",
					url:'https://wfyj.yunjingwl.com/index.php/api/user.useropen/register',
					data: {
						app_id: 10001,
						mobile: mobiles,
						nick_name: nickName,
						referee_id: refereeId,
						password: passwords,
						repassword: repasswords,
						pay_password: payPassword,
						repay_password: repayPassword,
						// type: 'add',
					},
					// https://www.cnblogs.com/hanguidong/p/9442927.html // 用JSON来传数据,靠JSONP来跨域
					// dataType: 'JSONP',
					dataType: 'JSON',
					// Headers:{
					// 	"Access-Control-Allow-Origin":'*'
					// },
					
					crossDomain: true,
					success: function(json) {
						alert(json.msg)
					},
					error: function(code) {
						alert(code)
					}
				})
			}
	</script>
</html>

最后

感觉文章好的话记得点个心心和关注和收藏,有错的地方麻烦指正一下,如果需要转载,请标明出处,多谢!!!

更多推荐

网站整站优化-网站整站优化工具

您是否曾为您的网站在搜索引擎中的排名而感到焦虑?是否苦苦思考如何提高流量、吸引更多用户?什么是整站优化。简而言之,它是一项用于提升网站在搜索引擎中排名的策略和技巧。通过对网站的内容、结构、速度等方面进行优化,可以使网站更容易被搜索引擎收录,从而提高在搜索结果中的排名。而147SEO工具是一款为您提供整站优化解决方案的强

【C++】搜索二叉树底层实现

目录一,概念二,实现分析1.插入(1.)非递归版本(2.)递归版本2.打印搜索二叉树3.查找函数(1.)非递归版本(2.)递归版本4.删除函数(重难点)易错点分析,包你学会(1.)删除目标,没有左右孩子(2.)删除目标,只有一个孩子(3.)删除目标,有两个孩子代码(1.)非递归版本(2.)递归版本5.析构函数6.拷贝构

两数之和 三数之和【基础算法精讲 01】

灵神算法基础算法精讲[01]:两数之和三数之和【基础算法精讲01】_哔哩哔哩_bilibili167.两数之和II-输入有序数组链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台思路:采用双指针的思想,因为给出的数组是有序的,n=len(numbers),定l=0,r=n-1;如果s=numbers[l]+

监控数据的采集方式及原理

采集方法使用频率从高到低依次是读取/proc目录、执行命令行工具、远程黑盒探测、拉取特定协议的数据、连接到目标对象执行命令、代码埋点、日志解析。读取/proc目录/proc是一个位于内存中的伪文件系统,而在该目录下保存的不是真正的文件和目录,而是一些“运行时”信息,Linux操作系统层面的很多监控数据,比如内存数据、网

Go编程规范

文章目录注释转义符定义变量方法一:指定变量类型,声明后若不赋值,使用默认值方法二:根据值自行判定变量类型(类型推导)方法三:省略var,注意:=左侧的变量不应该是已经声明过的,否则会导致编译错误[`推荐`]全局变量和局部变量fmt.Printf查看变量常量iota定义函数多行书写参考注释//单行注释/*多行注释第一行第

javabean项目专项练习(1) 文字格斗游戏

main中是这样写的如下是character类的描述总结一下(个人):这是一题面向对象的编程,个人编程后感是:核心就是在于自己会不会取定义一个类,如果是多个对象(同一个类),能不能捋顺类的方法的关系,个人觉得黑马程序员up主给出来的分析方法特别好用.步骤:先把在类里该该弄得弄好,然后看题目需求的打印方法,我们可以根据题

idea Terminal 回退历史版本 Git指令 git reset

——————强制回滚历史版本——————一、ideaTerminal第一步:复制版本号(右击项目–>Git-->ShowHistory-->选中要回退的版本–>CopyRevisionNumber,直接复制;)第二步:ideaTerminal(确认项目)输入指令:gitreset--hard版本号示例:gitreset

【计算机组成原理】第一章部分课后题

冯·诺依曼型计算机的主要设计思想是什么?它包括哪些主要组成部分?冯·诺依曼型汁算机的其本没计思想为:①以二进制形式表示指令和数据②程序和数据事先放在存储器中,计算机在工作时够高速地从存储器中取出指令加以执行③由运算器、控制器、存储器、输入设备和输出设备五大部分组成计算机硬件系统它的主要组成部分为:运算器、控制器、存储器

数据治理-分类法

分类法是一种命名结构,包含用于概述主题、启用导航和搜索系统的受控词表。分类法有助于减少歧义并控制同义词,层次分类法包含了对索引者和搜索者都有帮助的多种类型的父/子关系。这样的分类法常用于向下扩展分类。分类法可以有多种不同的结构:扁平分类法:在受控类别集之间没有关系,所有类别都是平等的。这类似于列表。例如,一个包含多个多

[CISCN 2019 初赛]Love Math 通过进制转换执行命令

目录hex2binbin2hexbase_convert动态函数第一种解法通过get获取参数绕过第二种解法读取请求头getallheadersechoa,b第三种解法异或获得更多字符这道题也是很有意思!通过规定白名单和黑名单指定了函数为数学函数并且参数也只能是规定在白名单中的参数我们首先要了解通过进制转换执行命令的第一

【论文基本功】【LaTeX】个人常用易忘LaTeX命令

【论文基本功】【LaTeX】个人常用易忘LaTeX命令1.基本符号2.引用3.字体及符号大小4.其他参考1.基本符号符号LaTeX命令备注∣⋅∣|\cdot|∣⋅∣|\cdot|绝对值∣∣⋅∣∣||\cdot||∣∣⋅∣∣\|\cdot\|范数⌈⋅⌉\lceil\cdot\rceil⌈⋅⌉\lceil\cdot\rce

热文推荐