05-移动端开发教程-CSS3兼容处理

CSS3的标准并没有全部定稿,目前CSS3的标准分成了不同的模块,具体的标准由各个模块推动标准和定稿,标准制定的过程中,浏览器也在不断的发新的版本来兼容新的标准。
浏览器有时会给一些在试验阶段或非标准阶段的css属性添加前缀, 这样开发者就可以使用 浏览器行为的改变不会破坏标准. 开发人员应等待包含无前缀属性,直到浏览器行为标准化。

1. 主流浏览器引擎前缀

-webkit- (谷歌, Safari, 新版Opera浏览器等)
-moz- (火狐浏览器)
-o- (旧版Opera浏览器等)
-ms- (IE浏览器 和 Edge浏览器)

只有在新的css3的实验性的属性前需要添加前缀,目前大部分常用的css3新属性都可以直接舍弃前缀。查看浏览器兼容css3属性情况请参考:caniuse网站

.wrap {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-flow: row wrap;
          flex-flow: row wrap;
}

2. vscode插件实现css3前缀的自动化处理

由于添加前缀工作都是否枯燥和没有意义,这些工作可以直接交给开发工具或者第三方的工具来自动化的实现处理。而vscode也有对应的自动化的插件进行自动化的添加代码前缀。

vscode 自动化插件: Autoprefixer,可以自动化的给css、less、sass文件进行自动化的添加css3前缀。

使用方法:ctrl + shift + p 然后输入 autoprefixer 选择回车执行命令。

由于此插件是对npm包:Autoprefixer的封装,所以如果使用此插件对css进行预处理需要安装好node和安装上Autoprefixer包。

# 第一步: 安装node

# 第二步:全局安装Autoprefixer插件包
$ npm i -g autoprefixer
# 第三步: 用vacode的插件处理css文件(html文件不行)

# 如果npm安装很慢或者总是失败,请设置淘宝的npm包镜像。直接在node安装完了后执行如下命令。然后就可以happy的安装npm的第三方包了。
$ npm config set registry https://registry.npm.taobao.org

nodejs下载地址:下载
淘宝镜像地址: 地址

3. js辅助脚本解放手写前缀

为了解决手工书写前缀的问题,最早的一个解决方案是由Lea Verou提供的一个-prefix-free脚本。

只需要在.html文件中插入一个prefixfree.js文件(可以是文档任何地方),建议把这个脚本文件放在样式表之后。

添加这个脚本之后,使用CSS3的属性时,只需书写标准样式即可。但是这种做法将所有压力交给了客户端来处理。如此一来页面解析压力就大了,性能会打一定的折扣,并且一旦脚本加载失败,那么就会出现浏览器无法正常渲染CSS3的样式风格。

prefixfree脚本仅在IE9+、Opera10+、Firefox3.5+、Safari4+得到支持。

4. 自动化构建工具

自动化构建工具:webpack、gulp、grunt都可以实现css3属性前缀的自动化添加。在此我只演示一下gulp的应用。

gulp自动化配置和安装演示:

第一步:安装node环境(已安装,略过)
第二步:安装gulp的全局的包(已安装,略过)

$ npm i -g gulp

第三步:初始化项目的npm配置文件和初始化安装要gulp和gulp的插件的项目本地插件包。

$ npm init -y     # 初始化项目的npm配置文件
$ npm i -S gulp   # 安装gulp到本地项目(仅开发时使用,S大写)
$ npm i -S gulp-autoprefixer   #  安装gulp-autoprefixer插件(为css3属性添加前缀)
$ npm i -S gulp-rename  # gulp的重命名插件

第四步:在项目根目录下创建一个名为 gulpfile.js 的文件

var gulp = require(‘gulp‘),     // 引用gulp
  autoprefixer = require(‘gulp-autoprefixer‘), // 添加引用前缀的gulp插件
  rename = require("gulp-rename");  // 引用重命名的gulp插件

gulp.task(‘t1‘, function () {
  gulp.src(‘./css/**/*.css‘)    // 设置要处理的原始的文件位置
    .pipe(autoprefixer())
    .pipe(rename({
      suffix: ".min",           // 添加后缀
      extname: ".css"           // 文件扩展名
    }))
    .pipe(gulp.dest(‘./css/‘)); // 最终文件输出的位置
});

可以根据你的情况修改路径,当前默认是你项目根目录下有个css目录,自动为css目录下面的所有文件自动创建一个*.min.css对应文件,就是最终使用的,这里没有进行压缩,如果需要压缩可以添加gulp的压缩插件。

第五步:接下来在命令终端进入gulpfile.js文件的目录执行

$ gulp t1

可以在项目中看到新生成的文件了。

gulp 在线文档:地址

5. sass、less等预处理语言

sass和less等css的预处理语言配合响应的编译工具也可以实现对css3中的新属性的自动化加前缀处理。后续文章会有介绍,在此不赘述。

6. 渐进增强和优雅降级

渐进增强(Progressive Enhancement):一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果、交互、追加功能达到更好的体验。

优雅降级(Graceful Degradation):一开始就构建站点的完整功能,然后针对浏览器测试和修复。比如一开始使用 CSS3 的特性构建了一个应用,然后逐步针对各大浏览器进行 hack 使其可以在低版本浏览器上正常浏览。


联系老马

对应视频地址:https://qtxh.ke.qq.com/
老马qq: 515154084
老马微信:请扫码

扫码加老马微信

原文地址:https://www.cnblogs.com/fly_dragon/p/8428744.html

时间: 2025-01-13 12:57:08

05-移动端开发教程-CSS3兼容处理的相关文章

08-移动端开发教程-移动端适配方案

由于移动端的特殊性,屏幕的尺寸碎片化严重,要想很好的适配不同的尺寸的设备,需要我们前端开发相比PC端要做一些基层的适配方案. 1. 常见的适配方案 百分比+固定高度布局方案 固定屏幕为理想视口宽度 少许的媒体查询设置字体 水平百分比布局 水平方向部分也可以使用弹性布局 Rem解决方案 Rem的大小取值:根据页面的dpr动态改变 Rem的取值: 1rem = 100px 或者 1rem = 1/10 * 理想视口的宽度 chrome浏览器字体小于12px(会被重置为12px) 固定设计稿的宽度开发

10-移动端开发教程-移动端事件

在前端的移动Web开发中,有一部分事件只在移动端产生,如触摸相关的事件.接下来给大家简单总结一下移动端的事件. 1. PC端事件在移动端的兼容问题 1.1 click事件的200~300ms延迟问题 由于移动端默认的布局视口宽度是980像素,所以网页文字非常小,为了快速让网页还原到原来的大小,Safari最新引入了双击缩放功能:用户双击手机页面的时候,浏览器会智能的缩放当前页面到原始大小. ?双击缩放的原理就是,当用户click一次之后,浏览器会经过约300ms之后检测是否再有一次click,如

07-移动端开发教程-移动端视口

老马初始学习视口的概念的时候,看了很多的文章,看来很多的资料,鲜有人能把这个东西讲的非常透彻的.老马接下来就从初学者能看懂的角度去讲解视口和适配的方案. 1. 关于屏幕 1.1 屏幕尺寸 设备屏幕尺寸是指屏幕的对角线长度.比如:iphone6/7是4.7寸,iphone6/7p是5.5寸. 1英寸 = 2.54厘米 3.5in = 3.5*2.54cm = 8.89cm 4.0in = 4.0*2.54cm = 10.16cm 4.8in = 4.8*2.54cm = 12.192cm 5.0i

06-移动端开发教程-fullpage框架

CSS3的新特性已经讲完了,接下来我们看一下jQuery的一个全屏jQuery全屏滚动插件fullPage.js.我们经常见到一些全屏的特绚丽页面,手指或者鼠标滑动一下就是一整屏切换,而且还有各种效果.比如:全屏滑动案例 下面我们就介绍一下jQuery的fullPage.js的如何使用及常用的配置. 1. fullpage.js的主要功能 fullPage.js是一个基于jquery的插件,它能很方便的制作出全屏网站,github地址. 主要功能有: 支持鼠标滚动. 支持前后退和键盘控制. 多个

09-移动端开发教程-Sass入门

1. 引言 CSS3之前的CSS都大都是枚举属性样式,而编程语言强大的变量.函数.循环.分支等功能基本都不能在CSS中使用,让CSS的编程黯淡无光,Sass就是一种增强CSS编程的扩展语言(CSS4也可以期待),有了像Sass这种预处理语言后,CSS的编程不再局限在枚举属性了,可以有更广阔的舞台. 2. Sass的原理 Sass本质就是在CSS的语法的基础上增加了自定义的变量.循环.分支.函数.mixin.继承.运算等功能,让CSS编程变得异常强大. 当然浏览器是不认识Sass语法.开发人员写完

Daydream从入门到精通——快速入门开发基础教程二:Android端开发环境配置二

开始部署 上篇介绍了开发Daydream Android VR需要的基本环境,这篇我们来看看如何部署和运用官方示例. -------------------------------------------------------------------------------------------------------------------- Daydream快速入门开发基础教程一:Android端开发环境配置一 http://blog.csdn.net/jaikydota163/arti

菜鸟窝React Native 系列教程-1.移动端开发趋势与未来

菜鸟窝React Native 系列教程-1.移动端开发趋势与未来 课程持续更新中..... 我是RichardCao,现任新美大酒店旅游事业群的Android Developer.如果你也有兴趣录制RN视频,请加入下面QQ群找我. 下载地址:https://pan.baidu.com/s/1c1XmE56 密码:shhw 首发地址:菜鸟窝-ReactNative学习板块 交流QQ群:576089067 课程目录:菜鸟窝React Native 系列教程

ERPSYSTEM开发教程05 框架接口管理

框架接口是采用类厂来管理的 一个接口要被框架管理的实现步骤 首先是接口定义,接口实现类,接口实例创建函数,指定类厂 unit BplOneIntf; {$WEAKPACKAGEUNIT ON} interface type IBplOne=interface ['{E4C1C5FA-C598-4834-9111-26B52634068D}'] function Add(A,B:Integer):integer; function Sub(A,B:Integer):Integer; end; im

29.html5 移动端开发总结

手机与浏览器 浏览器: 移动端开发主要针对手机,ipad等移动设备,随着地铁里的低头族越来越多,移动端开发在前端的开发任务中站的比重也越来越大.各种品牌及尺寸的手机也不尽相同.尺寸不同就算了分辨率,视网膜屏 自动的各种内核的浏览器,想想头都大了. 先说下浏览器.在中国有多少种浏览器? ie.百度.360.搜狗.火狐.欧朋.Chrome.谷歌.行者无疆.财猫省钱.遨游.Wise光速.UC.智慧.QQ.海豚...(大概有70-80多种) 五花八门,还好不用担心这都是表象.虽然浏览器各不相同但从浏览器