主頁 > 網(wǎng)站建設(shè) > 建站知識(shí) > DedeCMS修改模板默認(rèn)CSS文件分析全過程

DedeCMS修改模板默認(rèn)CSS文件分析全過程

POST TIME:2017-12-13 23:07

首先,打開后臺(tái)——模板——默認(rèn)模板管理——index.htm.

看到有一句,<link href="{dede:global.cfg_templeturl/}/style/dedecms.css" rel="stylesheet" media="screen" type="text/css" />說明,我們模板是根據(jù)這個(gè)CSS來布局網(wǎng)頁的,于是我們就打開網(wǎng)站目錄下面的templets\style\dedecms.css.然后來分析一下CSS的構(gòu)成。

我們根據(jù)主頁的調(diào)用,來研究CSS這樣容易理解。我們打開主頁模板,找到:

<div class="w960 center clear mt1">/*這句是控制除了網(wǎng)站頭部和友情鏈接的所有結(jié)構(gòu)樣式*/

那么 w960 center clear mt1 都定義了什么呢?我們打開DEDECMS.CSS 找打相關(guān)的定義。

/*---------- stock ---------*/
.center{
margin:0px auto; 定義了CSS模塊的邊緣位置都是0,也就是這個(gè)center的層 距離上右下左都是0px;
}
.w960{
width:960px; 定義了整體的寬度為960px;
/*position:relative;*/
}
.pright .infos_userinfo {
margin-bottom: 0px; 定義了首頁右部下的 互動(dòng)中心的下面邊緣為0px;
}
.mt1{/* ( margin-top * 1 ) */
margin-top:8px; 定義了mt1的頂部邊緣為8px;
}
.pright .mt1{
margin-top:0px; 定義了pright 下面的mt1頂部邊緣為0px;
}
.mt2{/* ( margin-top * 2 ) */
margin-top:16px; 頂部邊緣為16px;
}
.clear{
overflow:hidden; 如果clear層里面的內(nèi)容超出了 層的范圍 就隱藏起來。
}

<div class="pleft">這個(gè)pleft 的定義 沒有在dedecms.css 中,但是我們會(huì)發(fā)現(xiàn)一句話

@import url("layout.css");
@import url("page.css");

這說明,在dedecms.css 中引用了 page.css 和layout.css 這兩個(gè)樣式表,于是我們就在page.css 中找到了pleft 的定義

.pleft{
width:712px;定義了寬度
float:left;該層向左浮動(dòng)
overflow:hidden;超出范圍則隱藏
}
<div class="bignews">

在該層下面調(diào)用的是新聞?lì)^條的內(nèi)容,看看它的css

.index .bignews{
width:424px;
height:400px;
float:right; 向右浮動(dòng)
border:1px solid #DFF2F5;表示邊框線用 #dff2f5的實(shí)體顏色填充
background:url(../images/headbg-top.gif) repeat-x;背景圖片為 headbg-top.gif 并且橫向平鋪
overflow:hidden;超出則隱藏。
}

所以,我們看到頭條的這部分是在flash幻燈片右邊顯示,并且加上了淺藍(lán)色的邊框線。
<!--頭條-->
<div class="onenews"> 再來看看 onenews是如何定義的。
.index .bignews .onenews{
margin:0 3px 0 3px; 左右外邊距分別空3個(gè)像素
padding:7px 6px;上左內(nèi)邊距分別空7,6個(gè)像素
border-bottom:1px dashed #EBEBEB;下邊框加一個(gè) #ebebeb的虛線
}
所以我們看見頭條的文章左右都有一定的距離,并且下面還有一個(gè)虛線顯示

</div>
<!-- /onenews -->
這個(gè)下面調(diào)用的是以往的頭條,默認(rèn)的有4篇文章,調(diào)用了d1 d1arc 2個(gè)css

.index .bignews div.d1{
padding:6px 10px;
clear:both;這句話是清除浮動(dòng),如果不加它,大家可以試試看,是不是 d1 這個(gè)層就跑到 頭條的右邊了。
width:406px;
overflow:hidden;
}
.index .bignews div.d1arc{
margin-right:12px;
width:190px;
float:left;因?yàn)榇藭r(shí)要調(diào)用4篇文章,改文章是2*2排列的,如果不加這個(gè)屬性,新聞就應(yīng)該垂直排列了(因?yàn)槟銊偛庞胏lear:both 清除浮動(dòng)啦),大家試試看是不是這樣的。
height:24px;
line-height:24px;行間距,即字體最底端與字體內(nèi)部頂端之間的距離
overflow:hidden;
}
<!--/頭條-->
<div class='newarticle'>最新文章</div>
下面看看 newarticle 這個(gè)css吧,還是拿快學(xué)網(wǎng)的首頁舉例子,上面的這句是用來顯示 “最近更新”那幾個(gè)綠顏色字的,看看它是怎么定義的。

.index .bignews div.newarticle{
height:24px; 高度
background:url(../images/new-article.gif) 8px 3px no-repeat;背景圖片在x軸8px 和y軸3px出出現(xiàn)
font-size:0px;
color:#fff;
} 所以,我們能看到那個(gè) 最近更新 并且還有一個(gè)橫條,其實(shí)它是個(gè)圖片,大家右鍵圖片另存為看看就知道了

<ul class="c2 ico1">
這里面調(diào)用了 c2 和ico1 兩個(gè) css

.index .bignews ul.c2{
width:416px;
padding:0px 4px 0px; 內(nèi)邊距為 上0 右4下0
clear:both;清除浮動(dòng) 和上面的意思一樣
overflow:hidden;
}

ico1 這個(gè)css 在layout.css 中了。

.ico1 li{
padding-left:16px; 指的是 新聞列表左內(nèi)邊距為16px
background:url(../images/ico-1.gif) 7px 11px no-repeat; 背景在7px,11px 處出現(xiàn),所以我們看到最新文章的列表左邊都有一個(gè)小黑點(diǎn),這個(gè)小黑點(diǎn)就是 ico-1.gif
}

</ul>
</div>
<!-- /bignews --> 到此,中部的頭條新聞和最近更新已經(jīng)分析完了。
<div class="flashnews">
看看flash的 css 定義

.index .flashnews{
width:280px;
height:192px;
overflow:hidden;
float:left;這句決定了,flash 的新聞列表在 頭條的左邊顯示。如果你把bignews 和flashnews 的float 屬性互換一下應(yīng)該是上面結(jié)果呢?大家試試看。
}
</div>
<!-- /flashnews -->
<div class="latestnews">這邊是特別推薦調(diào)用的樣式,還是來看看css

.index .latestnews{
width:280px;
height:200px;
margin-top:8px;
float:left;
}
.index .latestnews dl dd{
padding:2px 5px;
}
.index .latestnews ul a{
color:#555;
} 這里面就不用解釋了吧,可以和上面的對(duì)照一下就能明白上面意思了。關(guān)鍵dl dt dd 要弄明白是什么意思。

dl 內(nèi)容塊
dt 內(nèi)容塊的標(biāo)題
dd 內(nèi)容
可以這么寫:
<dl>
<dt>標(biāo)題</dt>
<dd>內(nèi)容1</dd>
<dd>內(nèi)容2</dd>
</dl>

<dl class="tbox light">
在layout.css 中找到 tbox 的相關(guān)定義,其他的都不用羅嗦了,只有一句大家注意看一下

.tbox dt strong{
height:26px;
line-height:26px; !important;line-height:25px; 這一句是為了兼容IE和FF,比如

font-size: 12px !important;
font-size: 13px;
在IE里面,由于IE不理解 !important,則字體大小按照最后設(shè)定的13px展示
而FF里面, !important為提高優(yōu)先級(jí)別,則字體大小按照 !important標(biāo)記的12px展示

某些css某些代碼在這兩類瀏覽器里的顯示是有差別的(注意這也是使用!important的主要原因所在),比如height: 21px;,在IE6和(IE7,F(xiàn)F)里顯示就有差別,后者(IE7,F(xiàn)F)會(huì)比前者(IE6)少一個(gè)像素。
padding-left:22px;
padding-right:4px;
display:block;//變成塊級(jí) ,因?yàn)閟trong 是內(nèi)聯(lián)元素,必須強(qiáng)制轉(zhuǎn)換,不然的話你是沒有辦法定義padding 的。大家可以百度一下 內(nèi)聯(lián)元素看看。
float:left;
color:#397CBE;
background:url(../images/fbico.gif) 5px 6px no-repeat;
letter-spacing:1px;
}

<dt vlass='light'><strong>特別推薦</strong></dt>

這里的 vlass 我就不明白了,不知道什么什么意思了。有知道的可以告訴小弟一下。


<dd class='light'>
<ul class="d2 ico2">
下面的樣式 已經(jīng)在上面 分析過了。
</ul>
</dd>
</dl>
</div>

哦了,這些就是模板上面部分的部分 css 詳解,大家是否明白了,相信讓大家改個(gè)位置,變個(gè)邊框線的顏色應(yīng)該沒有問題了吧

<div class="picnews">//大家找到與之相對(duì)應(yīng)的CSS 這里是定義圖文資訊的css,該寬度應(yīng)該和pleft的寬度一樣,除非你想要自己另外定義它的寬度。
<dl class="tbox light">
<dt class='light'><strong>圖文資訊</strong></dt>

此處調(diào)用 dt.light strong{
background:url(../images/fbico2.gif) 5px 5px no-repeat;
} 這個(gè)CSS。
<dd class='light'>
<ul class="e1">

調(diào)用e1,.e1{/* 橫向浮動(dòng)的圖片列表 120*90 */
width:100%;
overflow:hidden;
clear:both;
padding-top:10px;
padding-bottom:8px;
}以上是定義整體的圖片顯示空間。

.e1 li{
width:126px;定義每個(gè)圖片的或者新聞列表的寬度,這個(gè)寬度不是隨便定義的要具體的算一下,比如126*5+5*12=690

因?yàn)槭?張圖片,所以這么來算,在加上 .light dd{
border-left:1px solid #BFE0F9;
border-right:1px solid #BFE0F9;
border-bottom:1px solid #BFE0F9;
padding:4px 4px 0px;//上 左右 分別為4px;
overflow:hidden;
} 這個(gè)當(dāng)中的 8px 所以沒有超出 712,看來定義一個(gè)css 不是那么容易的事啊,像我這樣 數(shù)學(xué)不好的真就不能弄的太清楚了。
overflow:hidden;
padding-left:12px; 列表的左內(nèi)邊距 剛才*5 就是用它乘的。
float:left;
text-align:center;列表中的文字居中對(duì)齊。把它改成left 看看 哪個(gè)地方可以改變??
}
</ul>
</dd>
</dl>
</div>
<!-- /picnews -->
<div class="listbox">//調(diào)用listbox css

.index .listbox{
width:720px;這個(gè)地方我覺得是為了下面容易分割。352+8=360,
overflow:hidden;超出就隱藏,因?yàn)閜left才712,所以多余的會(huì)隱藏。
float:left;
clear:both;
overflow:hidden;
}
.index .listbox dl{
width:352px;//內(nèi)容塊為352,大家都知道是調(diào)用了2列,但是大家可以看到其實(shí)第2列右邊是沒有空隙的,所以總寬度還是352+8+352=712px,正好是pleft的寬度,看來作者真是想的夠周到的了。
margin-right:8px;
margin-top:8px;
float:left;
}
{dede:channelartlist}
<dl class="tbox">/調(diào)用tbox ,不調(diào)用這個(gè)下部也沒有 橫線???
<dt><strong><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></strong><span class="more"><a href="{dede:field name='typeurl'/}">更多...</a></span></dt>調(diào)用標(biāo)題.tbox dt strong 和上節(jié)課哪個(gè)調(diào)用特別推薦 是一個(gè)道理。
<dd>
<ul class="d1 ico3">
{dede:arclist titlelen='60' row='8'}
<li><span>[field:pubdate function="MyDate('m-d',@me)"/]</span><a href="[field:arcurl /]">[field:title /]</a></li>
{/dede:arclist}
</ul>//這里面有個(gè) d1 ,主要是用來控制 每一行輸出的樣式,沒有什么特殊的,就不啰嗦了。ico3就是給每個(gè)新聞標(biāo)題加個(gè)前置圖片。
</dd>
</dl>
{/dede:channelartlist}
</div>
<!-- /listbox -->
</div>
<!-- /pleft -->

至此,pleft 的css 分析結(jié)束了



收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266