杰克工作室 发表于 2023-9-24 10:07

Discuz!开发之模板制作CSS扩展规范与语法规范

<p>在默认模板基础上简单的修改、附加扩展 CSS 时只需在对应的模板套系下添加一个对应的扩展 CSS 文件即可, 例如修改或扩展 common.css 中的代码, 只需在创建的模板套系目录对应位置:common/ 文件夹下新建一个 extend_common.css 文件, 然后追加需要修改或者扩展的 CSS 代码。在生成缓存 CSS 时, 扩展代码会追加到默认模板的 CSS 文件 tmplate/default/common/common.css 解析成当前的模板 id 缓存样式文件。</p>

<h2><strong>一、CSS 继承规范:</strong></h2>

<p>1.1、Discuz! X系列产品中 CSS 文件会在缓存时按照以下顺序进行合并:</p>

<p>&nbsp; &nbsp;a.template/default/*.css 文件。</p>

<p>&nbsp; &nbsp;b.当前模板是非默认模板时, template/当前模板目录/extend_*.css 文件 或 template/当前模板目录/*.css。</p>

<p>&nbsp; &nbsp;c.当某插件启用时, source/plugin/插件目录/template/extend_*.css 文件。</p>

<p>1.2、因此非默认模板目录中的 CSS 属性将继承默认模板中的 CSS 属性, 插件目录中的 CSS 文件将继承前二者的 CSS 属性。</p>

<p>1.3、CSS 自身的集成顺序为:当 CSS 属性名称相同时, CSS 文件中, 写在后面的替换前面的代码。</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><strong>二、CSS书写规范:</strong></p>

<p>2.1、属性写在一行内, 属性之间、属性名和值之间以及属性与&ldquo;{}&rdquo;之间须有空格, 例如:.class { width: 400px; height: 300px; } 。</p>

<p>2.2、属性的书写顺序:</p>

<p>&nbsp; &nbsp;a.针对特殊浏览器的属性, 应写在标准属性之前, 例如:-webkit-box-shadow:; -moz-box-shadow:; box-shaow:;</p>

<p>&nbsp; &nbsp;b.按照元素模型由外及内, 由整体到细节书写, 大致分为五组:</p>

<p>&nbsp; &nbsp; &nbsp;位置:position, left, right, float</p>

<p>&nbsp; &nbsp; &nbsp;盒模型属性:display, margin, padding, width, height</p>

<p>&nbsp; &nbsp; &nbsp;边框与背景:border, background</p>

<p>&nbsp; &nbsp; &nbsp;段落与文本:line-height, text-indent, font,color, text-decoration,...</p>

<p>&nbsp; &nbsp; &nbsp;其他属性:overflow, cursor, visibility,...</p>

<p>&nbsp; c.谨慎添加新的选择符规则, 尤其不可滥用 id, 尽可能继承和复用已有样式</p>

<p>&nbsp; d.选择符、属性、值均用小写(格式的颜色值除外), 缩写的选择符名称须说明缩写前的全称, 例如 .cl -&gt; Clearfix</p>

<p>&nbsp; e.勿使用冗余低效的 CSS 写法, 例如:ul li a span { ... }</p>

<p>&nbsp; f.慎用 !important</p>

<p>7.建议使用在 class/id 名称中的词语</p>

<p>&nbsp; 表示状态:a-&gt;active</p>

<p>&nbsp; 表示结构:h-&gt;header,c-&gt;content,f-&gt;footer</p>

<p>&nbsp; 表示区域:mn-&gt;main,sd-&gt;side,nv-navigation,mu-&gt;menu</p>

<p>&nbsp; 表示样式:l-list,tab,p_pop</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><strong>三、常用css实例:</strong></p>

<p>3.1、兼容IE浏览器 css hack</p>

<p>所有 IE浏览器适用: .ie_all .foo { ... }</p>

<p>IE6 专用: .ie6 .foo { ... }</p>

<p>IE7 专用: .ie7 .foo { ... }</p>

<p>IE8 专用: .ie8 .foo { ... }</p>

<p>&nbsp;</p>

<p>3.2、浮动样式及浮动元素父元素高度自适应样式代码:</p>

<p>.z/.y 浮动 left/right .z { float: left; } .y { float: right; }</p>

<p>.cl:after { content: &quot;.&quot;; display: block; height: 0; clear: both; visibility: hidden; } .cl { zoom: 1; }</p>

<p>&nbsp;</p>

<p>3.3、大标题字体:</p>

<p>.wx, .ph { font-family: &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, STHeiti, Tahoma, SimHei, sans-serif; font-weight: 100; }</p>

<p>&nbsp;</p>

<p>3.4、外边距样式:</p>

<p>.mtn { margin-top: 5px !important; }</p>

<p>.mbn { margin-bottom: 5px !important; }</p>

<p>.mtm { margin-top: 10px !important; }</p>

<p>.mbm { margin-bottom: 10px !important; }</p>

<p>.mtw { margin-top: 20px !important; }</p>

<p>.mbw { margin-bottom: 20px !important; }</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>3.5、文字字体大小:</p>

<p>.xs0 { font-family: {SMFONT}; font-size: {SMFONTSIZE}; -webkit-text-size-adjust: none; }</p>

<p>.xs1 { font-size: 12px !important; }</p>

<p>.xs2 { font-size: 14px !important; }</p>

<p>.xs3 { font-size: 16px !important; }</p>

<p>&nbsp;</p>

<p>3.6、内边距样式:</p>

<p>.ptn { padding-top: 5px !important; }</p>

<p>.pbn { padding-bottom: 5px !important; }</p>

<p>.ptm { padding-top: 10px !important; }</p>

<p>.pbm { padding-bottom: 10px !important; }</p>

<p>.ptw { padding-top: 20px !important; }</p>

<p>.pbw { padding-bottom: 20px !important; }</p>

<p>&nbsp;</p>

<h2>3.7、module.css 文件架构解析(此文件必须按照格式编写):</h2>

<p>/** group::index **/</p>

<p>&nbsp; &nbsp; /* 群组 index 模块使用的CSS */</p>

<p>/** end **/</p>

<p>&nbsp;</p>

<p>/** group::index,forum::index **/</p>

<p>&nbsp; &nbsp; /* 群组 index 和 论坛 index 模块使用的CSS */</p>

<p>/** end **/</p>

<p>&nbsp;</p>

<p>/** forum **/</p>

<p>&nbsp; &nbsp; /* 论坛 所有模块使用的CSS */</p>

<p>/** end **/<br />
示例:</p>

<p>/** forum::forumdisplay **/</p>

<p>.n5_tckdlb {width:1200px;padding:10px 0 20px 10px;}</p>

<p>.n5_tckdlb li {float: left;width: 220px;height: 250px;margin: 20px 19px 0 0;background: #fafafa;}</p>

<p>/** end **/<br />
<img src="data/attachment/forum/202309/24/de9ccc25cd3060ed752075da224b06eb.jpg" /></p>

<p>&nbsp;</p>

<p>实现模块化css分部加载!格式固定多个模块用&ldquo;, &rdquo;隔开例如:</p>

<p>/** misc::invite,group,forum::viewthread,portal::view,home::space **/</p>

<p>这个文件的分部加载是对应程序地址例如:forum.php?mod=forumdisplay, 应当按照 CURSCRIPT::$mod 格式写即:forum::forumdisplay。<br />
<br />
&nbsp;</p>

<h2>discuz论坛中<strong>extend_module.css</strong>如何使用?如何让extend_module.css起到作用?</h2>

<p>/** portal::list **/<br />
/* 频道列表页 */<br />
.bm_h {background: #FFF; border-bottom: 0px solid #DDDDDD; height: 100%;}<br />
/** end **/<br />
<strong>上面的css代码可用于portal中的list.htm,如果没有 portal::list ,那么list.htm调取不到.bm_h这个样式。</strong></p>

<p>&nbsp;</p>

<p>参考资料:https://zhuanlan.zhihu.com/p/36299662</p>
页: [1]
查看完整版本: Discuz!开发之模板制作CSS扩展规范与语法规范