当前位置:首页 » 网页前端 » 前端有几种方法实现一键换肤
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端有几种方法实现一键换肤

发布时间: 2023-02-13 09:22:18

‘壹’ 前端需要学什么

WEB前端我们需要需要掌握以下几种技术:

第一阶段:

Html5+css3,是最起初的,也是很简单的入门,需要掌握html的标签div,span,p,ul,li,input等,需要理解css语法,派生选择器,ID选择器,类选择器,属性选择器,css基本样式:背景,字体,链接,列表等。

第二阶段:

1、熟练使用javascript,jQuery,Echarts,移动端技术,javascript的面向对象。

2、浏览器的兼容问题,需要懂WEB标准,熟练手写xhtml,css3并符合w3c的标准,代码能兼容主流浏览器Firfox,Chrome,Safari,IE等。

3、熟悉一门后台编程语言如:asp,php,jsp等来扩展以后工作的需求

第三阶段:

熟练使用vue框架,node、js,React,Angular,混合式开发/原生开发。

vue:是一套组建用户界面的,渐进式框架,用于搭建表单繁多,且内容需要根据用户的操作进行修改的页面版应用。

Node、js是一个服务器端的,非阻断式i/o的,事件驱动的javascript运行环境,能够使得javascript脱离浏览器运行。

React是Facrbool内部的一个javascript类库,用于创建WEB用户交互界面。

AngularJS是一个JavaScript框架。它可通过<script>标签添加到HTML。


web前端流程

1、根据设计好的效果图(一般是一些psd文件)开始利用Photoshop进行切图,切出需要的图片。

2、使用HTML、CSS、JS等技术开始实现效果图的页面,同时需要和后台人员交流为后台数据留下借口和数据填充的区域等。

3、将最终前端完成的页面交给后台,由后台人员填充后台数据。

‘贰’ 前端页面的插件有哪些

工具类

方便操作对象,数组等的工具库

  • underscore.js

  • lo-dash与underscore.js的api基本一致。与underscore比其优势是,效率高;可自定义构建

  • Sugar在原生对象上增加一些工具方法

  • functional.js提够了一些Curry的支持

  • Watch.js监视对象或属性的变化

  • bacon.js函数式编程,cool

  • streamjs用流的方式来对数组,对象进行系列操作

异步流程控制

  • eventproxy朴灵出品

  • Arbiter.js详细

  • 发布订阅

  • qPromise风格的

  • Async.js

mock

  • Mock.js生成随机数据和mock Ajax 请求

  • jquery-mockjaxmockajax请求

时间库

  • moment

  • datejs

浏览器探测

  • Bowser探测具体浏览器和版本

  • ua-parser-js探测具体浏览器和版本,操作系统,设备类型等

调试

  • console-polyfill能放心的使用 console.log()之类的console方法

  • log让控制台输出的log有样式

  • Konsole.js在页面的一个元素里输出log信息详细

  • uri.jsuri操作

  • cookie增删改cookie的工具库

  • director前端路由库详细

  • BigDecimal.js提高精度的数字操作

  • JSDoc根据javascript文件中注释的信息,生成API文档详细

  • hotkeys键盘事件的封装

  • MD5用 MD5 的方式加密文件的库

浏览器增强类

让一些旧浏览器变牛逼的库

  • Selectivizr让IE 6-8一些的css3选择器

  • ieBetter让ie6-8有高级浏览器的特性

  • ExplorerCanvas让IE8-的浏览器支持canvas

  • CSS3 Pie让IE6-9支持border-radious,box-shadow,linear-gradient。 可以使用.htc文件(注意Mine type)或.js文件。在用Pie.js时,box-radious的元素有背景色时,不显示背景色。。。

  • formFive让旧的浏览器支持HTML5表单的一些特性,如 placeholder,autofocus

  • https://github.com/anselmh/object-fit让浏览器支持object-fit这css规则

  • HTML5 Cross Browser Polyfills一堆Polyfills

  • flexibility让旧的 IE 也支持 Flexbox

选择器增强

  • Lining.js让浏览器实现类似::nth-line(), ::nth-last-line()的效果

未归类

  • prefixfree用了它,写css时,就不需要加浏览器的前缀了

表单类

  • jquery-file-upload上传文件组件详细

  • zTree文件树形视图控件

  • Treed树编辑器。感觉展示的感觉很像思维导图

  • FileAPI对文件选择框内的文件的一些处理

表单验证

  • .Validate详细

  • jQuery-Validation-Engine

表单元素美化

  • uniform提供对下拉框,单,复选框,按钮等表单元素的美化

  • select2多选下拉框

  • selectivity和unfirom比较类似

  • DropKick下拉框,单,多选。外观比uniform好

  • switcheryios7风格的开关组件

  • nouislider用滚动条来设置/控制(音量等)

  • range.css美化input[type=range]元素的外观

图片类

  • holderjs生成占位图片

  • lazyload

  • imagesLoaded选取的图片都加载好后执行调回

  • CSSgram用CSS3的Filter实现Instagram滤镜的库

图标类

  • Icon Font汇总

  • SVG做的图标

  • svgicons

  • iconic

  • HYBICON带交互效果。如 hover, click

  • HTML字符实体图标

  • http://www.amp-what.com/

  • transformicons图标点击时,会有一些变换效果。如,加号变成叉号

  • css3patternscss3 做的可平铺纹理。浏览器兼容性不好。

浏览图片

  • fancybox弹出查看图片,视屏等等demo

  • yoxview弹出查看图片,图片尺寸缩放很自然

图片墙

  • wookmark

UI 框架

  • WeUI由微信官方设计团队为微信 Web 开发量身设计。

  • Framework7

UI 组件类

拖拽

  • dragula支持Draggable,Dropable和Sortable。感觉比jqueryUI的轻量级,好用的样子

  • angular-draguladragular 官方的 angular 版本

数据可视化(图表)

  • Echarts网络出品

  • highcharts功能强大。是收费的。

  • Plottable.JS基于D3的一个图表库

  • flot文档不给力

  • chartJs中文文档demo很漂亮,很清晰。比较轻量级。

  • ichartJs中国的一个家伙搞的,感觉还不错。

时间选取组件

  • foundation-datepicker

  • DatePicker一个简单的日历详细

  • full calendar支持脱放的方式来改变待办事宜的时间

  • Simple Events Calendar外观很喜欢。收费 5$

  • jQuery ui datepicker经典,不是很好看

  • pickadate轻量级,手机友好的,漂亮。但貌似只能在弹出层中显示,而没有下拉这种方式显示。

  • zebra-datepicker可配置性很强。但貌似只能在弹出在右上方。。。

  • bootstrap-datepickerbootstrap风格。

  • dateRangePicker选取时间段。bootstrap风格。该组件依赖Twitter Bootstrap, Moment.js和jQuery.

自定义滚动条

  • perfect scrollbar轻量级的滚动条。外观与mac上chrome的滚动条一样。

  • iscroll在移动设备上用不错

加载(Loding)效果

  • CSS SpinnersCSS做的

  • Loaders.cssCSS做的

表格组件

  • jsGridData Grid。详细

  • backgrid基于Backbone.js的DataGrid

  • excellentexport把表格的内容生成excel。兼容 Firefox, Chrome, IE6+

  • datatables表格可交互(对内容进行排序,删除等)

  • handsontable生成Excel外观的数据

  • JSpreadsheets表格数据的组件库

选取颜色

  • Spectrum

分享到SNS

  • JiaThis生成分享代码。

编辑器

  • ace代码编辑器,可以用来做demo演示

  • ckeditor

  • ueditor网络做的

  • tinymce对html内容进行实时的编辑

  • summernote在移动设备上用不错

通知组件

  • notie.js

HTML5播放器

  • jwplayer被大量网站使用

  • html5media简单的h5player,轻量级

  • jplayer功能强太,可换肤

展示

  • Impress.js各种旋转,和奇特的体验

  • fullPage全屏显示。用滚轮来翻页详细

  • zepto.fullpage专注于移动端的fullPage.js,依赖Zepto

  • pagePiling和fullPage类似

  • turn.js做一本书,带漂亮的翻页的效果

幻灯

  • slidesjs挺好用的,只是那幻灯导航的CSS都要自己写,呵呵详细

  • iSlider无任何插件依赖的手机平台javascript滑动组件详细

  • bgstretcher全屏幻灯,会随着页面大小的变化而变化。

  • Swiper开源、免费、强大的移动端触摸滑动插件Swiper中文网

  • coin-slider兼容IE6。蛮好的~。不过其切换方式是一块块的。不能配置切换方式。。。

  • wowslider幻灯切换时各种很炫的效果。收费。

  • cycle2普通的幻灯,竟然不支持垂直滚动。。。

  • jcarousel普通的幻灯,不兼容IE6

  • reveal3d滚动。做ppt相当不错

  • nodePPT国人做的,做ppt也相当不错。有些方面比 reveal做的还好。但生成导出的html有些问题

  • roundabout3d切换,看的后面图片的边

弹出框

  • Magnific-Popup兼容PC,Mobile。还不错,有5k+的star

  • layer国人开发的,兼容ie6+。不喜欢其调用方式。

动画效果

  • mixitup用漂亮的动画效果来完成排序和筛选

  • jQuery.Marquee跑马灯效果

  • quickflip卡片翻转效果

  • 卡片翻转效果2兼容性可以。写的比较简单:1,只支持x方向翻转 2,类名都是规定好的 3,只能被调用一次。 需要改写一下。我的改进版见这里

  • TheaterJS模拟两个人在屏幕上对话

  • midnight.js文字颜色随着背景变,屌炸了

  • color-animationjquery的颜色渐变动画插件。jquery的动画不支持颜色值的变化。改库提供了这个支持。

  • transit对元素进行css的变换

  • tagcanvas3D标签云效果详细

  • iconate图片切换动画

  • Snap.js左/右侧导航的出现效果

  • CSS shake抖动动画

  • ClickSpark.js点击后的一些酷炫的效果

视觉差插件

  • scrollorama比较简单

  • superscrollorama能做的效果更多,但要用第三方Tween的库,使用起来比较复杂。

  • scrolldeck

flash

  • swfobj能够自动检测PC、Mac机器上各种主流浏览器对Flash插件的支持情况。它使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优化的原则的。此外,它能够避免您的HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。详细

抽奖

  • wScratchPad刮刮卡刮奖效果

  • jqueryrotate旋转插件。可以用来做转盘抽奖效果

  • 用户体验增强类

  • Intro.js用来介绍网站的功能很不错。也可以做新手引导。

  • blockUILolding组件。

  • simple-hint提示信息。用css做的。兼容性IE 9+。

  • dotdotdot文字溢出时,添加在文字末尾加省略号

  • jQuery-menu-aim二级菜单的切换如Amazon主页上一样迅速

  • AnythingZoomer放大镜功能

  • 美化/高亮语法代码

  • google-code-prettify

  • DlHighlight仅支持JavaScript、CSS、XML、HTML 这4语法高亮

  • please按要求随机舒服的颜色

  • Awesomplete输入的智能提示,自动补全

  • proTip提示。感觉比 Bootstrap 的 tip 好

  • Hammerjs手势库。封装了 Swipe, Tap, Pinch, Pan等手势

动画

  • velocity提高Jquery动画的性能。以及颜色动画之类的新特性。

  • SVG

  • Snap.svg操作 SVG 的 JS 库。号称 SVG 的 jQuery。demo

  • walkway以动画的方式,渐渐地画出 SVG 的路径。

测试

  • Mocha

  • Chai

  • Should

  • Snoion

  • DeviceMock.jsmock 设备。

其他类

  • ZeroClipboard将内容复制到剪切板兼容主流浏览器的解决方案详细

  • html2canvashtml转化成canvas,可以用来做截图。详细

  • Ink响应式html邮件框架

  • 性能测试

  • 抓取,解析RSS内容(不能跨域,所以后台要做代理,所谓的解析Rss其实就是解析xml)

  • jFeed

  • jRss简单版的jFeed

  • scriptcam与摄像头交互

  • cylon.js机器人框架,支持35个平台

  • Masonry一个瀑布流框架

  • devices.css移动设备边框的外观。做原型的时候用不错。

  • Bootstrap相关类

  • Bootbox.js对bootstrap的弹出框做的一些封装

  • 免费皮肤

  • AdminLTE

JS Plugins仓库

  • jQuery Cards高质量的 jQuery 插件网站

  • jster

  • node moles

  • npmrankSort npm packages by page rank

  • YOU MIGHT NOT NEED JQUERY PLUGINS不依赖 jQuery 的 js 插件。

  • awesome-nodejs

  • Libraries.io各种语言的库

  • OniUI去哪儿网做的一套基于Avalon的框架

    常用的移动端框架

    zepto.js

    语法与jquery几乎一样,会jquery基本会zepto~

    最新版本已经更新到1.16

    iscroll.js

    解决页面不支持弹性滚动,不支持fixed引起的问题~

    实现下拉刷新,滑屏,缩放等功能~

    最新版本已经更新到5.0

    underscore.js

    笔者没用过,不过听说好用,推荐给大家~

    该库提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象。

    最新版本已经更新到1.8.2

    滑屏框架

    适合上下滑屏、左右滑屏等滑屏切换页面的效果

    slip.js

    iSlider.js

    fullpage.js

    swiper.js

    flex布局

    flex布局目前可使用在移动中,并非所有的语法都全兼容,效果良好~

‘叁’ 前端几种跳转方式

1.onclick跳转

    设置window的location.href属性

    onclick="window.location.href='URL'"

    onclick="location='URL'"

2.调用window的open方法

    onclick="window.open('URL','_blank');" // 在新窗口打开

    onclick="window.open('URL','_self');" // 覆盖当前页

3.a标签跳转

    <a href="URL" target="_blank">Preface</a> // 在新窗口打开

    <a href="URL" target="_self">Preface</a> // 覆盖当前页,target属性默认为_self,此处可省略

‘肆’ 动态修改css中:root定义的变量-换肤、主题色

前端中有用到需要设置主题颜色,根据用户喜欢实现换肤的可以使用css中:root定义变量的方式,或者使用动态切换引入的外部css样式表实现,这里着重记录下动态修改css中:root定义的变量实现换肤:

这里定义变量必须是以'--'开头,然后其他页面的样式表就可以直接引用这个变量了

至此就完成了动态修改:root变量实现换肤了,具体的应用场景中我们应该是在页面上操作,选中需要的肤色然后修改:root定义的变量值,考虑到浏览器刷新会重置原始状态的值,这里要结合本地存储方式记住选中的肤色,具体的实现参考:

‘伍’ Android 换肤- 基于databing的一种思路

        说实话,这篇文章的思路呢,其实是前段时间做前端开发的时候,写网页,用Vue嘛,数据驱动的方式,不过大部分人应该都知道这个东西了!~   以前换肤的实现呢,要么就是换主题,要么呢,就是要么设置tag或者自定义一些规则,反正网上资料很多了,我也不用多说~然后呢,我看到那个Vue这个东西的时候呢,有个demo  vue-element-admin ,这里面有个换肤的实现方式,然后看到那个的时候,我一下子就想到了,android里面不是也有个api是类似的么,虽然好久没写android了,不过还是回来翻了下。。。

ok,下面来看实现方式~

先来看下基本页面(随便画的,啥都没得,反正思路嘛。。。)

o(︶︿︶)o 唉,看出来了,真的随便画的~~~

接下来说下思路,换肤的原理就是,用户选择皮肤,然后我们整个app,切换皮肤,切换成功之后,保存换肤状态。

这里面的难点就是,换肤之后,页面皮肤颜色改变,其实,就是一个一个view手动设置而已,比如说什么颜色啊之类的,对吧,其实就是这么一回事,仔细想想,好简单~。。。

然后,我们现在呢,我不是说的我的思路是vue这个数据驱动的框架么,然后引申到android来,就是databing这个api了,加入说,我们需要换肤的view啊,比如说这个view的颜色,我们只需要把这个view的颜色,使用databing绑定不就行了吗?

类似这样~

这样子,我们在进入我们的activity啊fragment啊的时候,检测一次我们的换肤状态(一般保存到sharepreference里等等),看是否有换肤,有的话,直接把这个换肤的状态设置到数据里面去不就可以了么?

设置的话就很简单啦,一个很简单的例子

好吧,因为我项目里写的是个adapter,所以这里这样设置的。

一般的话,页面有改变,直接binding.setSkinAttr(skinAttr); 就行了,了解databing的同学应该很熟悉,不知道的去看看也了解啦~

这样整个页面的样式使用的都是databing绑定的值,那些view需要就给那些页面的属性设置为上面textview的样一样就行了。

这样我们在页面开始的时候,只需要获取一次保存的值,设置到我们页面绑定的属性类啊之类的上面就行了。其实嘛,这就是一个思路,给大家扩展下思路~

其实项目里面应用了databing的同学,可以考虑下这种方式,毕竟简单嘛,实现方式也很简单。也不需要修改系统源码啊之类的,可拓展行也很强。好吧,就提供下思路,原谅我是在看直播的时候抽空写的,可能不够详细~

下面发下项目地址,可以去看看,保存状态啊之类的都没做,有兴趣的同学可以自行扩展,说的提供思路哈~

项目地址

‘陆’ web前端开发都包括哪些技术

  1. css,学好CSS是网页外观的重要一点,CSS可以帮助把网页外观做得更加美观。

  2. div布局: DIV元素是用来为HTML文档内大块的内容提供结构和背景的元素。

  3. 学习JavaScript的基本语法,以及如何使用。JavaScript编程将会提高开发人员的个人技能。

  4. 了解Unix和Linux的基本知识虽然这两点很基础,但是开发人员了解Unix和Linux的基本知识是有益无害的。

  5. html5+css3:移动端的网页制作。在移动设备开发HTML5应用只有两种方法,要不就是全使用HTML5的语法,要不就是仅使用JavaScript引擎,现在也是前端的一个趋势。

  6. 一些框架的应用:angular.js,node.js,bootsttap等框架的应用。

  7. 了解Web服务器对Apache的基本配置,并且掌握htaccess配置技巧

  8. web前端开发技术,还需要学习一些seo优化技术,因为前端是经常会和网站接触的。


‘柒’ 前端项目中常用的几种方法

新建公共方法js文件(例:public.js)

1、校验手机号码

2、校验是否为空

3、判断字符串长度,如果是汉字则为1

4、获取url中参数的值

5、校验邮箱

6、返回格式化日期

7、返回格式化日期时间

8、数组去重(例:[1,2,3,1,12,3])

9、根据key排序(例:[{id:  1, value: 'asaa'}])

10、根据生日计算年龄

11、根据身份证计算年龄

12、计算两时间差(分钟)

13、生成指定数值随机数

14、检测当前环境是否为手机

15、存储Cookie

16、删除Cookie

17、获取指定名称Cookie

18、获取当前日期前后几天日期

‘捌’ 前端实现扇形一共有几种方法

3种。
代码实现
方法1. border-radius
方法2. canvas + arc
方法3. svg+path
自定义角度、自定义半径、自定义起始坐标等,封装一个组件,通过传递一个角度画出对应角度的扇形。

‘玖’ 前端切换主题颜色的几种思路

如果主题提前配置好是固定的:
1.采用配置不同theme的css文件,使用scss+替换body的class命名空间进行样式覆盖

setting.scss

common.scss

最后形成两个主题文件后,修改body的class就可达到切换主题的目的

2.引用不同的link文件,与上述同理先形成css文件,通过动态改变link引用达到切换主题目的

如果主题不固定的,可借用webpack插件:webpack-theme-color-replacer实现:
vue-cli3配置

app-config.js文件

配置babel.config.js

在utils文件中定义一个themeColorClient.js 用于初始化主题色和记录主题色

除了修改elementUI主题色之外,我们还需要配置其他自己写的样式,需要用到element ui中定义的一些变量
可通过引用@import "../../../node_moles/element-ui/packages/theme-chalk/src/common/var.scss"; 获得element-ui中的变量,并使用,这样可达到一起切换主题效果