关于主题:在线主题切换换肤方案

在SaaS平台中须要实现千人千面,每个租户须要以后平台尽量跟客户公司其余零碎在格调上保持一致。为了尽量减低老本,采取在线换肤的形式解决,做到同一零碎线上同时反对任意套皮肤(主题)和新租户无需新的开发。本文探讨不同形式的换肤实现的区别。 预设多主题经典计划:网站的所有款式代码提前预设一些色彩,在构建的时候生成多份皮肤款式。而后凋谢给用户无限的抉择这几个皮肤,抉择后,替换或者笼罩原来的款式文件。 该计划要害是如何生成多份皮肤款式文件和如何替换款式文件。生成多份款式文件能够利用less, scss等css预处理语言中的变量能力。在编译时,调整变量生成多份款式文件。生成的款式文件名中,能够携带皮肤名(个别会形象成具备情感色的名次如落日黄),这样在用户抉择新的“皮肤”时,能够替换或者加载(笼罩)新的款式链接,达到切换皮肤的指标。 该计划的毛病: 线上只能反对无限数量的皮肤(取决于预埋数量),不能用户自定义色调;款式文件替换非常复杂 如果采纳全副款式文件都放在一个文件中,能够简化很多操作。但会极大的减少首屏老本,并且不合乎以后前端组件化开发把款式文件放在组件内容旁边的形式;如果是扩散的款式文件,在切换时,除了要替换以后曾经加载的款式文件,对于新页面的款式文件,也须要加载指定色调款式文件,须要对webpack等打包工具做一些优化调整;所以该计划比拟适宜组件库(以后风行的组件库的主题定制根本也就提供这个能力),不是很适宜整体网站的换肤计划。 该计划能够参考知乎文章: 基于less、sass的在webpack或vite等的动静主题的实现计划。为了反对用户自定义色彩,能够在后端创立一个动静生成指定色调的全款式文件的API,如[email protected]中的在线主题编辑器。但这须要依赖后端能力,且款式文件为动静之后,缓存会受到极大的影响,进而影响加载性能。 对于间接在浏览器中应用less或者scss等,这个别用于试验性质,会耗费大量客户端性能,不举荐应用。 css in js如果你的网站应用css in js编写,那么换肤性能将会非常容易实现。只须要将主题色从用户上下文中获取后设置到组件上下文中,其余组件通过获取上下文中主题色的值来设置色彩即可。 该计划的毛病: 国内很少有团队应用css in js开发,很有可能你以后的我的项目不是采纳css in js开发;生态有余,很多组件库不是采纳css in js, 须要额定的非凡解决;这里提供一个对没有应用css in js的组件库的非凡解决计划:将组件库的全量款式文件包裹在一个款式组件中,对其中的主题色全副换成js变量。上述组件革新计划毛病: 极大减少了组件库降级老本,每次降级都要从新将组件库全量的款式文件进行css in js革新失落组件库款式的按需引入能力。如果对每个组件的款式文件都进行革新,那第一轮革新和后续降级的工作量会翻几倍。 css变量css很早以前曾经反对了css变量。在应用色调的中央,替换为应用css变量,而后管制css变量即可换肤。具体计划能够参照知乎文章:基于Css Variable的主题切换完满解决方案。 该计划可能存在以下问题: 技术还是比拟新,可能以后的我的项目并不是应用css变量,革新起来老本太高;不兼容ie,尽管有垫片,但谁晓得有多少坑在后面等着你;如果是一个新我的项目,且不须要过多的思考兼容ie, 强烈建议应用css变量进行开发,跟less,scss等预处理工具一起应用也没有抵触。 色彩内容替换假如咱们可能承受,换肤就是把所有(或者绝大多数)的色彩A的中央都换成色彩B的话(除色彩外,其余限定的一些款式值也能够),那么换肤只须要有一种形式找到指标款式值,把它替换成另一个值即可。 浏览器的的document.styleSheets,能够查问到以后网站上所有的款式内容并且能够批改。如: // document.styleSheets.item(*).cssRules[*].style[{styleName}] = {updateValue}document.styleSheets.item(0).cssRules[0].style['color'] = 'red';该形式在运行时动静设置,不须要调整任何服务器上的源码,计算逻辑都在客户端,且实现原理非常简单。但存下以下致命缺点: 每一次的调整只针对于网站曾经加载后的款式,对于后续加载的新款式,还须要额定的逻辑去解决。比方能够每个页面加载实现后的钩子函数中,或者调整构建逻辑(定制style-loader)在款式资源文件加载胜利后批改款式内容;额定耗费客户端计算资源,可能会有一段响应工夫,造成了换肤客户在拜访页面已开始显示默认色调,短暂工夫后,应用指标色调,可能会呈现闪屏景象;因为采取款式比对形式去批改主题色,会造成一个问题:当第一次批改主题色为一个页面已有的其余色彩(假如为色彩A)后,下一次批改主题色时因为此时曾经将色彩A也当作时主题色,会把不是主题色含意的色调也调整;如果万一呈现某一个跟主题色一样的值的固定色彩值,须要非凡解决;尽管该计划存在重大的缺点,但它也有极大的劣势: 对老我的项目极度敌对,简直无革新老本;简直兼容老我的项目的任何款式开发方式,也简直兼容任何第三方组件库。对业务开发者十分敌对,简直做到了透明化,除间接写在元素style的形式外,不须要减少额定的款式开发标准。构建时替换成css变量尽管“色彩内容替换”计划有重大缺点,但能够依照其思路进行另一种实现:在构建时就将色彩款式内容替换对应的css变量,而后利用css变量的能力,反对整个我的项目换肤。 利用postcss的技术,能够对我的项目产生的css代码进行值的替换。只须要开发postcss插件,对css内容进行匹配转换。如对应用了主题色色彩的款式,替换成对应的css变量。 该计划连续上文中“色彩内容替换”中的长处:兼容老我的项目和第三方组件库。对于其毛病,1-3曾经不存在,第四点能够反对特定的源码正文语法(相似eslint-disable-xxx形式),疏忽一些状况下的替换,用来适配解决极其状况。 除色彩的替换外,也可用于对于一些其余款式的调整为变量,如字体大小,字体等。让换肤的内容更加丰盛。 存在毛病: 不兼容ie,尽管有垫片,但还是倡议无限成果兼容。 总结如果不须要兼容ie浏览器(或者ie浏览器受限拜访),并承受换肤是全局同样色彩值都替换的话,倡议应用“构建时替换成css变量”换肤计划。 “构建时替换成css变量”能够兼容已有我的项目代码和第三方组件库,简直无任何革新老本。并且也不会新增额定的开发标准,能够间接复制应用ued切图进去的款式,进步开发效率。而应用css变量等计划,如同国际化,须要整个团队在继续迭代时刻遵循应用变量的标准,一旦治理不到位,容易失控和造成历史债。

November 8, 2022 · 1 min · jiezi

phpstorm-主题推荐

在日常的开发中发现IDE类型的开发工具对于提高我们的开发效率是大有帮助的。本文给大家分享的一个工具就是phpstorm。主要分享的是一些常用的快捷键以及较为好看的主题。后续持续更新。 主题安装material theme ui主题。先上传一个预览图。 第一步,打开设置,找到plugins的选项。 搜索框输入插件名称。 点击安装并重启phpstorm,下图看到的就是一个启动的引导页,我们可以针对该主题做定制化配置,也可以默认设置,这里我就是选择默认设置。 4.选择主题,同样的打开设置菜单,找到Editor->color scheme->general右侧的Scheme选项。

June 8, 2019 · 1 min · jiezi

odoo12主题样式模块

odoo12主题样式模块图标形式显示菜单目录的结构图标形式显示菜单:https://apps.odoo.com/apps/th…12的基本样式结构:https://www.odoo.com/apps/the…

April 3, 2019 · 1 min · jiezi

分享10个免费H5模版(主题)资源网站

并非所有程序员都是伟大的设计师(实际上我认识的大部分程序员审美都很要命)。所以即使你心血来潮想为自己开发的网站做一把设计,但显然并不是所有用户想为此付钱。。所以在找不到靠谱的美工的时候,还是老老实实的看看有没有现成的资源可以利用吧。以下是各种网站主题的绝佳资源,从通用主题、后台管理到电商系统。1. HTML5 UpHTML5 Up 有40~50个非常好的简单但优雅的HTML5 / CSS3主题。他们的大多数主题都是通用的,你可以将它们用于任何类型的网站或应用程序。这些主题有很好的响应式设计,在移动设备上看起来很棒,并且完全可定制,并且在Creative Common License下完全免费。每个主题都提供了在线演示,顶部有一个导航栏,可以显示桌面,平板电脑和移动设备的外观。我喜欢这些主题简洁的设计,很易于使用。相比而言,有些付费主题却更加复杂难用。程序员都喜欢简单!2. Start BootstrapStart Bootstrap当然是Bootstrap主题。里面都是最新的bootstrap4主题,很好的入门主题。提供了最精简的模版让你你可以轻松自定义。他们还提供非常好看的后台管理的模版。因此,如果要构建类似博客或CMS的东西,那么你可以找到非常好看的前端界面。我在使用PHP Codeigniter以及Node和Express.js构建的项目中使用了admin主题。如果免费选择不够,他们还提供更好看的高级主题。像大多数此类网站一样,你可以在下载之前预览主题。3. Templated.coTemplated.co是免费HTML5主题的另一个重要资源。拥有近900个免费主题的集合,这些主题在Creative Commons License下是免费的。主题都非常通用,支持在线预览。他们有一些不错的网格库类型主题,适合作为图像分享网站的主题。4. Free HTML5freehtml5.co有付费的高级主题,但是也有很多很棒的免费主题。有许多通用主题以及从律师事务所到摄影主题。许多主题也有很好的动画。有些是纯HTML,有些是Bootstrap的。5. ColorlibColorlib是一个很棒的网站,他们有很多免费主题。有一些独特的类别,如医疗和旅行为主题。也有一些不错的房地产主题,其中一个我几乎用于我的Django课程的房地产应用程序,但最终我决定创建自己的。他们有大量标准的HTML5主题以及一些非常酷的Wordpress主题。他们的实时预览浏览器易于使用,你可以快速测试每个主题。6. Zero ThemeZeroTheme有120多个免费主题可供选择,它们都是响应式的。其中87个是HTML,37个是Bootstrap 4,都提供了桌面版和移动版的预览。在我看来,很多设计看起来非常相似,但你可能会找到你喜欢的东西。7. StyleshoutStyleshout有一些非常好看的响应式主题。他们有一些单页主题,这使它们很容易自定义。他们甚至有“敬请期待”和“404页面”的主题,这真的很酷。他们的许多主题都用JavaScript实现了一些动态的效果,如倒计时和滑块。他们还提供定制化服务,如果您需要定制,您可以支付费用并让他们这样做,这对非开发人员来说非常好。8. HTML5xCSS3html5xcss3.com有不同类别的有大约500个免费主题。其中许多都是基于Bootstrap的。他们也有一些Wordpress主题。这些设计并不具有超级创意,但它们看起来非常简单易用,可以自定义满足你的大部分需求。他们也有一些付费的高级主题。9. 后台管理主题Athemes有一篇文章展示了20多个非常好的后台管理系统主题。这些管理面板设计得很好,很多都具有动态功能,如图表和弹窗。大多数是基于Bootstrap的,有一些基于Material Design和常规HTML5。10. 电商主题Themewagon有一篇文章推荐了很多的HTML5和Bootstrap 4电商主题。范围从服装、家具到电子产品。也有很多是通用的,可用于任何网上店铺。无论您是从头开始构建电商系统还是使用Magento之类的东西,这些主题或多或少都可以帮助你搭建出一个漂亮的电商网站。提示以上资源国内访问较慢,翻墙比较快。

January 2, 2019 · 1 min · jiezi