Discuz! X的CSS加载机制
首先,每个页面都会加载以下两个css,data/cache/style_1_common.css和data/cache/style_1_forum_index.css。
先讲讲这两个文件名的命名规则:第一个是整站通用的css,所以命名为common.css,然后前面的代号是你使用了哪套风格,所以style_1_common.css表示是第一套风格的共用的css;第二个是表示forum的index页面风格,也就是论坛的首页风格。
下面讲一下那两个css是如何生成的。
首先,那两个css是程序生成的css缓存,所以你要改css的话,不能直接改那两个文件,否则一更新缓存,之前的改动就无效了。大家可以看到template对应的每套模板中,就拿自带的default模板举例吧,default模板中,带有一个common的文件夹,里面有css文件,common.css对应的就是生成缓存的style_1_common.css文件,style_1_forum_index.css对应的是module.css。
common.css没有什么特别之处,里面也有css的说明,跟普通的css差不多。
大家打开module.css,可以看到有这样的说明,
/** group::index **/
/* 群组 index 模块使用的CSS */
/** end **/
/** group::index **/开始到/** end **/结束,说明是group频道的index模块使用的CSS,也就是群组频道对应的首页模板将使用的CSS。
再举个例子,/** misc::invite,group,forum::viewthread **/开始到/** end **/结束,说明是misc频道的invite模块、group频道的全部模块和forum频道的viewthread模块使用的CSS。
ok,下面的大家可以参照这个学习一下,包括你想扩展他,都可以直接在里面直接添加就可以。
下面讲讲缓存css是如何生成的,common.css比较简单,就是直接读取,然后生成到data/cache目录下。每个频道模块独立的css,会先将module.css在data/cache下生成一个对应的风格id下的缓存的css,然后当你访问某个频道时,会生成对应频道下的css,此时,刚才介绍的那些标识就起作用了。程序会根据/** group::index **/和/** end **/这种标识,拆分出哪些频道、哪些模块该需要哪些css。
程序部分就不介绍了,程序的代码主要在source/class/class_template.php文件处理,有兴趣的同学可以深入研究一下。
Discuz! X的CSS加载机制的更多相关文章
- css加载会造成阻塞吗?
终于考试完了,今天突然想起来前阵子找实习的时候,今日头条面试官问我,js执行会阻塞DOM树的解析和渲染,那么css加载会阻塞DOM树的解析和渲染吗?所以,接下来我就来对css加载对DOM树的解析和渲染 ...
- css加载会造成阻塞吗
本文由云+社区发表 作者:嘿嘿嘿 可能大家都知道,js执行会阻塞DOM树的解析和渲染,那么css加载会阻塞DOM树的解析和渲染吗?接下来,我就来对css加载对DOM树的解析和渲染的影响做一个测试. 为 ...
- css加载是否会阻塞dom树渲染
这里说的是头部引入css的情况 首先,我们都知道:css是由单独的下载线程异步下载的. 咱们先分析下css加载会影响什么,刚才的问题太笼统了,咱们需要细化一下. 会影响什么呢? 一个就是DOM树解析, ...
- 在HTML中使用JavaScript(浏览器对js的加载机制分析)
前言: 向HTML页面中插入JavaScrip的主要方法,就是使用<script>标签.主要探讨<script>标签的在HTML页面的渲染机制.对应的业务场景:从js的加载机制 ...
- CSS加载不会阻塞DOM树解析
1.css的加载不会阻塞DOM树解析. 1).css加载不会阻塞DOM树的解析: 2).css加载会阻塞DOM树渲染: 先把DOM树结构先解析完,等CSS加载完后根据最终样式渲染DOM树,免了css加 ...
- jvm系列(一):java类的加载机制
java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...
- css加载优化
<head> <script> // https://github.com/filamentgroup/loadCSS !function(e){"use stric ...
- 【前端】CommonJS的模块加载机制
CommonJS的模块加载机制 CommonJS模块的加载机制是,输入的是被输出的值的拷贝.也就是说,一旦输出一个值,模块内部的变化就影响不到这个值. 例如: // lib.js var counte ...
- Yii2的深入学习--自动加载机制
Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 ...
随机推荐
- 并查集(Disjoint Set)
在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中.这一类问题其特点是看似并不复杂, ...
- NSArray数字和排序
1.数字 int main(int argc, const char * argv[]) { @autoreleasepool { //添加空白 [NSNull null] // NSArray *a ...
- 快速排序(java版)
public class QuickSortTest{ //比较与交换 private static int partition(int[] source, int low, int hight) { ...
- IOS之未解问题--关于IOS图像渲染CPU和GPU
前言:先上一个图.关于UIKit底层渲染机制,这个有待以后花大把时间收集资料和学习,然后汇总,将整篇"未解问题"去除. 反思:半个月前阿里电话面试,问道一个问题图像渲染什么时候回用 ...
- UVa 106 - Fermat vs Pythagoras(数论题目)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
- 基于git的工作流程
本文针对的是追求极致.快速的产品响应团队的.以下的观点和内容都是围绕这个主题,暂时不涉及个人学习和团队学习. 在说工作流程之间,想说一下我们平常工作中遇到的一些困惑或者说现象 在一个团队里,同时有好多 ...
- Flash网站Loading制作
Flash网站Loading制作~~~ stop(); stage.scaleMode=StageScaleMode.NO_SCALE; //指定舞台属性为不跟随播放器大小而改变 stage.show ...
- 一个不错的shell 脚本教程 入门级
一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂 建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行s ...
- Sql practice
employee表 数据准备 use tempdb go if OBJECT_ID('employee') is not null drop table employee ;with employee ...
- NFS(Network File System)服务配置和使用
Sun公司开发NFS (Network File System)之初就是为了在不同linux/Unix系统之间共享文件或者文件夹.可以在本地通过网络挂载远程主机的共享文件,和远程主机交互.NFS共享存 ...