移动端开发

78 阅读4分钟

1、视口标签

image.png

2、css3新盒子模型

        div:nth-child(2) {
            /* 有了这句话就让盒子变成CSS3盒子模型 */
            /* padding 和 border 不会再撑大盒子了 */
            box-sizing: border-box;
            width: 200px;
            height: 200px;
            background-color: purple;
            padding: 10px;
            border: 10px solid blue;
        }

3、特殊样式

/*CSS3盒子模型*/  
box-sizing: border-box;  
-webkit-box-sizing: border-box;  
/*点击高亮我们需要清除清除 设置为transparent 完成透明*/  
-webkit-tap-highlight-color: transparent;  
/*在移动端浏览器默认的外观在iOS上加上这个属性才能给按钮和输入框自定义样式*/  
-webkit-appearance: none;  
/*禁用长按页面时的弹出菜单*/  
img,a { -webkit-touch-callout: none;

4、流式布局(百分比布局) 宽度设为百分比

通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制,内容向两侧填充。

5、移动端常用开发代码,Normalize.css初始化工具

<meta name="viewport" content="width=device-width, user-scalable=no,  
initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

body {  
    margin: 0 auto;  
    min-width: 320px;  
    max-width: 640px;  
    background: #fff;  
    font-size: 14px;  
    font-family: -apple-system, Helvetica, sans-serif;  
    line-height: 1.5;  
    color: #666;  
}

body {  
max-width: 540px;  
min-width: 320px;  
margin: 0 auto;  
font: normal 14px/1.5 Tahoma,"Lucida Grande",Verdana,"Microsoft  
Yahei",STXihei,hei;  
color: #000;  
background: #f2f2f2;  
overflow-x: hidden;  
-webkit-tap-highlight-color: transparent;  
}

<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css">
Normalize.css 是一个非常实用的工具,它可以帮助开发者在不同的浏览器环境中获得一致的渲染效果。
通过使用 Normalize.css,你可以减少调试和适配不同浏览器的时间,专注于创建高质量的 Web 应用。

一、移动端flex布局

1、display: flex; 使用后float,clear,vertical-align将失效

div{
    display: flex;   
    justify-content: space-around; //平均分排列
}
div span{
    margin-right: 5px;
    flex: 1;
}

2、flex常见父级属性

以下由6个属性是对父元素设置的  
1、flex-direction:设置主轴的方向 为x轴还是y轴
       row (默认从左到右 x轴横着排) row-reverse(右到左) 
       ★column (从上到下 y轴竖着排) column-rever(下到上)
2、justify-content:设置主轴上的子元素排列方式  
        flex-start 默认值 从头部开始 如果主轴是x轴,则从左到右  
        flex-end 从尾部开始排列  
        center 在主轴居中对齐(如果主轴是x轴则 水平居中)  
        space-around 平分剩余空间  
        ★space-between 先两边贴边 再平分剩余空间(重要)  
3、flex-wrap:设置子元素是否换行  
        nowrap 默认值,不换行  会自动缩小盒子
        ★wrap 换行  
4、align-content:设置侧轴上的子元素的排列方式(多行)  
        flex-start 从上到下  
        flex-end 从下到上  
        ★center 挤在一起居中(垂直居中)  
        stretch 拉伸 (默认值 )  
5、align-items:设置侧轴上的子元素排列方式(单行)  
设置子项在侧轴上的排列方式并且只能用于子项出现换行的情况(多行),
在单行下是没有效果的。 
        flex-start 默认值在侧轴的头部开始排列  
        flex-end 在侧轴的尾部开始排列  
        center 在侧轴中间显示  
        space-around 子项在侧轴平分剩余空间  
        space-between 子项在侧轴先分布在两头,再平分剩余空间  
        stretch 设置子项元素高度平分父元素高度
6、flex-flow:复合属性,相当于同时设置了 flex-direction 和 flex-wrap
        flex-flow:column wrap

3、flex子元素常见属性

 flex 子项目占的份数  
.item {  分配剩余空间
    flex: <number>; /* default 默认为 0 */  
} 
 align-self 控制子项自己在侧轴的排列方式  
span:nth-child(2) {  
    /* 设置自己在侧轴上的排列方式 */  
    align-self: flex-end;  
}
 order属性定义子项的排列顺序(前后顺序)
    数值越小,排列越靠前,默认为0。  
    注意:和 z-index 不一样。  
.item {  
    order: <number>;  
}

4、渐变背景色设置

background: linear-gradient(起始方向, 颜色1, 颜色2, ...);  
background: -webkit-linear-gradient(left, red , blue);  
background: -webkit-linear-gradient(left top, red , blue)

二、rem布局,通过控制字体大小,进而控制页面元素大小

1、媒体查询media

        @media screen and (min-width: 320px) {
            html {
                font-size: 50px;
            }
        }
        
        @media screen and (min-width: 640px) {
            html {
                font-size: 100px;
            }
        }
        div {
            width: 2rem;
            height: 2rem;
            background-color: pink;
        }
<link rel="stylesheet" href="style320.css" 
media="screen and (min-width: 320px)">
<link rel="stylesheet" href="style640.css" 
media="screen and (min-width: 640px)">

2、简洁高效的rem适配方案flexible.js

github地址:github.com/amfe/lib-fl…

三、响应式布局Bootstrap

四、vw和wh视口的使用是现在最流行的

五、vmin和vmax参考宽高的一个适配