你不得不知道的开发技巧-CSS篇


文章同步于 我的 Segmentfault 笔记

1. 关于移动端 css 样式:

1
2
3
4
5
6
7
8
9
10
11
12
// 不允许浏览器擅自改变字体大小:【font boosting】
html{
-webkit-text-size-adjust: 100%;
}
// 否则当你设置了,如:
[data-dpr="3"] span{
font-size: 30px;
}
// 很有可能在 F12控制台看到, 样式浏览器是采用了,但是实际的大小却不是采用的数值30px(有时可尝试给元素添加 max-height:9999999px;)

// 所有的表单元素 input/button/select/option/textarea 出除默认样式和背景
{-webkit-apperance: none}

2. 文字的换行与否(此处使用less语法)

1
2
3
4
5
6
7
8
9
// 换行
.break(){
word-break: break-all;
word-wrap: break-word;
}
// 不换行
.nowrap(){
white-space: nowrap;
}

3. 移动端开发以 rem 作为单位时,难免会出现 1px 的偏差,所有制作雪碧图时,图与图之间应适当留出 2~4px 的间隔隙

(有待验证)

4. 解决iframe在ios设备上无法滚动, 在iframe外包裹一层div并设置其css属性为:

1
2
-webkit-overflow-scrolling:touch;
overflow:auto;

值得注意的是,如果仍未解决。尝试给定 iframe{height: 200px; width: 300px;},且标签上添加属性 <iframe src="xx" scrolling="yes"></iframe>

5. 给按钮增加可点击的热区独特方法

1
2
3
4
5
6
7
8
button:after{
content:"";
position:absolute;
left:-2px;
right:-2px;
bottom:-2px;
top:-2px;
}

6. 给移动端的元素添加被点击(或者长按)的效果,不需要使用 js

1
2
3
div:active{
background: #666
}

只添加上面的样式,:active 在移动端不一定(已经引入 zepto 的已经包含下面的 js 了)生效,需要下面的js
document.body.addEventListener('touchstart', function() {}, false);
也可以直接在body上添加 ontouchstart 属性,即 <body ontouchstart="">...</body>

7. 在IOS下,如果最后一个div底部需要有剩余空间,但是使用margin-bottom且该DOM是动态生成时,在个别IOS手机下不会产生间距。故最好使用padding-bottom

8. 给表格的 tr 添加 hover 效果,一般直接添加 tr:hover{background: @color} 即可。但是当 td 有背景色时,不能有 hover 效果。只需改成 tr:hover td{background:@color} 即可

9. 如果对body添加 padding-top ,并且有元素定位fixed时, 在iphone 端会出现fixed的元素消失了, 在拉动的时候可以看到.解决办法: 不对body添加padding-top, 而是对body > div 添加改padding-top

10. 移动端做 全屏 页面时,高度应该使用百分比,宽度可仍使用rem.否则,如果高度不使用百分比,一些比较小屏的机型,很有可能出现只显示一部分内容

11. padding和margin如果设为百分比, 那么这个百分比是相对于宽度的(特殊)

12. 移动端开发应尽量避免使用 position: fixed, 因为 iphone 手机可能出现抖动或消失的情况. 一般使用一下仍可以实现类似 固定定位的效果, 如

1
2
3
4
5
6
7
8
9
.paren{
box-sizing: border-box;
padding-bottom: 44px;
// ...
}
.fiex{
position: absolute
// ...
}
最近的文章

构建一套完整的webpack4

生成 package.json 文件1npm init -y 首先需要提前安装全局的包123npm install -g webpack webpack-dev-server nrm// webpack webpack-dev-server// nrm // [可选] 快 …

继续阅读
更早的文章

你不得不知道的开发技巧-JS篇

文章同步于 我的 Segmentfault 笔记1. 使用 mock.js 时, post 请求参数 cache 不能为 false , 否则不能正常拦截, (一般是)导致 status: 404 错误2. 关于 export 与 import 的用法12345678910111213141516 …

分享记录 继续阅读