首先,每个页面都会加载以下两个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加载机制的更多相关文章

  1. css加载会造成阻塞吗?

    终于考试完了,今天突然想起来前阵子找实习的时候,今日头条面试官问我,js执行会阻塞DOM树的解析和渲染,那么css加载会阻塞DOM树的解析和渲染吗?所以,接下来我就来对css加载对DOM树的解析和渲染 ...

  2. css加载会造成阻塞吗

    本文由云+社区发表 作者:嘿嘿嘿 可能大家都知道,js执行会阻塞DOM树的解析和渲染,那么css加载会阻塞DOM树的解析和渲染吗?接下来,我就来对css加载对DOM树的解析和渲染的影响做一个测试. 为 ...

  3. css加载是否会阻塞dom树渲染

    这里说的是头部引入css的情况 首先,我们都知道:css是由单独的下载线程异步下载的. 咱们先分析下css加载会影响什么,刚才的问题太笼统了,咱们需要细化一下. 会影响什么呢? 一个就是DOM树解析, ...

  4. 在HTML中使用JavaScript(浏览器对js的加载机制分析)

    前言: 向HTML页面中插入JavaScrip的主要方法,就是使用<script>标签.主要探讨<script>标签的在HTML页面的渲染机制.对应的业务场景:从js的加载机制 ...

  5. CSS加载不会阻塞DOM树解析

    1.css的加载不会阻塞DOM树解析. 1).css加载不会阻塞DOM树的解析: 2).css加载会阻塞DOM树渲染: 先把DOM树结构先解析完,等CSS加载完后根据最终样式渲染DOM树,免了css加 ...

  6. jvm系列(一):java类的加载机制

    java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...

  7. css加载优化

    <head> <script> // https://github.com/filamentgroup/loadCSS !function(e){"use stric ...

  8. 【前端】CommonJS的模块加载机制

    CommonJS的模块加载机制 CommonJS模块的加载机制是,输入的是被输出的值的拷贝.也就是说,一旦输出一个值,模块内部的变化就影响不到这个值. 例如: // lib.js var counte ...

  9. Yii2的深入学习--自动加载机制

    Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个  ...

随机推荐

  1. mod_slotmem mod_manager mod_proxy_cluster mod_advertise Permission denied

    restorecon /etc/httpd/modules/mod_slotmem.so

  2. android 使用HttpURLConnection方式提交get/post请求

    源码链接 package com.zhangbz.submitdata.Utils; import java.io.ByteArrayOutputStream; import java.io.IOEx ...

  3. 关于Socket建立长连接遇到的bug信息

    下面是本人在Socket连接的开发中遇到的bug总结 1."远程服务器关闭了Socket长连接'的错误信息 2.关于"kCFStreamNetworkServiceTypeVoIP ...

  4. Linux写时拷贝技术(copy-on-write)

    COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内 ...

  5. 邮件群发工具(C#版)

    引言 经常会参与组织一些社区活动,涉及到和不同的人进行交流,微信当然是必须的,同样邮件也是一种不可或缺的方式. 一般群发的邮件不是很友好,如果是一对一的,收到邮件的人是不是会比较重视,而且还有他的名字 ...

  6. Linux下恢复删除的文件

    转自:http://github.tiankonguse.com/blog/2015/09/13/linux-remove-recovery/ 下午, DBA找我说有些SQL执行了两个小时了,导致主从 ...

  7. Android 开发之 Android 开发的起步

    前言  Android 开发的起步 我们可以先来看看百科上面怎么说? 百度百科上 Android的介绍 一.Windows环境下在线搭建Android环境. 1. 下载 Android开发工具. JD ...

  8. Windows环境下JDK安装与环境变量配置详细的图文教程

    原文作者:souvc博文出处:http://www.cnblogs.com/liuhongfeng/p/4177568.html 本节内容:JDK安装与环境变量配置 以下是详细步骤 一.准备工具: 1 ...

  9. ls文件与目录检视,文件内容查阅

    -a 列出所有的(含隐藏的)文件,包括.和.. -A 列出所有的(含隐藏的)文件,不包括.和.. -d 仅列出目录本身,而不是列出目录内的文件数据(常用) -f 不进行排序,直接列出结果,ls默认会以 ...

  10. Maven使用笔记,错误Failure to Transfer后处理

    当有未更新成功的项,M3会以后缀为.lastUpdated保存未更新成功的项 执行下面的操作可清楚这些项 Unixfind ~/.m2 -name "*.lastUpdated" ...