å½å空é´åé符
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
å½å空é´åé符ï¼|ï¼å°éæ©å¨ä¸å½å空é´åéå¼ï¼ç¨äºæ è¯ç±»å鿩卿¯å¦å
å«å½å空é´ã
/* å¨ myNameSpace å½å空é´ä¸ç龿¥ */
myNameSpace|a {
font-weight: bold;
}
/* ä»»ä½å½å空é´ç段è½ï¼å
嫿 å½å空é´ï¼ */
*|p {
color: darkblue;
}
/* æ å½å空é´çäºçº§æ é¢ */
|h2 {
margin-bottom: 0;
}
ç±»åéæ©å¨åéé
éæ©å¨å
许å
å«å¯éçå½å空é´ç»ä»¶ãå½å½å空é´å·²éè¿ @namespace å£°ææ¶ï¼å¯å¨éæ©å¨åæ·»å å½å空é´åç§°ï¼ä»¥å½å空é´åé符 | åéï¼å®ç°å½å空é´éå®ãæ¤ç¹æ§å¨å¤çå«å¤éå½å空é´çææ¡£æ¶å°¤ä¸ºå®ç¨ï¼ä¾å¦åµå
¥ SVG æ MathML ç HTML ææ¡£ï¼ææ··åå¤ç§è¯æ±ç XML ææ¡£ã
ns|h1ââå¹é å½å空é´nsä¸ç<h1>å ç´*|h1ââå¹é ææ<h1>å ç´|h1ââå¹é æææªå£°ææéå«å½å空é´å¤ç<h1>å ç´
è¯æ³
namespace|element { style properties }
示ä¾
é»è®¤æ
åµä¸ï¼HTML æ SVG å
ç´ ä¸çææå
ç´ é½å
·æå½å空é´ï¼å 为 http://www.w3.org/1999/xhtml å http://www.w3.org/2000/svg å½åç©ºé´æ¯éå«çãå¯éè¿å¨ document.createElementNS æ¹æ³ä¸å°å½å空é´åæ°è®¾ä¸ºç©ºå符串ï¼å建æ å½å空é´çå
ç´ ã
å ·åå½å空é´ç¤ºä¾
卿¬ç¤ºä¾ä¸ï¼ææå ç´ é½å¨ä¸ä¸ªå½å空é´å ã
HTML
HTML æ SVG ä¸åæªæ¾å¼å£°æå½å空é´ã
<p>æ¤æ®µè½<a href="#">å
å«é¾æ¥</a>ã</p>
<svg width="400" viewBox="0 0 400 20">
<a href="#">
<text x="0" y="15">SVG ä¸ç龿¥</text>
</a>
</svg>
CSS
该 CSS 声æäºä¸¤ä¸ªå½å空é´ï¼éåä¸ºé¾æ¥å
¨å±èµäºæ ·å¼ï¼aï¼ï¼ä¸ºæ å½å空é´ç龿¥èµäºæ ·å¼ï¼|aï¼ï¼ä¸ºä»»ä½å½åç©ºé´ææ å½å空é´ç龿¥èµäºæ ·å¼ï¼*|aï¼ï¼æå为两个ä¸åçå½åå½å空é´èµäºæ ·å¼ï¼svgNamespace|a å htmlNameSpace|aï¼ã
@namespace svgNamespace url("/proxy/www.w3.org/2000/svg");
@namespace htmlNameSpace url("/proxy/www.w3.org/1999/xhtml");
/* ææé»è®¤å½å空é´ä¸ç `<a>`ï¼å¨æ¤ç¤ºä¾ä¸æ¯ææç `<a>` */
a {
font-size: 1.4rem;
}
/* æ å½åç©ºé´ */
|a {
text-decoration: wavy overline lime;
font-weight: bold;
}
/* ææå½å空é´ï¼å
æ¬æ å½å空é´ï¼ */
*|a {
color: red;
fill: red;
font-style: italic;
}
/* ä»
svgNamespace å½å空é´ï¼å³ <svg> å
容 */
svgNamespace|a {
color: green;
fill: green;
}
/* htmlNameSpace å½å空é´ï¼å³ HTML ææ¡£ */
htmlNameSpace|a {
text-decoration-line: line-through;
}
ç»æ
éæ©å¨ |aï¼æªå¨å½å空é´ä¸ç龿¥ï¼æ æ³å¹é
ä»»ä½é¾æ¥ãå¨ HTML ä¸ï¼é»è®¤éå« http://www.w3.org/1999/xhtml å½å空é´ï¼è¿æå³çææ HTML å
容é½å¤äºå½å空é´ä¸ï¼å³ä½¿æªæ¾å¼å£°æä»»ä½å½å空é´ãå¨ SVG ä¸ï¼å³ä½¿æªæ¾å¼è®¾ç½®ï¼http://www.w3.org/2000/svg å½å空é´åæ ·é»è®¤åå¨ãè¿æå³çææå
容è³å°å±äºä¸ä¸ªå½å空é´ã
é»è®¤å½å空é´ä¸æ å½å空é´
卿¤ç¤ºä¾ä¸ï¼æä»¬ä½¿ç¨ JavaScript å建ä¸ä¸ªæ å½å空é´çå
ç´ å¹¶å°å
¶éå å°ææ¡£ä¸ãéè¿ @namespace å®ä¹æªå½åçå½å空é´ï¼æä»¬å° SVG å½å空é´è®¾ä¸ºé»è®¤å½å空é´ã
夿³¨ï¼è¥å®ä¹äºé»è®¤ï¼ææ å½åï¼å½å空é´ï¼åéç¨éæ©å¨åç±»åéæ©å¨ä» éç¨äºè¯¥å½å空é´å çå ç´ ã
HTML
HTML æ SVG ä¸åæªæ¾å¼å£°æå½å空é´ã
<p>å¨éå«ç HTML å½å空é´ä¸ç<a href="#">龿¥</a>ã</p>
<svg width="400" viewBox="0 0 400 20">
<a href="#">
<text x="0" y="15">å¨ SVG å½å空é´ä¸ç龿¥ã</text>
</a>
</svg>
JavaScript
éè¿ JavaScript ç document.createElementNSï¼æä»¬å建ä¸ä¸ªæ å½å空é´çéç¹é¾æ¥ï¼å¹¶æå
¥è¯¥é¾æ¥ã
// åå»ºâæ å½å空é´âçéç¹
const a = document.createElementNS("", "a");
a.href = "#";
a.appendChild(document.createTextNode("æ å½å空é´çéç¹"));
document.body.appendChild(a);
CSS
æä»¬ä½¿ç¨ @namespace 声æå½å空é´ãè¥çç¥å½å空é´åç§°ï¼@namespace 声æå°å建é»è®¤å½å空é´ã
/* éè¿çç¥åç§°ï¼å° SVG 设为é»è®¤å½åç©ºé´ */
@namespace url("/proxy/www.w3.org/2000/svg");
/* é»è®¤å½å空é´ï¼è®¾ä¸º SVGï¼ç `<a>` */
a {
font-size: 1.4rem;
}
/* é»è®¤å½å空é´ï¼è®¾ä¸º SVGï¼ç `<svg>` å `<p>` */
svg,
p {
border: 5px solid gold;
}
/* ä»»ä½å½å空é´ä¹å¤ç龿¥ */
|a {
text-decoration: wavy underline purple;
font-weight: bold;
}
/* å
·æä»»ä½å½åç©ºé´ææ å½å空é´ç龿¥ */
*|a {
font-style: italic;
color: magenta;
fill: magenta;
}
ç»æ
æªæ·»å å½å空é´åé符çéæ©å¨ a ä»
å¹é
äº SVG ä¸ç <a> å
ç´ ï¼å 为 SVG 被设为é»è®¤å½å空é´ã
æªæ·»å å½å空é´çéæ©å¨ |a å¹é
äºéè¿ JavaScript å®ä¹å¹¶è¿½å ç <a> å
ç´ ï¼å 为该èç¹æ¯å¯ä¸ä¸å
·æé»è®¤å½å空é´çèç¹ã
è§è
| è§è |
|---|
| CSS Namespaces Module Level 3> # declaration> |