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 Float布局过程与老生常谈的三栏布局

    CSS Float布局 什么是Float Float,即浮动,是CSS中一种布局方式。当该元素被设置为float元素时,它将元素从文档流中脱离出来,然后左右移动,直到遇到其容器的边界或另一个float元素为止。 Float的语法 .float-object { float: left | right | none | inherit; } float属性可取…

    css 2023年6月10日
    00
  • 使用CSS设置滚动条样式

    以下是“使用CSS设置滚动条样式”的完整攻略: 使用CSS设置滚动条样式 CSS可以通过伪元素和伪类来设置滚动条的样式,以下是实现滚动条样式的步骤: 使用伪元素和伪类选择器来选择滚动条。 设置滚动条的宽度、高度、颜色等样式属性。 以下是两个示例说明: 示例1:使用伪元素和伪类选择器设置滚动条样式 假设一个用户需要设置滚动条的样式,可以按照以下步骤操作: 在C…

    css 2023年5月18日
    00
  • 完全掌握纯CSS布局网页

    下面我将为你详细讲解“完全掌握纯CSS布局网页”的完整攻略。 基础知识 在开始学习纯CSS布局之前,我们需要掌握一些基础知识:- HTML:HTML是网页标记语言,用于描述网页的结构和内容。- CSS:CSS是层叠样式表,用于控制网页的样式和布局。- 盒子模型:网页中的每一个元素都是一个矩形盒子,它由内容、内边距、边框和外边距组成。 布局方式 网页布局一般使…

    css 2023年6月9日
    00
  • 微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现

    实现微信小程序动态评分展示可以通过以下步骤进行: 1.创建五角星iconfont图标 在iconfont中搜索五角星图标,下载SVG格式的图标文件。在微信小程序开发工具中,新建一个iconfont.wxss文件,将SVG文件放在该文件夹中,通过以下代码定义五角星的样式: @font-face { font-family: ‘iconfont’; src: u…

    css 2023年6月10日
    00
  • css样式实现整个页面背景使用一张图片

    当我们需要让整个页面的背景使用一张图片时,可以通过CSS样式来实现,具体步骤如下: 创建一个包含背景图片的CSS样式 将下面的代码复制到样式表中,将”background-image”属性的值改为你想要使用的图片路径。 body { background-image: url(‘path/to/background-image.jpg’); backgrou…

    css 2023年6月9日
    00
  • jQuery EasyUI基础教程之EasyUI常用组件(推荐)

    jQuery EasyUI基础教程之EasyUI常用组件(推荐) EasyUI是一款基于jQuery的UI框架,提供了丰富的UI组件和功能,使得开发者能够更加轻松地开发出高质量的Web应用程序。本教程将介绍EasyUI最常用的组件,方便开发者能够快速上手。 TreeGrid TreeGrid是EasyUI中非常实用的一个组件,它可以将表格以树的形式呈现出来。…

    css 2023年6月10日
    00
  • 阿里巴巴UED:Alibaba国际站首页改版小结

    让我来为您详细讲解“阿里巴巴UED:Alibaba国际站首页改版小结”的完整攻略。 简介 Alibaba国际站首页改版是阿里巴巴用户体验设计部(UED)为了提高用户体验和转化率所进行的一个重大改版。改版方案包括:页面结构、交互方式、视觉风格和业务功能等方面的升级,旨在通过提高首页的视觉效果、易用性以及功能性,让用户更好地理解阿里巴巴的全球化布局和产品优势,进…

    css 2023年6月11日
    00
  • CSS教程:盒模型(BOX Model)

    下面是CSS教程:盒模型(BOX Model)的完整攻略: 一、什么是盒模型? CSS盒模型(Box Model)是CSS的基础知识,在理解CSS及布局的过程中至关重要。一个HTML元素在页面上占据一个矩形的区域,这个矩形就称之为盒模型。 盒模型的4个部分:1. 内容区:元素的实际内容,例如文字、图片等。宽度(width)和高度(height)指的是内容区的…

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