CSS移动端开发及less使用方法

目录

一、基础概念

二、移动端基础

1、视口

2、多倍图

3、移动端适配

三、less


一、基础概念

1、屏幕大小:指屏幕的对角线长度;1英寸(inch)=2.54厘米(cm)

2、屏幕分辨率:指横向纵向的物理像素总点数,一般表示为:n*m

3、屏幕密度(ppi):又称屏幕像素密度,是指屏幕上每英寸里包含的物理像素点个数,单位是ppi,是衡量一块屏幕是否清晰的核心指标

PPI的计算方法是:PPI=开平方(X*X+Y*Y)/Z

(其中X,Y指长,宽像素数,Z指屏幕大小)


4、物理像素:单位px,是电脑屏幕上的一个物理成像点(发光元器件)

5、css像素:逻辑像素,又称程序员像素,是我们在编写css,js,less时使用的像素,单位也是px

6、设备独立像素:DIP或DP,又称屏幕密度无关像素。

引言:在没有出现高清屏 的年代,1个css像素对应1个物理像素,但自从高清屏问世,二者就不再是1对1的关系了

苹果公司,在2010年推出了一种新的显示标准:在屏幕尺寸不变的前提下,把更多的物理像素点压缩至一块屏幕里,这样分辨率会更高,显示效果会更加细腻,苹果将这种屏幕成为:Retina屏幕(视网膜屏幕),与此同时推出配备这种屏幕的划时代产品-iPhone4

设备独立像素的出现,使得即使在【高清屏】下,例如苹果的retina屏,也可以让元素有正常的尺寸,让代码不受到设备的影响,它是设备厂商根据屏幕特性设置的,无法更改

设备独立像素于物理像素关系

普通屏幕下1个设备独立像素对应1个物理像素

高清屏幕下1个设备独立像素对应N个物理像素

设备独立像素与css 像素关系

在无法缩放的情况下(标准情况下):1css像素=1设备独立像素,即:dpr=物理像素/设备独立像素

7、像素比

像素比(dpr):单一方向设备 物理像素和设备独立像素之间的比例

8、像素之间的关系

在不考虑缩放的情况下(理想状态下):

普通屏(dpr=1):1css像素=1设备独立像素=1物理像素 2010之前

高清屏(dpr=2):1css像素=1设备独立像素=2物理像素

高清屏(dpr=3):1css像素=1设备独立像素=3物理像素

程序员写了一个width为100px的盒子,那么:

代表100个css像素;

若用户不进行缩放,则对应100个设备独立像素;

在dpr为2的设备上,这100个css像素占据了100*2=200个物理像素(横向)

例如:iPhone6 为例

物理像素:750px

设备独立像素375px

css 像素:375px


二、移动端基础

1、视口

布局视口

默认的布局视口容器是980px,对pc页面进行压缩,压到跟手机一样大小,就可以看了,只是元素看上去很小,只能手动去缩放,体验效果不好

视觉视口

视觉视口就是用户可见的区域,它的绝对宽度永远和设备屏幕一样宽,但这个宽度里包含的css像素值是变化的,需要滚动查看

理想视口(完美视口)

与屏幕(设备独立像素)等宽的布局视口,称之为理想视口;让布局视口宽度与屏幕等宽(设备独立像素),靠meta标签实现

用户不需要缩放、滚动就能看到网站的全部内容

要为移动端设备单独设计一个移动端网站

开启理想视口的方法

html 复制代码
<meta name='viewport' content='width=device-width' />
html 复制代码
    <!-- 设置完美视口大小  
         device-width   视口宽度和设备保持一致
         initial-scale  表示页面的初始缩放值,==>屏幕宽度(设备独立像素)/布局视口宽度
         user-scalable  是否允许用户缩放
         maxinum-scale=1.0, 最大允许缩放比例
         mininum-scale=1.0, 最小允许缩放比例
    -->
    <meta name="viewport" 
    content="
    width=device-width,
    initial-scale=1.0,
    user-scalable=no
    maxinum-scale=1.0,
    mininum-scale=1.0 " />
    
2、多倍图

一倍图:

使用的是100*100 物理像素的图片

100*100分辨率图片==》对应屏幕中100*100的发光点(物理像素)==》对应css中50*50px

此时强行设置100*100px css像素,很明显对比起来就较为模糊

二倍图

使用200*200的图片

200*200分辨率的图片==》对应屏幕200*200的发光点(物理像素)==》css中100*100px

此时设置为100*100px,正好完美对应显示

在现在移动端中,例如:在iphone6 中,需要显示多少px 的图片,为了不被强行放大, 需要使用宽高为2 被分辨率的图片,显示更好的效果。

而这种使用的宽高为2 倍分辨率大小的图片,称之为2 倍图

实际开发过程中还存在2 倍图、3 倍图、4 倍图之类的,但是具体使用哪一种看公司具体的需要

命名特点:

xxxx@2x.png二倍图

xxx@3x.png三倍图

在实际开发中如果给的是1 倍图,那就多大写多大;如果是2 倍图,那就是图片的大小/2 ;3 倍图,就是图片的大小/3······

3、移动端适配

rem,媒体查询,flexible.js,混合布局,vw、vh(未来趋势)

用flexible.js开发

github地址:https://github.com/amfe/lib-flexible

官方文档地址:https://github.com/amfe/article/issues/17

综上所有,一起使用,选取一种主要技术选型,其他技术为辅助(推荐)

rem 适配--- 移动端开发的步骤

第一步:拿到多大的设计稿,将root font size 改成 :设计稿的大小/10

第二步:引入flexable.js ,会动态的去修改html 的字体大小

第三步:正常根据设计稿的大小去开发,将所有的px 值换算为rem 的值

vw 去开发

1 、看设计稿是多大,自定义 1rem=100px 然后 1px=xxxvw, html{font-size:xxxvw}

2 、去更改 root font size ,更改 1rem=100px

3 、根据设计稿的大小,将 px 值写成 rem

总结:

都是一个绝对值为参考值

flexable.js 是以设备独立像素为绝对值,去算 rem 的值

vw 是设备的视口的宽度为绝对值,去算 rem 的值

最终都是把设计稿中的 px 换算成 rem

三、less

是一种动态样式语言,属于css预处理器的范畴,它扩展了 CSS 语言,

增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展

less的中文官网:http://lesscss.cn/

less有混合嵌套继承等规则,实际使用非常方便,结构清晰明了,且适配度高

less的嵌套规则
css 复制代码
* {
    margin: 0;
    padding: 0;
}

#list {
    background-color: #333;
    overflow: hidden;
    height: 50px;
    line-height: 50px;
    width: 400px;
    margin: 50px auto;

    li {
        list-style: none;
        float: left;
        width: 25%;
        text-align: center;

        a {
            text-decoration: none;
            color: white;
        }

        // &表示上一级
        &:hover {
            background-color: tomato;
        }
    }


}
less的继承
css 复制代码
.box {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    margin: auto;
}
.box:hover{
    background-color: red;
}

#wrap {
    width: 300px;
    height: 300px;
    border: 1px solid red;
    position: relative;

    #box1 {
        width: 100px;
        height: 100px;
        background-color: pink;
        // 只继承box样式
        &:extend(.box);
    }

    #box2 {
        width: 50px;
        height: 50px;
        background-color: orange;
        // 所有跟box相关的样式,都继承
        &:extend(.box all);

    }
}
相关推荐
2601_949857432 小时前
Flutter for OpenHarmony Web开发助手App实战:HTML参考
前端·flutter·html
爱内卷的学霸一枚2 小时前
现代前端工程化实践:从Vue到React的架构演进与性能优化(7000字深度解析)
前端·vue.js·react.js
南风知我意9572 小时前
【前端面试4】框架以及TS
前端·面试·职场和发展
鹏北海-RemHusband2 小时前
踩坑记录:iOS Safari 软键盘下的“幽灵弹窗“问题
前端·ios·safari
一位搞嵌入式的 genius2 小时前
深入理解浏览器中的 JavaScript:BOM、DOM、网络与性能优化
前端·javascript·网络·性能优化
lang201509282 小时前
一键生成Java Web项目:Tomcat-Maven原型解析
java·前端·tomcat
We་ct2 小时前
LeetCode 242. 有效的字母异位词:解法解析与时空优化全攻略
前端·算法·leetcode·typescript
David凉宸2 小时前
Vue 3生态系统深度解析与最佳实践
前端·javascript·vue.js
全栈小52 小时前
【前端】win11操作系统安装完最新版本的NodeJs运行npm install报错,提示在此系统上禁止运行脚本
前端·npm·node.js