HTML anchor å ¨å±å±æ§
éæ å: è¯¥ç¹æ§å°æªæ ååãæä»¬ä¸å»ºè®®å¨ç产ç¯å¢ä¸ä½¿ç¨éæ åç¹æ§ï¼å 为å®ä»¬å¨æµè§å¨ä¸çæ¯ææéï¼ä¸å¯è½åçååæè¢«ç§»é¤ãä¸è¿ï¼å¨æ²¡ææ åé项çç¹å®æ åµä¸ï¼å®ä»¬å¯ä»¥ä½ä¸ºåéçæ¿ä»£æ¹æ¡ã
å®éªæ§: è¿æ¯ä¸é¡¹å®éªæ§ææ¯
å¨å°å
¶ç¨äºç产ä¹åï¼è¯·ä»ç»æ£æ¥æµè§å¨å
¼å®¹æ§è¡¨æ ¼ã
anchor å
¨å±å±æ§ç¨äºå°å®ä½å
ç´ ä¸éç¹å
ç´ ç¸å
³èãè¯¥å±æ§çå¼å³ä¸ºç¨äºæå®å®ä½å
ç´ çéå®ç®æ å
ç´ id 屿§å¼ãéåå¯éè¿ CSS éç¹å®ä½å¯¹è¯¥å
ç´ è¿è¡å®ä½ã
夿³¨ï¼æè
ï¼ä½ å¯ä»¥éè¿ CSS ç anchor-name å position-anchor 屿§å°å®ä½å
ç´ ä¸éç¹å
ç´ ç¸å
³èã妿åä¸ä¸ªå
ç´ ä¸åæ¶ä½¿ç¨äºä»¥ä¸ä¸¤ç§ææ¯ï¼å CSS å®ä½ææ¯ä¼å
äº HTML å®ä½ææ¯ã
示ä¾
>åºæ¬ç anchor 屿§ç¨æ³
以ä¸ç¤ºä¾ä½¿ç¨ HTML å°å®ä½å ç´ ä¸éç¹å ³èãéåéè¿ CSS å°å®ä½å ç´ åºå®å¨éç¹çå³ä¾§ã
HTML
æä»¬å建ä¸ä¸ªå
·æ id 为 example-anchor ç <div> å
ç´ ï¼æ¤å³éç¹å
ç´ ãéåæ·»å å¦ä¸ä¸ª <div>ï¼å°å
¶ anchor 屿§è®¾ç½®ä¸º example-anchorãæ¤è®¾è®¡å°ç¬¬ä¸ä¸ª <div> æå®ä¸ºç¬¬äºä¸ª <div> çéç¹ï¼ä»èå°ä¸¤è
å
³èèµ·æ¥ã
æä»¬å¨ä¸¤ä¸ª <div> å¨å´æ·»å äºå¡«å
ææ¬ï¼ä½¿ <body> çé«åº¦å¢å ï¼ä»èå®ç°æ»å¨ææã
<p>
使å¾åä½ è§£éï¼ææè¿äºè°´è´£å¿«ä¹å颿¬çè¦çé误è§å¿µæ¯å¦ä½äº§ççã为æ¤ï¼æä¼åä½ ä¸äºä¸åå°è¯´æè¿ä¸ä½ç³»ï¼å¹¶éè¿°ä¼å¤§çççæ¢ç´¢è
ã人类幸ç¦çæ°åºå»ºè®¾è
çç宿ä¹ã没æäººå ä¸ºå¿«ä¹æ¯å¿«ä¹èæç»ãåæ¶æåé¿å¿«ä¹æ¬èº«ï¼èæ¯å 为ä¸ç¥éå¦ä½çæ§å°è¿½æ±å¿«ä¹ç人ä¼ééæå
¶çè¦çåæã
</p>
<div class="anchor" id="example-anchor">âï¸</div>
<div class="infobox" anchor="example-anchor">
<p>è¿æ¯ä¸ä¸ªä¿¡æ¯æ¡ã</p>
</div>
<p>
乿²¡æäººå çè¦æ¯çè¦è忬¢æè¿½æ±ææ¸´æè·å¾çè¦æ¬èº«ï¼ä½ä¹å¶æè¾å³åçè¦è½å¸¦æ¥æå¤§çå¿«ä¹çæ
æ¯ã举个微ä¸è¶³éçä¾åï¼è¥ä¸æ¯ä»ä¸è·å¾å¥½å¤ï¼æä»¬å½ä¸æè°ä¼è¿è¡è°è¦çä½è²é»ç¼ï¼ä½æ¯ï¼åè¥æ²¡ææ¼äººçåæï¼è°ææå©æè´£éæ©äº«åå¿«ä¹ç人å¢ï¼æè
åè¥å¾ä¸å°ç¸åºå¿«ä¹ï¼è°è½è°´è´£éæ©é¿å
çè¦ç人å¢ï¼
</p>
<p>
å¦ä¸æ¹é¢ï¼æä»¬ä»¥æ£ä¹çæ¤æ
¨è°´è´£å¹¶åæ¶é£äºè¢«åæ¶è¡ä¹è¿·æå¾èé¡ä¸æ¯ï¼è¢«æ¬²æèè½å¾çä¸è§å¤§é¾ä¸´å¤´ç人ï¼å æå¿è½¯å¼±èä¸è½å±¥è¡èè´£ç人ï¼ä¹åºåå°åæ ·çè°´è´£ï¼è¿æ å¼äºå¨è¾å³åçè¦åé缩ãè¿äºæ
åµé常ç®åä¸å®¹æåºåã鲿æ¶ï¼å½æä»¬çéæ©æä¸åéå¶ï¼å½æ²¡æä»ä¹å¯ä»¥é»æ¢æä»¬åèªå·±æå欢çäºæ
æ¶ï¼ä»»ä½å¿«ä¹é½åºè¯¥åå°æ¬¢è¿ï¼ä»»ä½çè¦é½åºè¯¥é¿å
ã使¯å¨æäºæ
åµä¸ï¼ç±äºè´£ä»»æåä¸ä¹å¡çè¦æ±ï¼ä¸æ¶ä¼æä¸å¾ä¸æç»äº«ä¹èæ¥åç¦æ¼çæ
åµãå æ¤ï¼æºè
å¨è¿äºäºæ
䏿»æ¯åæéæ©çååï¼æç»å¿«ä¹ä»¥è·å¾æ´å¤§çå¿«ä¹ï¼æè
å¿åçè¦ä»¥é¿å
æ´éççè¦ã
</p>
CSS
æä»¬ä½¿ç¨ CSS å° infobox å
ç´ è½¬æ¢ä¸ºéå®ä½å
ç´ ï¼å¹¶ä½¿å
¶ç¸å¯¹äºéç¹å®ä½ãæä»¬è®¾ç½®å
¶ï¼
position屿§ä¸ºfixedï¼å°å ¶è½¬æ¢ä¸ºå®ä½å ç´ ä»¥ä¾¿ç¸å¯¹äºéç¹ä½ç½®å®ä½ã- å°
left屿§è®¾ç½®ä¸ºanchor()彿°å¹¶èµå¼rightãæ¤æä½å°å®ä½å ç´ ä¸éç¹ç»å®ï¼ä½¿å ¶å·¦è¾¹ç¼ä¸éç¹å³è¾¹ç¼é½å¹³ã align-self屿§è®¾ç½®ä¸ºanchor-centerãè¿å°ä½¿ä¿¡æ¯æ¡å¨è¡å æ¹åä¸å± ä¸å¯¹é½äºéç¹çä¸å¿ã- å°
margin-left设置为10pxï¼å¨éå®ä½å ç´ ä¸å ¶éç¹ä¹é´å建é´è·ã
.infobox {
position: fixed;
left: anchor(right);
align-self: anchor-center;
margin-left: 10px;
}
ç»æ
æ»å¨ç¤ºä¾å¯æ¥çä¿¡æ¯æ¡å¦ä½ä¸éç¹ç»å®ã彿¯æ anchor 屿§æ¶ï¼ä¿¡æ¯æ¡å°åºå®å¨éç¹çå³ä¾§ï¼è¥ä¸æ¯æè¯¥å±æ§ï¼åä¿¡æ¯æ¡å°åºå®å¨è§å£ä½ç½®ã
è§è
è¯¥å±æ§ç®åå°æªçº³å
¥ HTML è§èãæå
³æ·»å anchor 屿§ç讨论ï¼è¯·åé
https://github.com/whatwg/html/pull/9144ã
æµè§å¨å ¼å®¹æ§
åè§
HTMLElement.anchorElement- CSS
anchor-name屿§ - CSS
position-anchor屿§ - CSS éç¹å®ä½æ¨¡å