我無法弄清楚如何獲取CSS屬性選擇器來根據名稱空間屬性對樣式元素進行樣式化,而不需要使用名稱空間屬性(包括冒號)的普通HTML名稱。XHTML命名空間和CSS屬性選擇器
例子:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foo="https://stackoverflow.com/foo">
\t <head>
\t \t <title>CSS Attribute Selectors with namespaces</title>
\t \t <style>
\t \t \t @namespace foo "http://www.stackoverflow.com/foo";
\t \t \t span[foo|id=bar] { font-family: monospace; font-weight: bold; }
\t \t </style>
\t </head>
\t <body>
\t \t <span foo:id="bar">Should be monospace bold</span>
\t </body>
</html>
測試用例:
我打開文件器和Firefox通過鍵入相應的文件:///地址爲我的地址欄;在任何情況下它都顯示正確。它也沒有正確顯示堆棧溢出。
如果我改變代碼段包括HTML屬性名稱:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foo="https://stackoverflow.com/foo">
\t <head>
\t \t <title>CSS Attribute Selectors with namespaces</title>
\t \t <style>
\t \t \t @namespace foo "http://www.stackoverflow.com/foo";
\t \t \t span[foo\:id=bar] { font-family: monospace; font-weight: bold; }
\t \t </style>
\t </head>
\t <body>
\t \t <span foo:id="bar">Should be monospace bold</span>
\t </body>
</html>
...它工作正常(均使用我的本地瀏覽器和堆棧溢出的片段)。
我讀過Can you style XHTML elements in another namespace using id and class name css selectors?和Do CSS namespace attribute selectors work with XHTML/HTML elements?中包含的一組陷阱,但我還沒有弄清楚這一點;我相信我已經完成了這兩個問題的答案。
刪除DOCTYPE並沒有這樣做,雖然我懷疑某種DOCTYPE問題,因爲HTML表單工作和XHTML表單不能。
我必須錯過簡單的東西!
優秀,我會修復命名空間中的拼寫錯誤(顯然,我的快速 - 髒 - 複製 - 粘貼 - 修改從我的真實項目中引入了迴歸),然後我會在瀏覽器上嘗試其餘的部分。 –
將文件重命名爲.xhtml。我也嘗試了一個meta http-equiv來設置內容類型(不重命名文件);那不*做*。 –
@DavidP。Caldwell沒錯,在'