1. 程式人生 > >FF 特有換行 類似於word-break:keep-all;

FF 特有換行 類似於word-break:keep-all;

1.(IE瀏覽器)連續的英文字元和阿拉伯數字,使用word-wrap : break-word ;或者word-break:break-all;實現強制斷行

#wrap{word-break:break-all; width:200px;}
或者
#wrap{word-wrap:break-word; width:200px;}

<div id="wrap">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>

效果:可以實現換行

2.(Firefox瀏覽器)連續的英文字元和阿拉伯數字的斷行,Firefox的所有版本的沒有解決這個問題,我們只有讓超出邊界的字元隱藏或者,給容器新增滾動條

#wrap{word-break:break-all; width:200px; overflow:auto;}

<div id="wrap">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>

firefox下的一個解決方法:

XBL binding

Css程式碼 
  1. .wordwrap { -moz-binding: url('./wordwrap.xml#wordwrap'); }  

 wordwrap.xml的內容:

Xml程式碼 
  1. <?xmlversion = "1.0"?>
  2. <bindingsxmlns = "http://www.mozilla.org/xbl"xmlns:html = "http://www.w3.org/1999/xhtml">
  3. <bindingid = "wordwrap"applyauthorstyles = 
    "false">
  4.     <implementation>
  5.         <constructor>
  6.             //<![CDATA[ 
  7.             var elem = this; 
  8.             doWrap(); 
  9.             elem.addEventListener('overflow', doWrap, false); 
  10.             function doWrap() 
  11.             { 
  12.                 var walker = document.createTreeWalker(elem, NodeFilter.SHOW_TEXT, null, false);
     
  13.                 while (walker.nextNode()) 
  14.                 { 
  15.                     var node = walker.currentNode; 
  16.                     node.nodeValue = node.nodeValue.split('').join(String.fromCharCode('8203')); 
  17.                 } 
  18.             } 
  19.             //]]>
  20.         </constructor>
  21.     </implementation>
  22. </binding>
  23. </bindings>
  24. <!-- Web2 -->

如果要通用的,跨瀏覽器的解決方案就只能用javascript

Js程式碼 
  1. //aka makeDesignerHappy(dEl);
  2.       function breakWord(dEl){  
  3.         if(!dEl || dEl.nodeType !== 1){  
  4.           returnfalse;  
  5.         } elseif(dEl.currentStyle && typeof dEl.currentStyle.wordBreak === 'string'){  
  6.           //Lazy Function Definition Pattern, Peter's Blog
  7.           //From http://peter.michaux.ca/article/3556
  8.           breakWord = function(dEl){  
  9.             //For Internet Explorer
  10.             dEl.runtimeStyle.wordBreak = 'break-all';  
  11.             returntrue;  
  12.           }  
  13.           return breakWord(dEl);  
  14.         }elseif(document.createTreeWalker){  
  15.           //Faster Trim in Javascript, Flagrant Badassery
  16.           //http://blog.stevenlevithan.com/archives/faster-trim-javascript
  17.           var trim = function  (str) {  
  18.             str = str.replace(/^/s/s*/, '');  
  19.             var ws = //s/,  
  20.             i = str.length;  
  21.             while (ws.test(str.charAt(--i)));  
  22.             return str.slice(0, i + 1);  
  23.           }  
  24.           //Lazy Function Definition Pattern, Peter's Blog
  25.           //From http://peter.michaux.ca/article/3556
  26.           breakWord = function(dEl){  
  27.             //For Opera, Safari, and Firefox
  28.             var dWalker = document.createTreeWalker(dEl, NodeFilter.SHOW_TEXT, nullfalse);  
  29.             var node,s,c = String.fromCharCode('8203');  
  30.             while (dWalker.nextNode())  
  31.             {  
  32.               node = dWalker.currentNode;  
  33.               //we need to trim String otherwise Firefox will display 
  34.               //incorect text-indent with space characters
  35.               s = trim( node.nodeValue ) .split('').join(c);  
  36.               node.nodeValue = s;  
  37.             }  
  38.             returntrue;  
  39.           }  
  40.           return breakWord(dEl);  
  41.         }else{  
  42.           returnfalse;  
  43.         }  
  44.       }  

以上程式碼來自下面這個網址: