h5移动端开发一些思路技巧

记录一些开发小技巧~

1、 字体大小小于12px

  • chrome核浏览器不支持中文字体小于12px,但ui图很多时候会有小于12px的设计需求。
  • 解决方法:
    使用css的 transform: scale(); 特性来缩小内容。
    例如设置字体大小10px:
font-size: 12px;
transform: scale(10/12);

需要注意这个方式虽然缩小了字体,但该文字元素所占据的原宽高大小并不会跟着缩小,所以很多时候还需要考虑文字位置和间距的问题。
一般文字位置需要结合 transform-origin 属性来设置。
例如设置文字水平居左、垂直居中:

transform-origin: left center;

间距问题自己凑一凑调整一下就差不多了,个人觉得没必要精确计算,必要时再结合position定位属性控制。

2、子元素占据剩余高度

  • 需求:父盒子不定宽高,第一个子盒子也不定宽高,要求第二个子盒子占据剩余高度。
  • 解决方法:
    使用flex布局。
.parent {
	height: 100% 或 数值;
	display: flex;
	flex-direction: column;
}
.secondChild {
	flex: 1;
}

3、图片设置高度等于宽度

  • 在图片容器大小不确定的情况下,想设置图片的宽度自适应,高度等于宽度,也就是正方形显示。
  • 解决方法:
    利用padding-top的特性结合定位实现,
    padding-top值为百分比时该值默认按宽度计算,用padding-bottom也行。
.imgWrap {
	position: relative;
    width: 100%;
    height: 0;
    padding-top: 100%;
    
    img {
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
    }
}

4、font-weight 字体粗细

  • 很多时候ui设计图都是给各个端统一用的,ui设计师们喜欢使用苹果字体来设计,经常会有font-weight: 500 这种,可能你印象中好像h5只支持400和700两个数值,500不起作用。
  • 其实,font-weight值500支不支持和系统以及浏览器都没有关系,而是取决于字体支不支持,像windows平台下常见的宋体、微软雅黑以及安卓的默认字体一般都不支持500的值,而ios里的默认字体是支持的,所以我们还原设计稿时最好把设计稿里设计的font-family和font-weight代码都写上,支持最好,不支持拉倒,不需要做特殊处理,毕竟字体文件都是几十兆起步,强行放项目里也不可取。

5、盒子水平垂直居中

  • 父盒子和子盒子都不定宽高,如何使子盒子水平垂直居中?这是个老生常谈的问题了,也是面试官喜欢问的问题,在此吐槽一下有些面试官只追求数量不追求质量的方式,真是,知道的方法再多有多少意义,难道开发中轮流着用吗?
  • 在此就不列举哪些五花八门的方法了,只推荐两种适用性广的方法,一般够用了。
// 方法一:利用flex布局
.parent {
	display: flex;
	justify-content: center;
	align-items: center;
}

// 方法二:利用定位及位移
.parent {
	position: relative;
}
.child {
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
}
  • 以上两种方法都有一些不适用的场景,根据需要选择即可。
    flex方法的局限性在于对父盒子里所有的子元素都会生效,如果子元素不止一个,那就都一起居中了;
    定位方法的局限性在于如果子元素需要做一些transform属性的动画效果就不行了,因为transform: translate会一起做动画,那就很奇怪了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章