Discuz-x系列教程 DX的css命名规则、缓存、加载机制

Discuz-x系列教程 DX的CSS命名规则

Discuz-x (简称DX)是一款流行的论坛系统,它的前端开发使用了LESS和CSS预处理语言,同时有一套自己的CSS命名规则。

DX的CSS命名规则

DX的CSS命名规则主要包括以下几个方面:

  1. 命名空间:通过给不同部分的CSS添加命名空间来避免CSS的冲突。命名空间可以是类名、ID或其他选择器。例如:

```
.header-menu {
background-color: #fff;
}

.sidebar-menu {
background-color: #f1f1f1;
}
```

这里.header-menu.sidebar-menu就是命名空间。

  1. BEM规范:采用BEM (Block Element Modifier) 命名规范来组织页面元素、样式和JS交互,使之更易于理解和维护。例如:

.button {}
.button--primary {}
.button__icon {}
.button__text {}

这里.button是块级元素,.button--primary表示.button的一种状态,.button__icon.button__text.button的组成部分。

  1. 重置样式:在不同的浏览器和设备下,有些元素的默认样式是不同的,为了避免这种不一致性,DX会对一些元素进行重置样式。例如:

```
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}

/ HTML5 display-role reset for older browsers /
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}

body {
line-height: 1;
}

ol, ul {
list-style: none;
}

blockquote, q {
quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}

table {
border-collapse: collapse;
border-spacing: 0;
}
```

DX的缓存和加载机制

DX使用了一些缓存和加载机制来提高访问速度和用户体验,其中包括:

  1. 模板缓存:已经编译好的模板会被缓存,下次访问直接调用缓存的模板文件,加快页面的展示速度。

  2. CSS合并与压缩:将多个CSS文件合并成一个文件,减少了浏览器对于CSS的请求次数,同时还对CSS进行了压缩,减小了CSS文件的体积,提高了加载速度。

  3. JS异步加载:DX使用require.js库来异步加载Javascript文件,这样页面的渲染就不受JS文件的加载速度影响。

示例说明

示例1:使用BEM规范

通过使用BEM规范,我们可以将页面元素、样式和JS交互组织起来。例如下面这个按钮组件:

<div class="button button--primary">
  <span class="button__icon"></span>
  <span class="button__text">Submit</span>
</div>

在使用BEM规范的情况下,可以将这些元素的CSS样式分别定义为:

.button {}
.button--primary {}
.button__icon {}
.button__text {}

这样,在页面增加新的按钮组件时,只需要按照上述规则进行命名,就能避免样式冲突的问题。同时,在修改样式时也能更容易地定位到相关的代码。

示例2:CSS文件合并与压缩

我们假设有两个CSS文件:style1.cssstyle2.css,下面是它们的代码:

/* style1.css */
body {
  background-color: #fff;
}

/* style2.css */
.header {
  height: 60px;
}

如果我们在HTML页面中引入这两个文件,代码如下:

<link rel="stylesheet" type="text/css" href="style1.css">
<link rel="stylesheet" type="text/css" href="style2.css">

那么页面就会向服务器发送两个请求,分别获取style1.cssstyle2.css,这样就会影响页面的加载速度。

为了避免这个问题,我们可以将这两个文件合并并压缩成一个文件,代码如下:

/* merge.css */
body{background-color:#fff}.header{height:60px}

在HTML页面中引入这个文件,代码如下:

<link rel="stylesheet" type="text/css" href="merge.css">

这样一来,页面只需要向服务器发送一次请求,就能获取到所有的CSS文件,提高了页面加载速度。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Discuz-x系列教程 DX的css命名规则、缓存、加载机制 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 用CSS开发时髦的导航栏第二篇

    总体思路: 先用HTML定义导航栏的外框架,确定导航栏的基本结构。 使用CSS样式定义导航栏的样式,包括背景、高度、宽度以及对鼠标的交互效果等。 对选中的菜单项增加样式,以凸显当前所选项目。 对二级菜单进行样式定义并实现显示。 Step1:HTML定义导航栏的外框架 导航栏最外层是 标签,里面嵌套 标签, 标签表示每一个菜单项。 <nav> &l…

    css 2023年6月9日
    00
  • 纯css3制作煽动翅膀的蝴蝶的示例

    接下来我会详细讲解如何使用纯CSS3制作煽动翅膀的蝴蝶示例。 准备工作 在开始制作示例之前,我们需要准备以下素材: 蝴蝶的图片,保证图片分辨率清晰。 一些基本的HTML和CSS知识,对盒模型、定位、z-index等属性有一定的了解。 步骤 第一步: HTML结构的搭建 在HTML中定义一个div容器,作为蝴蝶的容器。并在这个容器中插入图片。具体代码如下: &…

    css 2023年6月10日
    00
  • 常用jQuery选择器汇总

    对于常用jQuery选择器汇总,可以遵循以下步骤进行讲解: 一、什么是jQuery选择器? jQuery选择器是一种用于操作和处理HTML和CSS的字符串规则,该规则允许开发人员按指定方式选择和操作HTML和CSS元素。jQuery选择器通常用于筛选或搜索HTML元素,然后进行修改或操作。 二、常用的jQuery选择器有哪些? jQuery选择器按功能和用途…

    css 2023年6月10日
    00
  • JavaScript30 一个月纯 JS 挑战中文指南(英文全集)

    下面是详细讲解“JavaScript30 一个月纯 JS 挑战中文指南(英文全集)”的完整攻略: 简介 “JavaScript30 一个月纯 JS 挑战中文指南(英文全集)”是由 Wes Bos 所创建的一个纯JavaScript挑战项目,旨在帮助JavaScript初学者提高编程能力。该项目包含30个不同主题的挑战,每个挑战需要纯JavaScript完成。…

    css 2023年6月9日
    00
  • css中style和class的加载顺序示例介绍

    让我们来详细讲解“CSS中style和class的加载顺序示例介绍”的攻略。 什么是CSS中style和class 在CSS中,我们通常使用style和class来设置元素的样式。 style用于直接在HTML标签上设置样式,比如: <div style="color: red;">Hello, world!</div&…

    css 2023年6月9日
    00
  • css旋转导航的示例代码

    下面是详细讲解 “CSS旋转导航”的完整攻略。 1. 概述 CSS旋转导航是一种比较常见的网站导航样式,可以将网站导航菜单以立体的效果展现出来,增强网站的视觉效果,同时提升用户体验。 2. 实现方法 2.1 通过 transform 进行旋转 首先,我们需要了解 transform 属性,该属性可以通过 rotate 旋转、translate 平移、scal…

    css 2023年6月9日
    00
  • CSS选择器种类、优先级与匹配原理详解

    关于“CSS选择器种类、优先级与匹配原理详解”的完整攻略,我们可以从以下几个方面进行详细讲解: 一、CSS选择器种类 CSS选择器是一种用于选择网页中某一元素的方法。CSS选择器种类包括以下几种: 1.1 元素选择器 元素选择器是按照HTML元素进行选择的。它是最基本的选择器,可以从页面中选出指定的元素。 例如,使用以下代码可以选择所有的段落元素: p { …

    css 2023年6月9日
    00
  • angularjs表格分页功能详解

    AngularJS表格分页功能详解 当我们在网站中展示大量数据时,表格分页功能是必不可少的。在AngularJS框架中,我们可以很轻松地使用依赖注入的方式,添加表格分页功能。 依赖注入 我们需要引入一些依赖才能使用AngularJS的表格分页功能。在HTML页面中,我们需要引入AngularJS库和AngularJS的分页模块: <script src…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部