mirror of
https://github.com/ZiuChen/ZiuChen.github.io.git
synced 2025-09-11 13:13:42 +08:00
82 lines
62 KiB
HTML
82 lines
62 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US" dir="ltr">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>一文读懂伪类与伪元素 | ZiuChen</title>
|
||
<meta name="description" content="Unlimited Progress.">
|
||
<meta name="generator" content="VitePress v1.0.2">
|
||
<link rel="preload stylesheet" href="/assets/style.BnawLfC_.css" as="style">
|
||
|
||
<script type="module" src="/assets/app.sYSl1p1F.js"></script>
|
||
<link rel="preload" href="/assets/inter-roman-latin.Bu8hRsVA.woff2" as="font" type="font/woff2" crossorigin="">
|
||
<link rel="modulepreload" href="/assets/chunks/framework.BFSS5Pox.js">
|
||
<link rel="modulepreload" href="/assets/chunks/theme.eZnkaVJV.js">
|
||
<link rel="modulepreload" href="/assets/article_一文读懂伪类与伪元素.md.BAP-CMhr.lean.js">
|
||
<link rel="icon" href="/logo.png">
|
||
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
||
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
||
</head>
|
||
<body>
|
||
<div id="app"><div class="Layout" data-v-aa0dbd16><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0ac37437></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0ac37437> Skip to content </a><!--]--><!----><header class="VPNav" data-v-aa0dbd16 data-v-219db804><div class="VPNavBar has-sidebar top" data-v-219db804 data-v-fe7aa50e><div class="wrapper" data-v-fe7aa50e><div class="container" data-v-fe7aa50e><div class="title" data-v-fe7aa50e><div class="VPNavBarTitle has-sidebar" data-v-fe7aa50e data-v-f59598ac><a class="title" href="/" data-v-f59598ac><!--[--><!--]--><!--[--><img class="VPImage logo" src="/logo.png" alt data-v-6d8da853><!--]--><span data-v-f59598ac>ZiuChen</span><!--[--><!--]--></a></div></div><div class="content" data-v-fe7aa50e><div class="content-body" data-v-fe7aa50e><!--[--><!--]--><div class="VPNavBarSearch search" data-v-fe7aa50e><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-fe7aa50e data-v-f12085b2><span id="main-nav-aria-label" class="visually-hidden" data-v-f12085b2>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-f12085b2 data-v-1d3b35cd><!--[--><span data-v-1d3b35cd>首页</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f12085b2 data-v-0123e799><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-0123e799><span class="text" data-v-0123e799><!----><span data-v-0123e799>我的项目</span><span class="vpi-chevron-down text-icon" data-v-0123e799></span></span></button><div class="menu" data-v-0123e799><div class="VPMenu" data-v-0123e799 data-v-94537595><div class="items" data-v-94537595><!--[--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/project/ClipboardManager/" data-v-950315cf><!--[-->超级剪贴板<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/project/Markdown/" data-v-950315cf><!--[-->超级Markdown<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/project/JSRunner/" data-v-950315cf><!--[-->超级JavaScript<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/project/SmartWordBreak/" data-v-950315cf><!--[-->超级分词<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f12085b2 data-v-0123e799><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-0123e799><span class="text" data-v-0123e799><!----><span data-v-0123e799>开源作品</span><span class="vpi-chevron-down text-icon" data-v-0123e799></span></span></button><div class="menu" data-v-0123e799><div class="VPMenu" data-v-0123e799 data-v-94537595><div class="items" data-v-94537595><!--[--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/works/opensource.html" data-v-950315cf><!--[-->个人作品<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/works/contribution.html" data-v-950315cf><!--[-->社区贡献<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f12085b2 data-v-0123e799><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-0123e799><span class="text" data-v-0123e799><!----><span data-v-0123e799>学习笔记</span><span class="vpi-chevron-down text-icon" data-v-0123e799></span></span></button><div class="menu" data-v-0123e799><div class="VPMenu" data-v-0123e799 data-v-94537595><div class="items" data-v-94537595><!--[--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/JavaScript.html" data-v-950315cf><!--[-->JavaScript基础<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/CSS.html" data-v-950315cf><!--[-->CSS基础<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/JavaScriptEnhanced.html" data-v-950315cf><!--[-->JavaScript进阶<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/Front-end%20Engineering.html" data-v-950315cf><!--[-->前端工程化<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/SSR.html" data-v-950315cf><!--[-->服务端渲染<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/React.html" data-v-950315cf><!--[-->React基础<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/React%20Hooks.html" data-v-950315cf><!--[-->React Hooks<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/Redux.html" data-v-950315cf><!--[-->Redux<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/React%20Router.html" data-v-950315cf><!--[-->React Router<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/MySQL.html" data-v-950315cf><!--[-->MySQL<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-94537595 data-v-950315cf><a class="VPLink link" href="/note/Rust.html" data-v-950315cf><!--[-->Rust<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/self/" tabindex="0" data-v-f12085b2 data-v-1d3b35cd><!--[--><span data-v-1d3b35cd>个人介绍</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-fe7aa50e data-v-3052aee0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-3052aee0 data-v-75f81ba2 data-v-2f0fb9ae><span class="check" data-v-2f0fb9ae><span class="icon" data-v-2f0fb9ae><!--[--><span class="vpi-sun sun" data-v-75f81ba2></span><span class="vpi-moon moon" data-v-75f81ba2></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-fe7aa50e data-v-cdf5659a data-v-19d92cd2><!--[--><a class="VPSocialLink no-icon" href="https://github.com/ZiuChen" aria-label="github" target="_blank" rel="noopener" data-v-19d92cd2 data-v-613fd7f9><span class="vpi-social-github" /></a><a class="VPSocialLink no-icon" href="https://juejin.cn/user/1887205216238477" aria-label target="_blank" rel="noopener" data-v-19d92cd2 data-v-613fd7f9><svg width="36" height="28" viewBox="0 0 36 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.5875 6.77268L21.8232 3.40505L17.5875 0.00748237L17.5837 0L13.3555 3.39757L17.5837 6.76894L17.5875 6.77268ZM17.5863 17.3955H17.59L28.5161 8.77432L25.5526 6.39453L17.59 12.6808H17.5863L17.5825 12.6845L9.61993 6.40201L6.66016 8.78181L17.5825 17.3992L17.5863 17.3955ZM17.5828 23.2891L17.5865 23.2854L32.2133 11.7456L35.1768 14.1254L28.5238 19.3752L17.5865 28L0.284376 14.3574L0 14.1291L2.95977 11.7531L17.5828 23.2891Z" fill="#1E80FF"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-fe7aa50e data-v-6a5fa577 data-v-0123e799><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-0123e799><span class="vpi-more-horizontal icon" data-v-0123e799></span></button><div class="menu" data-v-0123e799><div class="VPMenu" data-v-0123e799 data-v-94537595><!----><!--[--><!--[--><!----><div class="group" data-v-6a5fa577><div class="item appearance" data-v-6a5fa577><p class="label" data-v-6a5fa577>Appearance</p><div class="appearance-action" data-v-6a5fa577><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-6a5fa577 data-v-75f81ba2 data-v-2f0fb9ae><span class="check" data-v-2f0fb9ae><span class="icon" data-v-2f0fb9ae><!--[--><span class="vpi-sun sun" data-v-75f81ba2></span><span class="vpi-moon moon" data-v-75f81ba2></span><!--]--></span></span></button></div></div></div><div class="group" data-v-6a5fa577><div class="item social-links" data-v-6a5fa577><div class="VPSocialLinks social-links-list" data-v-6a5fa577 data-v-19d92cd2><!--[--><a class="VPSocialLink no-icon" href="https://github.com/ZiuChen" aria-label="github" target="_blank" rel="noopener" data-v-19d92cd2 data-v-613fd7f9><span class="vpi-social-github" /></a><a class="VPSocialLink no-icon" href="https://juejin.cn/user/1887205216238477" aria-label target="_blank" rel="noopener" data-v-19d92cd2 data-v-613fd7f9><svg width="36" height="28" viewBox="0 0 36 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.5875 6.77268L21.8232 3.40505L17.5875 0.00748237L17.5837 0L13.3555 3.39757L17.5837 6.76894L17.5875 6.77268ZM17.5863 17.3955H17.59L28.5161 8.77432L25.5526 6.39453L17.59 12.6808H17.5863L17.5825 12.6845L9.61993 6.40201L6.66016 8.78181L17.5825 17.3992L17.5863 17.3955ZM17.5828 23.2891L17.5865 23.2854L32.2133 11.7456L35.1768 14.1254L28.5238 19.3752L17.5865 28L0.284376 14.3574L0 14.1291L2.95977 11.7531L17.5828 23.2891Z" fill="#1E80FF"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-fe7aa50e data-v-4d443541><span class="container" data-v-4d443541><span class="top" data-v-4d443541></span><span class="middle" data-v-4d443541></span><span class="bottom" data-v-4d443541></span></span></button></div></div></div></div><div class="divider" data-v-fe7aa50e><div class="divider-line" data-v-fe7aa50e></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-aa0dbd16 data-v-dcc71291><div class="container" data-v-dcc71291><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-dcc71291><span class="vpi-align-left menu-icon" data-v-dcc71291></span><span class="menu-text" data-v-dcc71291>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-dcc71291 data-v-5b1f6087><button data-v-5b1f6087>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-aa0dbd16 data-v-bdedb461><div class="curtain" data-v-bdedb461></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-bdedb461><span class="visually-hidden" id="sidebar-aria-label" data-v-bdedb461> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-bdedb461><section class="VPSidebarItem level-0" data-v-bdedb461 data-v-4bfbebcc><div class="item" role="button" tabindex="0" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><h2 class="text" data-v-4bfbebcc>我的项目</h2><!----></div><div class="items" data-v-4bfbebcc><!--[--><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/project/ClipboardManager/" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>超级剪贴板</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/project/Markdown/" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>超级Markdown</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/project/JSRunner/" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>超级JavaScript</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/project/SmartWordBreak/" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>超级分词</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-bdedb461><section class="VPSidebarItem level-0 collapsible collapsed" data-v-bdedb461 data-v-4bfbebcc><div class="item" role="button" tabindex="0" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><h2 class="text" data-v-4bfbebcc>开源作品</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4bfbebcc><span class="vpi-chevron-right caret-icon" data-v-4bfbebcc></span></div></div><div class="items" data-v-4bfbebcc><!--[--><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/works/opensource.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>个人作品</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/works/contribution.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>社区贡献</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-bdedb461><section class="VPSidebarItem level-0 collapsible has-active" data-v-bdedb461 data-v-4bfbebcc><div class="item" role="button" tabindex="0" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><h2 class="text" data-v-4bfbebcc>文章归档</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4bfbebcc><span class="vpi-chevron-right caret-icon" data-v-4bfbebcc></span></div></div><div class="items" data-v-4bfbebcc><!--[--><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E3%80%902023%E3%80%91%E9%9D%92%E8%AE%AD%E8%90%A5%20-%20%E5%89%8D%E7%AB%AF%E7%BB%83%E4%B9%A0%E9%A2%98%E6%B1%87%E6%80%BB%E8%A7%A3%E6%9E%90.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>【2023】青训营 - 前端练习题汇总解析</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E3%80%90%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8%E3%80%91%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>【字节跳动】前端面试题总结</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E3%80%90%E5%BF%AB%E6%89%8B%E3%80%91%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>【快手】深入理解前端面试题</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E3%80%90%E7%94%A8%E5%8F%8B%E9%87%91%E8%9E%8D%E3%80%91%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>【用友金融】前端面试题总结</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E4%B8%80%E6%96%87%E8%AF%BB%E6%87%82%E4%BA%8B%E4%BB%B6%E5%86%92%E6%B3%A1%E4%B8%8E%E4%BA%8B%E4%BB%B6%E6%8D%95%E8%8E%B7.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>一文读懂事件冒泡与事件捕获</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E4%B8%80%E6%96%87%E8%AF%BB%E6%87%82%E4%BC%AA%E7%B1%BB%E4%B8%8E%E4%BC%AA%E5%85%83%E7%B4%A0.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>一文读懂伪类与伪元素</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E4%B8%80%E6%96%87%E8%AF%BB%E6%87%82%E5%87%BD%E6%95%B0%E4%B8%ADthis%E6%8C%87%E5%90%91%E9%97%AE%E9%A2%98.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>一文读懂函数中this指向问题</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E4%BB%8E0%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E5%B9%B4%E5%BA%A6%E6%8A%A5%E5%91%8A.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>从0实现一个年度报告</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E5%BD%BB%E5%BA%95%E6%90%9E%E6%87%82%E5%AF%B9%E8%B1%A1%E7%9A%84%E6%95%B0%E6%8D%AE%E5%B1%9E%E6%80%A7%E6%8F%8F%E8%BF%B0%E7%AC%A6%E3%80%81%E5%AD%98%E5%82%A8%E5%B1%9E%E6%80%A7%E6%8F%8F%E8%BF%B0%E7%AC%A6.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>彻底搞懂对象的数据属性描述符、存储属性描述符</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E6%B5%85%E6%9E%90defineProperty%E4%B8%8EProxy%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%8F%8C%E5%90%91%E7%BB%91%E5%AE%9A.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>浅析defineProperty与Proxy实现的双向绑定</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E6%B7%B1%E5%85%A5JavaScript%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>深入JavaScript数据类型</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E6%B7%B1%E5%85%A5Vue3%E6%BA%90%E7%A0%81%EF%BC%8C%E7%9C%8B%E7%9C%8BVue.use%E5%90%8E%E7%A9%B6%E7%AB%9F%E5%8F%91%E7%94%9F%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>深入Vue3源码,看看Vue.use后究竟发生了什么?</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Proxy%E4%B8%8EReflect.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>深入理解Proxy与Reflect</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E6%B5%8F%E8%A7%88%E5%99%A8%E7%BC%93%E5%AD%98%E6%9C%BA%E5%88%B6.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>深入理解浏览器缓存机制</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4bfbebcc data-v-4bfbebcc><div class="item" data-v-4bfbebcc><div class="indicator" data-v-4bfbebcc></div><a class="VPLink link link" href="/article/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E6%B5%8F%E8%A7%88%E5%99%A8%E8%BF%90%E8%A1%8C%E5%8E%9F%E7%90%86.html" data-v-4bfbebcc><!--[--><p class="text" data-v-4bfbebcc>深入理解浏览器运行原理</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-aa0dbd16 data-v-e7387019><div class="VPDoc has-sidebar has-aside" data-v-e7387019 data-v-0ef3a6cc><!--[--><!--]--><div class="container" data-v-0ef3a6cc><div class="aside" data-v-0ef3a6cc><div class="aside-curtain" data-v-0ef3a6cc></div><div class="aside-container" data-v-0ef3a6cc><div class="aside-content" data-v-0ef3a6cc><div class="VPDocAside" data-v-0ef3a6cc data-v-dda43dd4><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" role="navigation" data-v-dda43dd4 data-v-64ee8e19><div class="content" data-v-64ee8e19><div class="outline-marker" data-v-64ee8e19></div><div class="outline-title" role="heading" aria-level="2" data-v-64ee8e19>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-64ee8e19><span class="visually-hidden" id="doc-outline-aria-label" data-v-64ee8e19> Table of Contents for current page </span><ul class="VPDocOutlineItem root" data-v-64ee8e19 data-v-1f630f88><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-dda43dd4></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-0ef3a6cc><div class="content-container" data-v-0ef3a6cc><!--[--><!--]--><main class="main" data-v-0ef3a6cc><div style="position:relative;" class="vp-doc _article_%E4%B8%80%E6%96%87%E8%AF%BB%E6%87%82%E4%BC%AA%E7%B1%BB%E4%B8%8E%E4%BC%AA%E5%85%83%E7%B4%A0" data-v-0ef3a6cc><div><h1 id="一文读懂伪类与伪元素" tabindex="-1">一文读懂伪类与伪元素 <a class="header-anchor" href="#一文读懂伪类与伪元素" aria-label="Permalink to "一文读懂伪类与伪元素""></a></h1><h2 id="🔰-什么是伪类" tabindex="-1">🔰 什么是伪类? <a class="header-anchor" href="#🔰-什么是伪类" aria-label="Permalink to "🔰 什么是伪类?""></a></h2><p>伪类是添加到选择器的 <strong>关键字</strong> ,指定要选择的元素的特殊状态。</p><h3 id="典型的伪类关键字" tabindex="-1">典型的伪类关键字 <a class="header-anchor" href="#典型的伪类关键字" aria-label="Permalink to "典型的伪类关键字""></a></h3><p>在大多数情况下,<strong>伪类都与基础选择器搭配使用</strong>,下述是伪类在一些典型场景下的应用。</p><h4 id="hover" tabindex="-1"><code>:hover</code> <a class="header-anchor" href="#hover" aria-label="Permalink to "`:hover`""></a></h4><p>指针在 <code><button></code> 上悬停,但没有激活它时,按钮颜色变为蓝色</p><div class="language-css vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">button</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">:hover</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">blue</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><blockquote><p><strong>注意</strong>: 在触摸屏上 <code>:hover</code> 基本不可用。不同的浏览器上<code>:hover</code> 伪类表现不同。网页开发人员不要让任何内容只能通过悬停才能展示出来,不然这些内容对于触摸屏使用者来说是很难或者说不可能看到。</p></blockquote><h4 id="not" tabindex="-1"><code>:not</code> <a class="header-anchor" href="#not" aria-label="Permalink to "`:not`""></a></h4><p><strong><code>:not()</code></strong> 用来匹配不符合一组选择器的元素。由于它的作用是防止特定的元素被选中,它也被称为<em>反选伪类</em>(<em>negation pseudo-class</em>)。</p><p>将所有不是<code><p></code>的元素颜色改为蓝色:</p><div class="language-css vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">body</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">:not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">p</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">blue</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* 实测下述代码没有效果 */</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">:not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">p</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">blue</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><blockquote><p><strong>注意</strong>: 在触摸屏上 <code>:hover</code> 基本不可用。不同的浏览器上<code>:hover</code> 伪类表现不同。网页开发人员不要让任何内容只能通过悬停才能展示出来,不然这些内容对于触摸屏使用者来说是很难或者说不可能看到。</p></blockquote><h4 id="first-child" tabindex="-1"><code>:first-child</code> <a class="header-anchor" href="#first-child" aria-label="Permalink to "`:first-child`""></a></h4><p>给所有 <code><ul></code> 下的第一个 <code><li></code> 应用不同的样式</p><div class="language-css vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">ul</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> li</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">blue</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">ul</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> li</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">:first-child</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">red</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> font-weight</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bold</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><h4 id="active" tabindex="-1"><code>:active</code> <a class="header-anchor" href="#active" aria-label="Permalink to "`:active`""></a></h4><p><code>:active</code> 表示的是鼠标从按下到松开的时间,下述代码表示 <code><a></code> 在不同状态下的样式。</p><div class="language-css vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">a</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">:link</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">blue</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; } </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* 未访问链接 */</span></span>
|
||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">a</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">:visited</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">purple</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; } </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* 已访问链接 */</span></span>
|
||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">a</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">:hover</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">background</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">yellow</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; } </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* 用户鼠标悬停 */</span></span>
|
||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">a</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">:active</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">red</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; } </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* 激活链接 */</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><blockquote><p><strong>注意</strong>: <code>:active</code> 赋予的样式可能会被后声明的其他链接相关的伪类覆盖。为保证样式生效,需要把 <code>:active</code> 的样式放在所有链接相关的样式之后。</p></blockquote><p>这种链接伪类先后顺序被称为 <em>LVHA 顺序</em>:<code>:link</code> > <code>:visited</code> > <code>:hover</code> > <code>:active</code>。</p><h3 id="单独使用的伪类关键字" tabindex="-1">单独使用的伪类关键字 <a class="header-anchor" href="#单独使用的伪类关键字" aria-label="Permalink to "单独使用的伪类关键字""></a></h3><p>我们常见的伪类关键字的特征是以单个冒号<code>:</code>开头,跟随在基础选择器后面。</p><p><strong>但是单独使用的伪类关键字也可以对页面产生效果,</strong> 例如:</p><p>通过 <code>:focus</code> 伪类,可以让任何元素获得焦点后的颜色变为红色。</p><div class="language-css vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">:focus</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">red</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>更多伪类,见 <a href="https://developer.mozilla.org/zh-CN/docs/Web/CSS/Pseudo-classes#%E6%A0%87%E5%87%86%E4%BC%AA%E7%B1%BB%E7%B4%A2%E5%BC%95" target="_blank" rel="noreferrer">MDN - 标准伪类索引</a></p><p><img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d77fd1d23840415ca645e9429237b6dc~tplv-k3u1fbpfcp-watermark.image?" alt="image.png" loading="lazy"></p><h2 id="🔰-什么是伪元素" tabindex="-1">🔰 什么是伪元素? <a class="header-anchor" href="#🔰-什么是伪元素" aria-label="Permalink to "🔰 什么是伪元素?""></a></h2><p>伪元素是一个<strong>附加至选择器末的关键词</strong>,允许你对被选择元素的特定部分修改样式。</p><p>与伪类相同,一个选择器中只能使用一个伪元素。但是,<strong>伪元素必须紧跟在语句中的基础选择器之后</strong>。</p><p>例如,下述代码可以给页面中每个 <code><a></code> 标签前添加一个😃表情。</p><div class="language-css vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">a</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">::before</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> content</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"😃"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>相比于伪类,伪元素的使用方式更加固定,其基本语法:</p><div class="language-css vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">selector::</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">pseudo-element</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> property</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: value;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><blockquote><p><strong>注意</strong>: 在书写伪元素时,你会见到单冒号 <code>:</code> 的写法,但此为CSS2过时语法,仅用于支持IE8,大多情况请书写双冒号 <code>::</code> 来表示伪元素。</p></blockquote><p>更多伪元素见 <a href="https://developer.mozilla.org/zh-CN/docs/Web/CSS/Pseudo-elements#%E6%A0%87%E5%87%86%E4%BC%AA%E5%85%83%E7%B4%A0%E7%B4%A2%E5%BC%95" target="_blank" rel="noreferrer">MDN - 标准伪元素索引</a></p><p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/17049cd3157f4a368c98d4fcd905c064~tplv-k3u1fbpfcp-watermark.image?" alt="image.png" loading="lazy"></p><h2 id="📌-伪类与伪元素共同使用" tabindex="-1">📌 伪类与伪元素共同使用 <a class="header-anchor" href="#📌-伪类与伪元素共同使用" aria-label="Permalink to "📌 伪类与伪元素共同使用""></a></h2><p>下面一个案例中,同时用到了伪类和伪元素:</p><blockquote><p>用CSS实现一个开关样式,hover时触发,滑块为正方形,具体大小可随意,如下图</p></blockquote><p><img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a6e4b09bb9e64989b0561d48d10a2734~tplv-k3u1fbpfcp-watermark.image?" alt="image.png" loading="lazy"></p><blockquote><p>尽量实现如下要求,可实现一部分:</p><ol><li>开关动作均有动画过度(滑块移位、背景色)</li><li>只用一个dom元素实现</li><li>开关的高度是固定的,但宽度不固定,即宽度为未知父元素的100%,宽度始终大于高度</li></ol></blockquote><h3 id="题目解读" tabindex="-1">题目解读 <a class="header-anchor" href="#题目解读" aria-label="Permalink to "题目解读""></a></h3><p>由于只能使用一个 <code>DOM</code> 元素,而要区分滑块和背景的不同状态,故使用伪元素 <code>::before</code> 在 <code>.box</code> 内部添加一个滑块,滑块采用 <code>inline-block</code> 方式展示,并且由 <code>transition</code> 属性指定过渡动画。</p><p>对于背景也采用了 <code>transition</code> 来指定过渡动画,并且二者都通过 <code>:hover</code> 触发。</p><p><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1ac690e718be445083bc67b7bbcccb7e~tplv-k3u1fbpfcp-watermark.image?" alt="image.png" loading="lazy"></p><h3 id="实现代码" tabindex="-1">实现代码 <a class="header-anchor" href="#实现代码" aria-label="Permalink to "实现代码""></a></h3><p><code>HTML</code></p><div class="language-html vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">html</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> class</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"father"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> class</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"box"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p><code>CSS</code></p><div class="language-css vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">.box</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> height</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">50</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">px</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> width</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">100</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> background-color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">#c2d3e4</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> transition</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: background-color </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0.25</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">s</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">.box::before</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> content</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"b"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">white</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> display</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">inline-block</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> background-color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">white</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> position</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">relative</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> top</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">px</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> left</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> height</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">px</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> width</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">35</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> transition</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">left</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0.25</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">s</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">.box:hover</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> background-color</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">#348fe4</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">.box:hover::before</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> left</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">60</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* 父元素宽度任意 */</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">.father</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> width</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">100</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">px</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br></div></div><h3 id="相关链接" tabindex="-1">相关链接 <a class="header-anchor" href="#相关链接" aria-label="Permalink to "相关链接""></a></h3><p><a href="https://code.juejin.cn/pen/7088328950488760334" target="_blank" rel="noreferrer">代码片段</a></p><p><a href="https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Building_blocks/Selectors" target="_blank" rel="noreferrer"><code>CSS选择器</code></a></p></div></div></main><footer class="VPDocFooter" data-v-0ef3a6cc data-v-48e5664a><!--[--><!--]--><div class="edit-info" data-v-48e5664a><div class="edit-link" data-v-48e5664a><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/ZiuChen/ZiuChen.github.io/edit/main/docs/article/一文读懂伪类与伪元素.md" target="_blank" rel="noreferrer" data-v-48e5664a><!--[--><span class="vpi-square-pen edit-link-icon" data-v-48e5664a></span> Edit this page on GitHub<!--]--></a></div><div class="last-updated" data-v-48e5664a><p class="VPLastUpdated" data-v-48e5664a data-v-838bf1ba>Updated Date: <time datetime="2024-04-07T13:28:58.000Z" data-v-838bf1ba></time></p></div></div><nav class="prev-next" data-v-48e5664a><div class="pager" data-v-48e5664a><a class="VPLink link pager-link prev" href="/article/%E4%B8%80%E6%96%87%E8%AF%BB%E6%87%82%E4%BA%8B%E4%BB%B6%E5%86%92%E6%B3%A1%E4%B8%8E%E4%BA%8B%E4%BB%B6%E6%8D%95%E8%8E%B7.html" data-v-48e5664a><!--[--><span class="desc" data-v-48e5664a>Previous page</span><span class="title" data-v-48e5664a>一文读懂事件冒泡与事件捕获</span><!--]--></a></div><div class="pager" data-v-48e5664a><a class="VPLink link pager-link next" href="/article/%E4%B8%80%E6%96%87%E8%AF%BB%E6%87%82%E5%87%BD%E6%95%B0%E4%B8%ADthis%E6%8C%87%E5%90%91%E9%97%AE%E9%A2%98.html" data-v-48e5664a><!--[--><span class="desc" data-v-48e5664a>Next page</span><span class="title" data-v-48e5664a>一文读懂函数中this指向问题</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-aa0dbd16 data-v-2e4bef11><div class="container" data-v-2e4bef11><p class="message" data-v-2e4bef11>Released under the MIT License.</p><p class="copyright" data-v-2e4bef11>Copyright © 2022-PRESENT ZiuChen</p></div></footer><!--[--><!--]--></div></div>
|
||
<script>window.__VP_HASH_MAP__=JSON.parse("{\"note_javascript.md\":\"C9PtvVsR\",\"article_一文读懂函数中this指向问题.md\":\"DIo5RvUo\",\"project_clipboardmanager_index.md\":\"geIe0a8f\",\"project_clipboardmanager_guide_index.md\":\"B7FOkXIE\",\"index.md\":\"ZfmjeacE\",\"note_front-end engineering.md\":\"B9_ZgiGA\",\"article_一文读懂事件冒泡与事件捕获.md\":\"CBLddC7H\",\"article_彻底搞懂对象的数据属性描述符、存储属性描述符.md\":\"DsZqvMT3\",\"article_深入理解proxy与reflect.md\":\"DKYcTR2G\",\"article_深入vue3源码,看看vue.use后究竟发生了什么?.md\":\"BO7T2Ala\",\"article_深入理解浏览器缓存机制.md\":\"DVVIqJDC\",\"article_浅析defineproperty与proxy实现的双向绑定.md\":\"BeE1dSH6\",\"article_【用友金融】前端面试题总结.md\":\"B-LJIZt1\",\"article_深入理解浏览器运行原理.md\":\"CGLbsPBh\",\"project_jsrunner_index.md\":\"bvPddzsK\",\"project_jsrunner_log_index.md\":\"ClcReNHd\",\"project_markdown_index.md\":\"CtySzqwK\",\"project_markdown_log_index.md\":\"C0sGi8FV\",\"project_markdown_shortcut_index.md\":\"Ct1Q6lR_\",\"project_smartwordbreak_index.md\":\"BJ9VC9WP\",\"project_smartwordbreak_log_index.md\":\"D6eahC8T\",\"self_index.md\":\"XoX24Ba8\",\"project_smartwordbreak_statement_index.md\":\"CdxzOZPq\",\"works_contribution.md\":\"DIcR8Ny2\",\"works_opensource.md\":\"DJyXS16s\",\"note_redux.md\":\"C2VEPJiK\",\"note_react router.md\":\"BV4plMt_\",\"article_深入javascript数据类型.md\":\"DyWzb-_1\",\"note_mysql.md\":\"CQv5EbRw\",\"demos_promiseify-post-message_inner.md\":\"Cwhy6mgF\",\"article_从0实现一个年度报告.md\":\"CYN0U-gt\",\"note_ssr.md\":\"DQjTGE-G\",\"article_【2023】青训营 - 前端练习题汇总解析.md\":\"D3yXLVno\",\"article_【字节跳动】前端面试题总结.md\":\"D9SzDpgc\",\"note_react hooks.md\":\"ZhxJFxaB\",\"article_一文读懂伪类与伪元素.md\":\"BAP-CMhr\",\"project_clipboardmanager_log_index.md\":\"ygzZYNpW\",\"demos_promiseify-post-message_index.md\":\"D97I0piP\",\"note_css.md\":\"ajVoiB79\",\"project_clipboardmanager_statement_index.md\":\"6pLDsVpe\",\"article_【快手】深入理解前端面试题.md\":\"B1dk6N4U\",\"note_rust.md\":\"CXTzKVu7\",\"note_react.md\":\"Df4MQoBZ\",\"note_javascriptenhanced.md\":\"CTWsfaZV\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"ZiuChen\",\"description\":\"Unlimited Progress.\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/logo.png\",\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"我的项目\",\"items\":[{\"text\":\"超级剪贴板\",\"link\":\"/project/ClipboardManager/\"},{\"text\":\"超级Markdown\",\"link\":\"/project/Markdown/\"},{\"text\":\"超级JavaScript\",\"link\":\"/project/JSRunner/\"},{\"text\":\"超级分词\",\"link\":\"/project/SmartWordBreak/\"}]},{\"text\":\"开源作品\",\"items\":[{\"text\":\"个人作品\",\"link\":\"/works/opensource\"},{\"text\":\"社区贡献\",\"link\":\"/works/contribution\"}]},{\"text\":\"学习笔记\",\"items\":[{\"text\":\"JavaScript基础\",\"link\":\"/note/JavaScript\"},{\"text\":\"CSS基础\",\"link\":\"/note/CSS\"},{\"text\":\"JavaScript进阶\",\"link\":\"/note/JavaScriptEnhanced\"},{\"text\":\"前端工程化\",\"link\":\"/note/Front-end Engineering\"},{\"text\":\"服务端渲染\",\"link\":\"/note/SSR\"},{\"text\":\"React基础\",\"link\":\"/note/React\"},{\"text\":\"React Hooks\",\"link\":\"/note/React Hooks\"},{\"text\":\"Redux\",\"link\":\"/note/Redux\"},{\"text\":\"React Router\",\"link\":\"/note/React Router\"},{\"text\":\"MySQL\",\"link\":\"/note/MySQL\"},{\"text\":\"Rust\",\"link\":\"/note/Rust\"}]},{\"text\":\"个人介绍\",\"link\":\"/self/\"}],\"sidebar\":[{\"text\":\"我的项目\",\"items\":[{\"text\":\"超级剪贴板\",\"link\":\"/project/ClipboardManager/\"},{\"text\":\"超级Markdown\",\"link\":\"/project/Markdown/\"},{\"text\":\"超级JavaScript\",\"link\":\"/project/JSRunner/\"},{\"text\":\"超级分词\",\"link\":\"/project/SmartWordBreak/\"}]},{\"text\":\"开源作品\",\"collapsed\":true,\"items\":[{\"text\":\"个人作品\",\"link\":\"/works/opensource\"},{\"text\":\"社区贡献\",\"link\":\"/works/contribution\"}]},{\"text\":\"文章归档\",\"collapsed\":true,\"items\":[{\"text\":\"【2023】青训营 - 前端练习题汇总解析\",\"link\":\"/article/【2023】青训营 - 前端练习题汇总解析.md\"},{\"text\":\"【字节跳动】前端面试题总结\",\"link\":\"/article/【字节跳动】前端面试题总结.md\"},{\"text\":\"【快手】深入理解前端面试题\",\"link\":\"/article/【快手】深入理解前端面试题.md\"},{\"text\":\"【用友金融】前端面试题总结\",\"link\":\"/article/【用友金融】前端面试题总结.md\"},{\"text\":\"一文读懂事件冒泡与事件捕获\",\"link\":\"/article/一文读懂事件冒泡与事件捕获.md\"},{\"text\":\"一文读懂伪类与伪元素\",\"link\":\"/article/一文读懂伪类与伪元素.md\"},{\"text\":\"一文读懂函数中this指向问题\",\"link\":\"/article/一文读懂函数中this指向问题.md\"},{\"text\":\"从0实现一个年度报告\",\"link\":\"/article/从0实现一个年度报告.md\"},{\"text\":\"彻底搞懂对象的数据属性描述符、存储属性描述符\",\"link\":\"/article/彻底搞懂对象的数据属性描述符、存储属性描述符.md\"},{\"text\":\"浅析defineProperty与Proxy实现的双向绑定\",\"link\":\"/article/浅析defineProperty与Proxy实现的双向绑定.md\"},{\"text\":\"深入JavaScript数据类型\",\"link\":\"/article/深入JavaScript数据类型.md\"},{\"text\":\"深入Vue3源码,看看Vue.use后究竟发生了什么?\",\"link\":\"/article/深入Vue3源码,看看Vue.use后究竟发生了什么?.md\"},{\"text\":\"深入理解Proxy与Reflect\",\"link\":\"/article/深入理解Proxy与Reflect.md\"},{\"text\":\"深入理解浏览器缓存机制\",\"link\":\"/article/深入理解浏览器缓存机制.md\"},{\"text\":\"深入理解浏览器运行原理\",\"link\":\"/article/深入理解浏览器运行原理.md\"}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/ZiuChen\"},{\"icon\":{\"svg\":\"<svg width=\\\"36\\\" height=\\\"28\\\" viewBox=\\\"0 0 36 28\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M17.5875 6.77268L21.8232 3.40505L17.5875 0.00748237L17.5837 0L13.3555 3.39757L17.5837 6.76894L17.5875 6.77268ZM17.5863 17.3955H17.59L28.5161 8.77432L25.5526 6.39453L17.59 12.6808H17.5863L17.5825 12.6845L9.61993 6.40201L6.66016 8.78181L17.5825 17.3992L17.5863 17.3955ZM17.5828 23.2891L17.5865 23.2854L32.2133 11.7456L35.1768 14.1254L28.5238 19.3752L17.5865 28L0.284376 14.3574L0 14.1291L2.95977 11.7531L17.5828 23.2891Z\\\" fill=\\\"#1E80FF\\\"/></svg>\"},\"link\":\"https://juejin.cn/user/1887205216238477\"}],\"editLink\":{\"pattern\":\"https://github.com/ZiuChen/ZiuChen.github.io/edit/main/docs/:path\",\"text\":\"Edit this page on GitHub\"},\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2022-PRESENT ZiuChen\"},\"lastUpdatedText\":\"Updated Date\",\"search\":{\"provider\":\"algolia\",\"options\":{\"appId\":\"LFZ2CPWWUG\",\"apiKey\":\"b4fd296ea5e467b3ac4a582160ff3122\",\"indexName\":\"ziuchenio\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
||
|
||
</body>
|
||
</html> |