2012-08-01 64 views
3

我想在我的項目中替換文本「公司名稱」。用例是爲不同的公司生成文檔(經過預處理後),只需爲不同的公司維護不同的樣式表。使用CSS替換文本的最佳方式

搜索引擎優化沒有太大的重要性在這裏。

我使用這種方法:

HTML

<span class="company-name"> YourCompanyName </span>​ 

CSS

.company-name{font-size: 0} 

.company-name:after{ 
     content: "New Company Name"; 
     font-size: 14px; 
}​ 

而這裏的jsfiddle http://jsfiddle.net/cN9gZ/

所以這裏是我的快速問題:有沒有更好的方式做同樣的事情,只使用CSS?

+7

依靠樣式表來替換內容通常是一個壞主意。 – Flash 2012-08-01 06:52:39

+0

同意......但我不想保留**內容**的重複副本。這與創建模板類似,只有樣式和次要文本纔會根據不同的情況進行更改。 – Saurabh 2012-08-01 07:07:07

+0

我知道你使用這個來創建PDF文檔,不關心搜索引擎優化等,這是很好的一切,但爲什麼你要求一個「更好」的解決方案,當這似乎已經做到了你想?你有問題嗎?如果是這樣,問題是什麼?當然,你會更好地使用服務器端解決方案來更改所有情況下的實際標記...... – 2012-08-01 07:08:02

回答

6

如果你真的需要在CSS中做這樣的事情,下面是一個小更符合邏輯,少一點風險(在頭腦裏的常用CSS注意事項):

<style> 
.company-name:after{ 
    content: "New Company Name"; 
}​ 
</style> 
<span class="company-name"></span> 

也就是說,使用元素有空的內容,所以你不需要任何技巧來隱藏虛擬內容。

+0

+1 ..!我非常喜歡這個想法,它更有意義。但我會等待其他人回覆。 – Saurabh 2012-08-01 07:13:44

+0

如何添加新行?嘗試
和\ n沒有成功。謝謝 – 2014-06-17 11:08:36

+1

@MariusAndreiana,這是一個不同的問題,可能是之前被問及過的問題。但基本上你會在內容中使用'\ a',在僞元素上使用'white-space:pre-wrap'。 – 2014-06-17 11:18:53

1

有沒有更好的方法做同樣的事情,只用css?

號每隔效果將基本上導致使用的相同的方法,包括:隱藏原始內容和與僞元件(::after::before)替換它。

請注意,搜索引擎可能會忽略樣式表,這可能會導致一些奇怪的搜索結果。取而代之,替換標記中的固定內容幾乎總是一個更好的主意。在幾乎所有情況下,它只需要一個簡單的查找和替換。 JavaScript和CSS可以被禁用 - 標記不能。

+0

包含搜索引擎+1。但我不認爲這是用例...在預處理後生成文件的意義..就像.chm,pdf等等。 – Saurabh 2012-08-01 06:59:19

0

CSS確實不是爲這種事情設計的。你最好使用Javascript,或者更好,只是改變HTML代碼本身。

真的沒有任何其他方式可以做到你在CSS中要求的方式,而不是你做的方式:content屬性在大多數CSS樣式中不可用,因爲CSS不適用於放置內容。