我遇到過幾十個腳本,其中html是echo
'd out而不是被存儲。我想知道是否總是由於靈活性而將字符串存儲在字符串中?我是否應該始終存儲一串HTML而不是在時間上打印它的一部分?
一個隨機的例子是我有一個函數返回一個動態子導航的HTML。我打印的開幕div標籤,打印它的內容,然後分別打印結束的div標籤:
<div id="nav">
<?php echo $nav->getHTML();?>
</div>
不過,我現在有一個特殊的類分配給基於是否量#nav
DIV列表項目和$nav->getHTML()
以內的字符總和超過了一定數量,以便分別分配不同的line-height
和height
。爲此,我必須將其加載到DOMDocument
並使用DOMXpath
並進行一些評估。
html = '<div id="nav">';
html.= $nav->getHTML();
dom = new DOMDocument(); // create a DOM tree
xpath = new DOMXpath($d); // create a DOM Xpath tree
// bunch of DOM querying/manipulation
html.= '</div>';
我在想,不應該最好總是存儲這樣的東西,以便爲需要字符串操作的未來請求提供更靈活的東西嗎?或者我只是不必要地過度使用?或者,也許我正在以這種錯誤的方式去做,並且需要重構我的課程,以便在內部而不是外部查詢DOM?
編輯:後,我決定ul
是否將跨越多個行(這是一個水平列表)基於字符的限制(比方說200)我會添加一個特殊類的#nav
項目,從那時在做CSS中的樣式。
免責聲明:我根本不想依賴JS。我知道我可以解決它,但我希望它立即正確渲染。
解決這個純粹的CSS是不可行的。我在動態操控絕對定位'ul'需要粘貼到另一個元素的底部,如果有多行'li',那麼我需要改變'ul'的高度和行高,這也需要跨瀏覽器兼容。我不能動態地「知道」ul是跨越多行還是不用純CSS。 – 2010-08-27 18:23:27
爲什麼不能? BS。定位在底部需要一個底部:0;它不需要高度。如果你設置了一些聰明的樣式(display:inline-block; overflow:auto;對於UL,float:left;對於LI),那麼li應該換行,就好像它們是段落中的單詞一樣, ul會保持流體的高度。 你也可以使用jQuery來輔助視覺計算,只要它們的總計算寬度小於ul的寬度,並相應地乘以ul的高度,就可以將每個li附加到UL。 – dmrnj 2010-08-27 19:08:55