首頁 > web前端 > html教學 > 關於HTML中的捲軸/去掉捲軸問題_HTML/Xhtml_網頁製作

關於HTML中的捲軸/去掉捲軸問題_HTML/Xhtml_網頁製作

WBOY
發布: 2016-05-16 16:38:41
原創
1380 人瀏覽過

1.xhtml下捲軸的顏色問題

在原來的html的時候,我們可以這樣定義整個頁面的捲軸:

複製程式碼
程式碼如下:

body{
scrollbar-3dlight-color:#D4D0C8; /*- 最外左-*/
scrollbar -highlight-color:#fff; /*- 左二-*/
scrollbar-face-color:#E4E4E4; /*- 面子-*/
scrollbar-arrow-color:#666; /*-箭頭-*/
scrollbar-shadow-color:#808080; /*- 右二-*/
scrollbar-darkshadow-color:#D7DCE0; /*- 右一-*/
scrollbar-base -color:#D7DCE0; /*- 基底色-*/
scrollbar-track-color:#;/*- 滑軌-*/
}

但是同樣的程式碼,我們應用在xhtml下就不起作用了,我相信好多好朋友也遇到同樣的問題。

那麼怎麼才能在xhtml下套用捲軸樣式呢?看以下程式碼:

複製程式碼
程式碼如下:

scrollbar-3dlight-color:#D4D0C8; /*- 最外左-*/
scrollbar-highlight-color:#fff; /*- 左二-*/
scrollbar-face-color:#E4E4E4; /*- 面子-*/
scrollbar-arrow-color:#666; /*- 箭頭-*/
scrollbar-shadow-color:#808080; /*- 右二-*/
scrollbar -darkshadow-color:#D7DCE0; /*- 右一-*/
scrollbar-base-color:#D7DCE0; /*- 基底色-*/
scrollbar-track-color:#;/*- 滑道-*/
}

這段程式碼和上一段唯一的不同就是在css定義的元素上,一個是body一個是html。讓我們再測試一下,把html頁面的「body」修改成「html」測試一下,發現依然可以實現效果。那到底是為什麼呢?

我們來看看下面的圖:

這就是html最基本的dom樹結構。

我們再看html和xhtml的定義:

HTML (Hyper Text Markup Language,超文件標記語言),超文件標記語言廣泛應用於國際互聯網上.HTML描述了文本基準如何進行呈現,以及超級連接如何連接到另外的頁面。

XHTML (Extensible Hypertext Markup Language,可擴展的超文件標記語言),是一種標記語言,表現方式與 HTML類似, 不過語法上更加嚴格。從繼承關係上講,HTML是一種基於SGML的應用,非常靈活,而XHTML則是基於XML,XML是SGML的子集。 XHTML 1.0 在2000年1月26日成為 W3C 的建議標準。

從字面上來看,xhtml比html多一個x,那麼這個x其實也就是xml,為什麼要加一個xml在裡面?其實最根本的原因就是要讓html更結構化標準化(因為html實在太爛)。

OK,我們回來看上面的結構樹,我們在html裡面定義的是body,因為html不是很標準所以這樣可以生效,而在xhtml裡面這樣就不行了,我看看那個圖很明顯,body標籤本身不是根元素,只有html才是根元素,而頁面的捲軸也是屬於根元素的,所以這就是我們為什麼定義body沒有效果的原因,因為我們定義的只是一個子原素。 OK,我們知道了原理,來做一個試驗如果把定義「body」或「xhtml」換成「*」:


複製程式碼 程式碼如下:
*{
scrollbar-3dlight-color:#D4D0C8; /*- 最外左-*/
scrollbar-highlight-color: #fff; /*- 左二-*/
scrollbar-face-color:#E4E4E4; /*- 面子-*/
scrollbar-arrow-color:#666; /*- 箭頭-*/
scrollbar-shadow-color:#808080; /*- 右二-*/
scrollbar-darkshadow-color:#D7DCE0; /*- 右二-*/
scrollbar-base-color:#D7DCE0 ; /*- 基底色-*/
scrollbar-track-color:#;/*- 滑道-*/
}


在html和xhtml都通過,因為*就是定義頁面上的任何標籤當然也包含了「html」這個標籤。

(ps:其實與其說是html與xhtml的區別到不如說是有無XHTML 1.0 transitional doctype的區別,但是如果你把頁面的XHTML 1.0 transitional doctype去掉的話,那麼這個頁面就沒有doctype ,預設的顯示方式就是html4.01,不過你要把XHTML 1.0 transitional doctype修改成HTML 4.01 doctype同樣頁面定義body也不會有效果的,雖然這個頁面的標準是html 4.01)

2 、xhtml下frame頁面橫向滾動條的問題

在用ie6瀏覽有框架的xhtml頁面的時候,預設會水平和垂直滾動條會一起出現,這是ie6的一個bug,在firefox上是正常的,出現的原因是其對XHTML 1.0 transitional doctype的解釋缺陷。

這個bug一般有3種解,

方法1:

程式碼:

html { overflow-y: scroll; }

原理:強制顯示ie的垂直捲軸,而忽略水平捲軸。
優點:完全解決了這個問題, 允許你保持完整的XHTML doctype 。
缺點:即使頁面不需要垂直捲軸的時候也會出現垂直捲軸。

方法2:

程式碼:

html { overflow-x: hidden; overflow-y: auto; }

原理:隱藏橫向捲動,垂直滾動根據內容自適應。
優點:在視覺上解決了這個問題。在不必要的時候,未強制垂直滾動條出現。
缺點:只是隱藏了水平捲軸,如果頁面真正需要水平滾動條的時候,螢幕以外的內容會因為使用者無法水平滾動,而看不到。

方法3:

程式碼:

body { margin-right: -15px; margin-bottom: -15px; }

原理:這會在margin的水平和垂直方向上加上一個負值,IE加入了該精確數值後,便會移除對滾動條的需求假象。
優點:在視覺上解決了這個問題,垂直滾動根據內容自適應。
缺點:由於「人為創建」了15px的外邊距(margin),所以無法使用該填滿過的螢幕區域。



去掉水平捲軸:

去掉垂直滾動條:


隱藏橫向捲軸,顯示縱向滾動條:


全部隱藏


或是


這裡先說一下滾動條的屬性代碼:
overflow-y : visible | auto | hidden | scroll
visible :  不剪切內容也不添加滾動條。
auto :  在需要時剪切內容並添加滾動條
hidden :  不顯示超過對象高度的內容,這裡不對這個屬性作介紹,大家喜歡的話可以自己嘗試
scroll :  總是顯示縱向捲軸

首先我現說一下去掉捲軸的方法:
如果用百度風格模版的話,滾動條只可能有一個,那就是整個空間右邊最大的瀏覽器窗口滾動條,也就是我美化過的那個滾動條,現在告訴大家,我們可以把這個滾動條去掉,但是卻不影響瀏覽的方法:
在body
{}中加入overflow-y :
visible就可以了,這樣捲軸就不會顯示出來了。大家可能會問,這樣怎麼往下拉?呵呵,既然我說了不影響瀏覽,那當然是有方法的,瀏覽的方法就是用
滑鼠的滾輪,雖然滾動條沒了,可是滑鼠滾輪還是能夠讓網頁上下滾動的。我相信大家一般瀏覽網頁的時候用滾輪下拉網頁的次數應該比直接用滑鼠拖動捲軸的次
數多吧?提示下,如果碰到沒有滾動條而滑鼠又沒有滾輪的朋友,該怎麼瀏覽網頁呢?呵呵,大家可以用鍵盤上面的方向鍵上方的PageUp和PageDown
來上下翻頁,也可以用空格往下拉網頁和Shift 空格往上拉網頁,還有一個方法就是用上下方向鍵來拉動,另外還有按Home鍵回到網頁頂部,End鍵到
達網頁底部,呵呵,是不是方法很多呢?不過這樣總是會有那麼一些些的不方便,所以大家可以根據自己的空間和喜好來考慮要不要取消這個滾動條。

哈哈,想不到囉哩遠嗦地,一下說了這麼多話

下面我們說添加滾動條的方法:
overflow-y : auto;height:多少px
auto
就是自動判斷要不要加入捲軸,當設定的物件內容超過了height設定的高度時,就自動加入捲軸,不然則不顯示,body{}中的預設值就是
overflow-y : auto;height:瀏覽器高度,所以當網頁內容超過瀏覽器高度的時候,瀏覽器右邊就會自動顯現出滾動條來
大家如
果需要設定這個的話,本人建議設定在最新評論#m_comment{}、文章列表#m_blog{}等內容和高度都不固定的模版中,有的朋友找不到這些模
版的ID,可能只有例如#m_comment div.item{ }或#m_pro a{}等的ID,那麼可以自己加上沒有的ID,這樣就可以設定了

這裡還有另一個加入捲軸的方法:
overflow-y :scroll
這個參數的作用上面解釋過了,不過如果只加這個參數的話,雖然滾動欄會顯示,但是不會顯示滾動條,所以必須還要加上一個
height:多少px
高度屬性,跟上面的那個方法差不多,但是有根本的區別,這個無論對象內容的高度是否超過了height設定的高度,滾動欄永遠都會顯示在邊上的

下面我們說一下關於滾動條的美化,這個我朋友給我看了網上的一個說明,我覺得上面的圖很不錯,但是很小,所以我放大了一倍,看起來就清楚多了,我們先說一下美化的各個屬性:

複製程式碼
程式碼如下:

SCRO顏色代碼;
SCROLLBAR-HIGHLIGHT-COLOR:顏色代碼;
SCROLLBAR-SHADOW-COLOR: 顏色代碼;
SCROLLBAR-3DLIGHT-COLOR: 顏色代碼
SCROLLLLLL-AR ;
SCROLLBAR-TRACK-COLOR: 顏色代碼;
SCROLLBAR-DARKSHADOW-COLOR: 顏色代碼;

大家是不是看到這麼多屬性有點點頭了?哈哈,放心,看一下我剛剛提及的被我放大了一倍的圖解你們就會感覺好多了:

這裡的圖片上還有一個scrollbar-base-color的屬性,其實這個屬性是個上面7個屬性的總合,怎麼說呢?就是當你設定了這個屬性的顏色後,
前面的7個屬性都可以不用設定了,滾動條會自動幫你設定的,只是這個設定都會基於你設定的scrollbar-base- color的顏色而自動設定
這個屬性的優點就是不用大家費盡心思的去研究各個地方的顏色,但是缺點就是不能夠融和五顏六色於一體。 。

註:設定了scrollbar-base-color就不要設定其他七個屬性了,設定了其他七個屬性就不要設定scrollbar-base-color,不然之間可能會有衝突,會有一些效果不起作用的

最後,還是考慮到大家可能會喜歡我的美化代碼[真臭美~],我把我的美化代碼貼出來:

複製程式碼
程式碼如下:

SCROLLBAR-FACE-COLOR: #CCFFFF
COLOR: white;
SCROLLBAR-SHADOW-COLOR: #813533;
SCROLLBAR-3DLIGHT-COLOR: #813533;
SCROLLBAR-ARROW-COLOR: #813533;
SCROLLBAR-ARROW-COLOR: #813533; ;
SCROLLBAR-DARKSHADOW-COLOR: #813533;

以上程式碼本身是加在body{}中的
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板