小型移动 webApp Demo 知识点整理

包括内容: css初始化、css全局设置、常用meat标签、rem适配、flex布局、相关技巧(手势库使用、多行截字、1像素边线、点击状态、placeholder居中等)

  1. reset 引用 normalize.css

  2. css全局设置 包括字体、行高、默认webkit浏览器属性重置

  3. meta标签(禁用长按下载保存、禁止数字识别为号码等)

  4. rem公式和sass函数(如何根据设计稿换算单位,并且写好sass函数 pxTorem) 参考, Sass基础——Rem与Px的转换

  5. flex布局 参考腾讯isux的 移动端全兼容的flexbox速成班

  6. 单行、多行的截字

  7. 按钮active状态 白色橡树的博客中提到了 模拟按钮hover效果

  8. 手势库使用(hammerJS)

  9. 高清屏1像素边框 移动web 1像素边框 瞧瞧大公司是怎么做的

  10. placeholder属性设置的文字向上偏移的厉害 placeholder属性设置的文字向上偏移的厉害

reset 引用

Normalize介绍 - 下载地址 浏览器支持情况:Chrome, Firefox, Opera, Safari 6+, IE 8+
Normalize.css 是一个可以定制的CSS文件,它让不同的浏览器在渲染网页元素的时候形式更统一。

css全局设置

行高字号颜色什么的就根据项目的视觉规范自己来定义,比较重要的是移动端的字体a链接以及表单元素的初始化样式。

body {font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif; } a,button,input,textarea{ -webkit-tap-highlight-color: rgba(0,0,0,0;) -webkit-user-modify:read-write-plaintext-only; } input[type=number]::-webkit-textfield-decoration-container { background-color: transparent; } input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; } input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; } input{-webkit-appearance:none;}

meta标签

主要是定义了比例苹果全屏显示、状态条颜色、禁止数字识别为电话号码、禁止邮件识别为链接 具体根据需求增加。

<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport"> <meta content="yes" name="apple-mobile-web-app-capable"> <meta content="black" name="apple-mobile-web-app-status-bar-style"> <meta content="telephone=no" name="format-detection"> <meta content="email=no" name="format-detection">

rem公式和sass函数

1、页面加上js (通用代码)
2、根据公式算出数值 (设计稿宽度/320)*20 
3、编写sass函数 函数中 40 就根据公式2算出来的结果 可以参考《Sass基础——Rem与Px的转换》
4、在sass 文件中 直接调用:height:px(492)

//sass 方法
@function px($px){ @return ($px/40)+rem; } 
//js代码
;(function(win, doc){ function change(){ doc.documentElement.style.fontSize=20*doc.documentElement.clientWidth/320+'px'; } change(); win.addEventListener('resize', function(){ change(); }, false); })(window, document);

flex布局

网上关于flex的介绍很多,此处不再展开 参考《移动端全兼容的flexbox速成班》

/* ============================================================flex:定义布局为盒模型flex-v:盒模型垂直布局flex-1:子元素占据剩余的空间flex-align-center:子元素垂直居中flex-pack-center:子元素水平居中flex-pack-justify:子元素两端对齐兼容性:ios 4+、android 2.3+、winphone8+============================================================ */
.flex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;} .flex-v{-webkit-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;} .flex-1{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;} .flex-align-center{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;} .flex-pack-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;} .flex-pack-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}

单行、多行的截字

//单行css截字
div{overflow: hidden;text-overflow:ellipsis;white-space: nowrap;
}
//多行截字
div{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;
}

按钮active状态

自己按照网上的方式做了例子,虽然都有active的效果了,但是响应速度不一样,最快的还是js的方式。

<!DOCTYPE html>
<html>
<head> <meta charset="utf-8"> <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport"> <meta content="yes" name="apple-mobile-web-app-capable"> <meta content="black" name="apple-mobile-web-app-status-bar-style"> <meta content="telephone=no" name="format-detection"> <meta content="email=no" name="format-detection"> <style type="text/css"> a{-webkit-tap-highlight-color: rgba(0,0,0,0);} .btn-blue{display:block;height:42px;line-height:42px;text-align:center;border-radius:4px;font-size:18px;color:#FFFFFF;background-color: #4185F3;} .btn-blue-on{background-color: #357AE8;} </style> </head> <body> <div class="btn-blue">按钮</div> <script type="text/javascript"> var btnBlue = document.querySelector(".btn-blue"); btnBlue.ontouchstart = function(){ this.className = "btn-blue btn-blue-on" } btnBlue.ontouchend = function(){ this.className = "btn-blue" } </script> </body> </html>

手势库使用(hammerJS)

hammer是一个移动端是手势库, http://hammerjs.github.io/ 这是他们的官网,这些英文不是太难,利用翻译软件应该就能轻松学习,具体细节不再展开,只贴一个简单的demo代码吧。

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>hammer.js</title> <style> #div{ width: 100px; height: 100px; background: red;transition:transform 1s; margin:100px auto;} </style> <script src="hammer.min.js"></script> </head> <body> <div id="div"></div> <script type="text/javascript"> var el = document.getElementById('div'); Hammer(el).on('swipeleft',function(e){ // alert('快速左滑成功'); console.log(e.deltaX); el.style.transform='translateX('+e.deltaX+'px)'; }); </script> </body> </html>

高清屏1像素边框)

实现方式很多,主要原理还是通过调整viewpor的缩放比或者将1px的元素压缩0.5来实现,移动web 1像素边框 瞧瞧大公司是怎么做的,文章写得比较详细,看完就能明白了,下边的代码是用 border-images 使用base64的图片实现的。

.border-image-1px {border-width: 1px 0px; -webkit-border-image: url("data:image/png;base64,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") 2 0 stretch; }

placeholder属性设置的文字向上偏移

在查看京东、糯米、美团等一些webapp的时候也发现有苹果和安卓不居中的情况,而且很严重,网上所设置这个属性,但是没有效果并不好,建议使用padding的形式,我抽时间研究研究其他框架后再

//placeholder属性设置的文字向上偏移的厉害    Android4.x部分机型    
inpu{line-height:normal
}

移动端相关知识点汇总资料

  • AlloyTeam 腾讯移动Web前端知识库 《面向亿万用户级的移动端Web解决方案》

  • 腾讯微信支付设计中心白树的博文 【原】移动web资源整理

  • 手Q开发 Mobile开发经验沉淀

  • 移动端开发所需要的一些资源与小技巧

  • 参考白色橡树的移动web资源整理

转载于:https://www.cnblogs.com/sybboy/p/6211167.html

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

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

相关文章

2020计算机领域前沿热门技术,CFP: ICPCSEE 2020 (SCI or EI Indexd) 第6届国际计算机前沿大会...

ICPCSEE 2020第六届国际计算机前沿大会CALL FOR PAPER征稿通知(SCI or EI Indexed)September 18-21,2020Taiyuan, ChinaThe 6th International Conference of Pioneering Computer Scientists, Engineers and Educators(ICPCSEE)2020(http://2020.icpcsee.org) will be held in…

前端学习(2218):react元素渲染之函数式函数式编程

index.js import React from react; import ReactDOM from react-dom; import ./index.css; import App from ./App; import { tsPropertySignature } from babel/types;//<app/>js的普通对象 /*let app < App / >let root document.getElementById(root)let h1…

js 确定主窗体是否存在

if(typeof(window.opener)!object) {alert(主窗体存在)}

aix查看lv_Aix 添加VG,LV并挂载使用

一、 创建VG和删除VG//建VGsmit lvm 或 smit mkvg--Volume Groups--VOLUME GROUP name 【 卷名 】--Physical partition SIZE in megabytes 【1024】--* PHYSICAL VOLUME names 【 ESC4 选硬盘 】//删VG如果上面有lv 需要先关闭vgvaryoffvg emcvgsmit vg--Remove a Volume Grou…

[NOIP2016]愤怒的小鸟 状态压缩dp

题目描述 Kiana最近沉迷于一款神奇的游戏无法自拔。 简单来说&#xff0c;这款游戏是在一个平面上进行的。 有一架弹弓位于(0,0)处&#xff0c;每次Kiana可以用它向第一象限发射一只红色的小鸟&#xff0c;小鸟们的飞行轨迹均为形如yax2bx的曲线&#xff0c;其中a,b是Kiana指定…

前端学习(2217):react元素渲染之时钟

index.js import React from react; import ReactDOM from react-dom; import ./index.css; import App from ./App;//<app/>js的普通对象 /*let app < App / >let root document.getElementById(root)let h1<h1>helloworld<span>我是</span>…

winmail计算机三级,2016年计算机三级网络技术机考模拟题(1)

1、Winmail用户使用0utlook发送邮件时&#xff0c;使用协议是(  )。A&#xff0e;HTTPB&#xff0e;IMAPC&#xff0e;POP3D&#xff0e;SMTP2、子网掩码为255&#xff0e;128&#xff0e;0&#xff0e;0&#xff0c;该掩码又可以写为(  )。A&#xff0e;&#xff0f;8B&am…

SQLServer全文检索无内容

检查全文索引指定表是否设置为自动填充&#xff1a; 全文索引——属性——表/视图点击左侧表&#xff0c;下方跟踪更改改为自动即可。

设计模式6大原则简述

0、前言 这一段时间一直在看设计模式&#xff0c;里面分多次提到几个设计原则&#xff0c;看了几次发现记不清楚&#xff0c;还是得自己动手总结一下吧&#xff0c;把书上的理论先理解写下来再说喽。 1、单一职责原则 定义&#xff1a;不要存在多于一个导致类变更的原因&#x…

前端学习(2216):react元素渲染

index.js import React from react; import ReactDOM from react-dom; import ./index.css; import App from ./App;//<app/>js的普通对象 let app < App / >let root document.getElementById(root)let h1<h1>helloworld<span>我是</span>&l…

SQLServer LIKE 通配符

将通配符作为文字使用 可以将通配符模式匹配字符作为文字字符使用。若要将通配符作为文字字符使用&#xff0c;请将通配符放在方括号中。下表显示了几个使用 LIKE 关键字和 [ ] 通配符的示例。 符号含义 LIKE 5[%] 5% LIKE [_]n _n LIKE [a-cdf] a、b、c、d 或 f LIKE [-acdf] …

计算机应用基础专科作业二,电子科大18秋《计算机应用基础(专科)》在线作业2...

电子科大18秋《计算机应用基础(专科)》在线作业2谋学网http://doc.docsou.com【奥鹏】[电子科技大学]18秋《计算机应用基础(专科)》在线作业2试卷总分:100 得分:100第1题,在浏览网页中&#xff0c;下列可能泄露隐私的是()。A、HTML文件B、文本文件C、CookieD、应用程序第2题,IP…

苹果ipadwps_ipad可以用wps吗?

展开全部可以。Ipad由于采用ARM架构&#xff0c;62616964757a686964616fe59b9ee7ad9431333431346435不能兼容普通PC台式机和笔记本的程序&#xff0c;但可以通过安装由Apple提供的iWork套件进行办公&#xff0c;也可以通过iOS第三方软件预览和编辑Office和PDF文件。而WPS又可以…

【干货分享】前端面试知识点锦集03(JavaScript篇)——附答案

三、JavaScript部分 1、谈谈你对Ajax的理解&#xff1f;(概念、特点、作用) AJAX全称为“Asynchronous JavaScript And XML”&#xff08;异步JavaScript和XML&#xff09; 是指一种创建交互式网页应用的开发技术、改善用户体验&#xff0c;实现无刷新效果。 优点a、不需要插件…

前端学习(2219):react之jsx小案例

import React from react; import ReactDOM from react-dom; import ./index.css; import App from ./App; import { tsPropertySignature } from babel/types;//<app/>js的普通对象 /*let app < App / >let root document.getElementById(root)let h1<h1>…

IL编译反编译

运行VS命令提示反编译到ILildasm /source DemoCrack.exe /out:crack.il 编译il到exeilasm crack.il

spark 不同模式用途_Spark 的四种模式

1.spark主要有四种运行模式&#xff1a;Loca 、standalone、yarn、mesos。1)Local模式&#xff1a;在一台机器上&#xff0c;一般用于开发测试2)standalone模式&#xff1a;完全独立的spark集群&#xff0c;不依赖其他集群&#xff0c;分为Master和work。客户端向Master注册应用…

软件测试人员棘手的问题,软件测试的棘手问题:如何避免重复提交缺陷

对于测试工程师来说&#xff0c;无论是新手还是老手&#xff0c;测试久了&#xff0c;尤其是遇到一些复杂的项目&#xff0c;难免会犯重复提交缺陷的错误。那么问题来了&#xff0c;我们要怎样避免这类诟病呢&#xff1f;换句话说&#xff0c;怎样才能避免缺陷的重复提交&#…

前端学习(2220):react之jsx的样式小案例

import React from react; import ReactDOM from react-dom; import ./index.css; import ./App.css import App from ./App; import { tsPropertySignature } from babel/types;//<app/>js的普通对象 /*let app < App / >let root document.getElementById(root…

.Net DES加密解密(不带向量)

/// <summary>/// DES加密字符串/// </summary>/// <param name"encryptString">待加密的字符串</param>/// <param name"Key">密钥</param>/// <returns>加密成功返回加密后的字符串&#xff0c;失败返回源串&…