請選擇 進入手機版 | 繼續訪問電腦版
搜索
熱搜: 活動 交友 discuz
查看: 2089|回復: 0

[CSS] 防止表格被內容撐開 - 固定表格、內容方法 (適用於<table><div>)

[複製鏈接]
發表於 2013-9-13 10:38:28 | 顯示全部樓層 |閱讀模式
本帖最後由 郭子錢 於 2013-9-13 10:40 編輯

在我們設計網頁的時候,總會遇到一些不愉快的事情,最常見的莫過於在後台添加內容後才發現顯示的頁面被撐開,導致網頁極度不美觀。以前大家基本上都是設計 表格,網上自然不少對於的解決方法,如今還有div+css標準設計,很少看到相關好的方法,現在把平時找到的防止表格被撐開的好方法總結歸納一下,和大 家一起分享。

防止表格被撐開或div層被撐開的多種方法在 我們設計網頁的時候,總會遇到一些不愉快的事情,最常見的莫過於在後台添加內容後才發現顯示的頁面被撐開,導致網頁極度不美觀。以前大家基本上都是設計表 格,網上自然不少對於的解決方法,如今還有div+css標準設計,很少看到相關好的方法,現在把平時找到的防止表格被撐開的好方法總結歸納一下,和大家 一起分享。



一、直接在網頁裡設置圖片大小,比如代碼:
  1. http://www.krjpg.cn/www.xxol.net.jpg" width="600" height="500" border="0">
複製代碼
,這樣雖然可以限制了圖片大小,但是需要在上傳圖片之前手動修改圖片大小,否則上傳的圖片就會變形。

二、Javascript判斷調整,使用如下代碼:
  1. http://www.krjpg.cn/www.xxol.net.jpg" onload="javascript:if(this.width>600}{this.resized=true;this.style.width=600;}">
複製代碼
這種方法會在調用圖片的時候,自動按比例縮小到指定的寬度,不會引起圖片的變形,並且也不會撐破表格,但是缺點是,如果圖片太大,在圖片下載過程中,也就是圖片顯示過程中,會先以圖片原大小顯示,這時就會撐破表格,頁面很難看,二當圖片完全顯示後,圖片又會自動縮小。

三、 針對表格的屬性來限制大小防止被撐開,比如在裡添加代碼
  1. style="table-layout:fixed;word- wrap:break-word; word-break;break-all;"
複製代碼
,其中「table-layout:fixed; 」是為了將表格佈局固定住,就可以有效地防止表格被撐開,
「word-wrap:break-word; 」是控制換行的,也就是強制執行換行,這個在文本內容較多的情況下需要使用到,特別是重複的內容出現,不執行換行的話,表格就被撐開了;
而「word- break: break-all; 」可以解決IE的框架被英文(非亞洲語言文本行)撐開的問題,但是不會強制換行,只顯示表格寬度裡的內容。
一般情況下只要用到 「style="table-layout:fixed;word-wrap:break-word;"」就可以。

當然,上面調用的語句可以定義在css 裡,比如
  1. table {
  2. table-layout: fixed;
  3. word-wrap:break-word;
  4. }
複製代碼
四、用css控制圖片自適應大小,代碼如:
  1. img {
  2. max-width: 600px;
  3. width:expression(this.width > 600 ? "600px" : this.width);
  4. overflow:hidden;
  5. }
複製代碼
其中 max-width:600px; 在IE7、FireFox等其他非IE瀏覽器下最大寬度為600px,但在IE6中無效;width:600px; 在所有瀏覽器中圖片的大小為600px,當圖片大小大於600px,自動縮小為600px,在IE6中有效;而 overflow:hidden;  指將超出設置大小的部分隱藏,避免控制圖片大小失敗而引起的表格撐開變形。

五、最後總結一下最實用的代碼:如果是表格,請用:
  1. table {
  2. table-layout: fixed;
  3. word-break: break-all;
  4. }[/code
  5. ]如果是div層,請用:
  6. [code]div {
  7. table-layout: fixed;
  8. word-wrap: break-word;
  9. width: 加上寬度;
  10. overflow: hidden;    (讓多出來的不顯示。)  
  11. }
複製代碼
引用內容:
  1. /* 解決英文斷字、避頭尾、段落左右邊界不齊問題 */
  2. table td {
  3.    /* 自訂寬度 */
  4.    width: 500px;
  5.    
  6.    /* 英文單字自動換行 */
  7.    word-wrap: break-word;
  8.    /* 正常避頭尾 */
  9.    word-break: normal;
  10.    /* 文字左右對齊 */
  11.    text-align:justify;
  12.    text-justify:inter-ideograph;
  13. }
複製代碼
  1. /* 解決版面撐開:針對連續符號與冗長網開,需使用div?#93;覆 */
  2. table div {
  3.    /* 防止撐開 fot IE */
  4.    table-layout: fixed;
  5.    /* 防止撐開 fot FF */
  6.    overflow: auto;
  7. }
複製代碼
在IE能正確折行,不被撐開,且左右對齊(如果不考慮FF,可以省略包一層div)
再FF需多加一層div來顯示完整內容(有些人是直接隱藏超出去的部份,就不用再包一層div,但是內容被隱藏總是覺得不夠好,所以需要再加一層div來成呈現完整內容)

ps. 解決英文斷字、避頭尾、段落左右邊界不齊問題:在中文上比較沒有影響(若不是英文為主的網站可以略過)
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站


手機版|中央論壇

GMT+8, 2019-6-26 06:07 , Processed in 0.067366 second(s), 17 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表