移动端布局的心得

1.字体大小 font-sizepx/em/rem

  • px像素
  • em:根据父级的字体大小有关,1em表示是父级字体大小一致
  • rem:根据html标签的字体大小有关,1rem表示和html标签字体大小一致,默认16px,
  • rem:设置 nrem.表示把字体大小设置成和html标签的字体大小n陪,如果html没有设置则默认font-size:16px;

2.自定义字体:字体名字2字体src:url+format

<style>
     @font-face{
font-family:"demo字体";
src:url("路径地址") fromat("truetype"‘);
       }
     .customFont{
       font-family:"demo字体";
     }

</style>
<p>one</p>
<p class=‘customFont‘>two</p>

3.  居中适配的问题


//第一种方法

.box{


//先写旧版flex,在适配新版


display: -webkit-box;


//设置水平居中


-webkit-box-pack: center;


//设置垂直居中


-webkit-box-align: center;


//适配新版flex


display: -webkit-flex;;


display: flex


//设置水平居中


-webkit-justify-content: center;


justify-content: center;


//设置垂直居中


-webkit-align-items: center;


align-items: center;



/* 在移动web中,使用flex布局的时候,为了让渲染效果更好,先写旧版flex,再适配新版 */


}

第二种:calc是css3的属性,但是在安卓UC浏览器中兼容不好,一般不再移动web中使用

父级设置relative

.son{

position: absolute;

left: -webkit-calc(50% - 50px);

left: -moz-calc(50% - 50px)

left: calc(50% - 50px)

top: -webkit-calc(50% - 50px);//需要注意的是,运算符前后都需要保留一个空格;

top: -moz-calc(50% - 50px)

top: calc(50% - 50px)

}

第三种:父级设置relative

box{

position: absolute;

width: 100px;

height: 100px;

left:50%;

top:50%;

-webkit-transform: translate(-50% -50%);-moz-transform: translate(-50% -50%);-ms-transform: translate(-50% -50%);-o-transform: translate(-50% -50%);transform: translate(-50% -50%);}

第四种:

box{

position: absolute;

width: 100px;

height: 100px;

left:50%;

top:50%;

margin-top:-50px;

margin-left:-50px;

}


注意:在定位的时候,一定不要忘了写top、left、right、bottom的值。虽然在有些手机上不写样式不会乱掉,看起来没问题。但是为了确保万一,一定要写上。不要犯这种低级错误。

之前在写移动端的页面的时候就时忘了写这几个属性的值,而是直接用margin-left、margin-top直接定位,结果在发现在苹果手机上出现了样式排版偏移的问题。

  position: absolute/fixed/relative;
     left: 0;
     right: 0;
     bottom: 0;
     top: 0;

4.重点说说弹性布局flex的兼容问题:

弹性布局虽然好用,但兼容性并不太好,除了浏览器实现有差异外,PC与移动端也有差异。

display: flex 与 display: box都用于弹性布局。display: box是2009年的命名,display: flex是2012之后的命名。但display: flex不能完全的向后兼容,有些浏览器不支持。(display: box 很少用)

div{
//2009后的浏览器生效
 display:-webkit-box;
//2011后的浏览器生效
 display:-webkit-flex;
//2012后的浏览器生效
 display:flex;
}

display:flex

PC端:Chrome和Firefox支持度都很好,IE不支持。

移动端:

  • iOS Safari支持,UC支持,微信浏览器不支持
  • Android 原生浏览器 UC 微信都不支持

display:box

PC端:Chrome和Firefox支持度都很好,IE不支持。

移动端:

  • iOS Safari支持,UC支持,微信浏览器不支持
  • Android 原生浏览器 UC 支持

总结起来:IE都不支持,因此这个技术用于移动端是比较理想的,因为移动端的浏览器内核基本为webkit。

.container{
display: -webkit-box; /* Chrome 4+, Safari 3.1, iOS Safari 3.2+ */
display: -moz-box; /* Firefox 17- */
display: -webkit-flex; /* Chrome 21+, Safari 6.1+, iOS Safari 7+, Opera 15/16 */
display: -moz-flex; /* Firefox 18+ */
display: -ms-flexbox; /* IE 10 */
display: flex; /* Chrome 29+, Firefox 22+, IE 11+, Opera 12.1/17/18, Android 4.4+ */
}

5.文本溢出隐藏显示省略号

单行语法:

.text{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

多行语法:

.text {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

直接用css属性设置(只有-webkit内核才有作用)

移动端浏览器绝大部分是WebKit内核的,所以该方法适用于移动端;

  • -webkit-line-clamp 用来限制在一个块元素显示的文本的行数,这是一个不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。
  • display: -webkit-box 将对象作为弹性伸缩盒子模型显示 。
  • -webkit-box-orient 设置或检索伸缩盒对象的子元素的排列方式 。
  • text-overflow: ellipsis 以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本

6. 移动web触动事件

6.1on和addEventListener

1.写法上addEventListener中的相应事件不用加on前缀(onclick-->click)

2.on事件多次添加,之后执行最后一次,addEventListener事件每次添加都会生效

3.addEventListener:执行顺序是冒泡规则,:从小到大(从儿子到祖宗)

4.addEventListener:事件捕获顺序规则:从大到小(从祖宗到儿子)

addEventListener的参数讲解:

element.addEventListener(event, function, useCapture)

参数1:必须,字符串,指定事件名称,不需加on

参数2:必须,function,指定要事件触发时执行的函数

参数3:可选,布尔值,指定事件是否捕获或者冒泡阶段执行

true:事件句柄在捕获阶段执行

false:默认,事件在冒泡阶段执行

这篇文章讲的很详细两者的区别

6.2使用addEventListener添加事件监听

addEventListener(‘touchstart‘,function(e){})

表示手触碰到屏幕是触发,不管当前有多少只手指

addEventListener(‘touchmove‘,function(e){})

表示手触动在屏幕上滑动时触发e.preventDefault()来阻止默认触发的页面滚动事件

addEventListener(‘touchend‘,function(e){})

表示手离开屏幕时触发

addEventListener(‘touchmove‘,function(e){
console.log(e.target); //表示手触动的当前元素对象
console.log(e.touches); //页面上的所有触摸点
console.log(e.touches[0]); //touches[0]触摸点的第一个元素有许多可以使用的参数
})

event事件的参数

targetTouches 目标元素的所有当前触摸点

changedTouches 页面上最新更改的所有触摸点

touches 页面上的所有触摸点

touches[0]里面有以下属性

在每个触摸点中我们可以获取以下属性

- clientX:触摸目标在视口中的X坐标。

- clientY:触摸目标在视口中的Y坐标。

- pageX:触摸目标在页面中的x坐标。

- pageY:触摸目标在页面中的y坐标。

- screenX:触摸目标在屏幕中的x坐标。

- screenY:触摸目标在屏幕中的y坐标。

- target:触摸的DOM节点坐标

原文地址:https://www.cnblogs.com/mumusen/p/8509531.html

时间: 2024-10-12 17:05:28

移动端布局的心得的相关文章

移动端布局解决方案+神器

godcss 移动端布局终极解决方案+神器--- 让移动端布局开发更加容易 http:/www.github.com/godcss/ 介绍 godcss不是一个库,也不是一个框架.它是一个移动端布局开发解决方案.使用godcss可以让移动端布局开发更容易. 使用动态的HTML根字体大小和动态的viewport scale. 遵循视觉一致性原则.在不同大小的屏幕和不同的设备像素密度下,让你的页面看起来是一样的. 不仅便捷了你的布局,同时它使用起来异常简单.可能你会说 talk is cheap,s

响应式布局和移动端布局

响应式布局就是响应式设计方案呈现的效果.具体就是页面的布局会根据不同设备的显示面积(主要是宽度)的不同而呈现不同的布局,这个效果是比弹性的布局更好的地方是样式会主动地根据用户的设备的显示面积呈现的布局更灵活,可读性更强.当然对研发的要求也更高(比如说如何更好地让图片,适配,UI动画自适应各种布局).响应式设计一般来说是一套设计方案解决所有的设备的自适应问题.对应的样式文件可能是多个,也可以只写一个(在一个css文件声明不同的media query就可以). 移动端布局就是传统的固定宽度或者弹性布

移动端布局方案 网易

移动端布局: rem方案:页面中的任何元素都采用rem布局,包括字体. 1 <!DOCTYPE html> 2 <html lang="zh-CN"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 7 <me

移动端布局Demo测试

上两张图自勉一下(来自刘墉先生的文章,最近看他的作品):然后移动端该愈来愈受到重视,未来的市场我不知道,不过我知道手机的功能越来越强大是不争的事实!移动端布局的积累也需要从现在做起!                                需求一:实现下图效果,注意不同手机的型号:原生称为适配,我们称为自适应不变形 思路一:btn+ima布局风格 <div class="row margin-top"> <div class="col-sm-12&qu

移动端布局使用哪种单位比较好?

关于移动端布局使用哪种单位,每个人都有自己习惯使用的单位,这个也只是我个人的一点点浅见. 欢迎大家指点. 很多人在谈到写移动端页面的时候,都觉得很恼火.因为要写n套css样式.然后用媒体查询做适配. 一般这个时候我都表示自己懵懵哒,搞不懂为什么要写这么多套.可能是由于我经验不够,所以看不出来写这么多套有什么深意. 我认为在移动端可以做到适配不同的手机分辨率,如果只是保持整体缩放,没有设计上的差异可以不需要用到`media query`. 下面说说我习惯使用的单位:em,rem,% 1.em em

移动端布局总结

最近做了几个移动端的项目,因为第一次接触移动端的布局,所以踩了几个坑,今天总结一下,有不对的地方欢迎大家提意见. 移动端布局需要考虑为不同分辨率的设备都提供一个出色的使用体验,下面我来总结一下移动端布局的方法. 借助库 比如Bootstrap和MUI都可以实现自适应布局,借助于他们定义好的样式,我们很少需要自己重新写样式,节省了大量的开发时间,推荐使用.在样式不能满足要求的情况下,再自己重写样式. 允许网页宽度自动调整 首先要想自适应必须加入一行viewport标签: <meta name=&quo

rem与移动端布局

移动端布局痛点在:兼容各个分辨率的移动设备,同样是手机,iPhone4-iPhoneX分辨率范围就已经很广:如果使用px进行布局,显然会出现问题: 常见的像素单位px,em,rem中,em是相对于父元素font-size的单位,个人认为在使用中,em会比较混乱:rem相对的是根元素.HTML,便于根据屏幕分辨率进行布局: 目前移动端布局采用的方式:  “横向百分比 + 纵向rem”,同时使用flex布局,媒体查询: https://www.cnblogs.com/ysshuai/p/669433

vw结合rem实现移动端布局

继上一篇<媒体查询结合rem实现移动端布局>的改进! 还是以昨天写的页面为例 上一回说到了媒体查询结合rem做移动端布局,步骤如下 首先设置媒体查询,确定html中font-size值的变化 @media all and (max-width:320px){ html{font-size:12px;} } @media all and (min-width:321px) and (max-width:375px){ html{font-size:14px;} } @media all and

精通移动端布局 - 概念篇 -

本文大多数的内容基本都是从多篇博客或相关文章中进行筛选,提炼出来,原本我也想用我匮乏的语言来描述,但是发现别人已经总结的更好了,所以...我还是乖乖的站在巨人的肩膀上吧~~ 完整目录: 基本概念    物理像素    设备独立像素    CSS 像素    PPI的概念    DPR的概念    缩放的概念    viewPort 的概念    viewport 渲染流程    Meta 标签说明 移动端布局实践    混合方式    REM 方式        响应式        JS自动换