1<!DOCTYPE html> 2 3 4<html lang="zh_CN" class=""> 5<head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"> 8 <meta name="renderer" content="webkit"> 9 <meta name="viewport" 10 content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> 11 <title>注å - è士靿°å¦ · å¦éå¨çº¿ - è士靿°å¦ï½å¦ä¼ï¼ä¸æ¯å¦è¿ - Powered By EduSoho</title> 12 <meta name="keywords" 13 content=" 14è士靿°å¦,å¦éå¨çº¿,å°å¦å¥¥æ°,å°å¦æ°å¦,å䏿°å¦,æ°å¦åæ¥è¯¾,ä¸èæ°å¦,å¨çº¿æ°å¦è¯¾,ä¸é¢è¯¾,å颿¹æ³"/> 15 <meta name="description" 16 content="å¦éå¨çº¿ xuetong.com · è士靿°å¦ãå°å¦å䏿°å¦è§é¢è¯¾ï¼å°å¦æ°å¦åæ¥æé«ãå°å¦å¥¥æ°ä¸é¢ãå䏿°å¦ï¼è¦çä¸è³ä¹å¹´çº§ãå¹´å¡ 1,499 å /å¹´ï¼æ°èåä»·ï¼å ¨ç«è¯¾ç¨ç å¦ã"/> 17 <meta name="format-detection" 18 content=""/> 19 <meta content="ndvJnDVfouGPEfos_GEcVXJ8QLFFfzq-NrBCgFCYR0Q" name="csrf-token"/> 20 <meta content="0" name="is-login"/> 21 <meta content="0" name="wechat_login_bind"/> 22 23 24 <meta property="qc:admins" content="213630315547676375" /> 25 <link rel="icon" href="/files/system/2026/09-17/183851b306d2792570.png?version=26.3.6" type="image/x-icon"/> 26 <link rel="shortcut icon" href="/files/system/2026/09-17/183851b306d2792570.png?version=26.3.6" type="image/x-icon" media="screen"/> 27 28
28<script src="/static-dist/libs/agent-web-sdk/1.2.7/agent-sdk.1.2.7.iife.js?version=26.3.6"></script>
28 29 30 <link href="/static-dist/app/css/bootstrap.css?version=26.3.6" rel="stylesheet" /> 31<link href="/static-dist/app/css/main.css?version=26.3.6" rel="stylesheet" /> 32<link href="/static-dist/app/css/main-v2.css?version=26.3.6" rel="stylesheet" /> 33 34 35 36 <link rel="stylesheet" media="screen" href="/static-dist/gracefultheme/css/main.css?version=1.7.15" /> 37 38 </head> 39<body class="es-main-default es-nav-default register" > 40 41 <div class="es-wrap"> 42 <!-- header --> 43<div class="navbar site-navbar one-nav" id="site-navbar" data-counter-url="/user_remind_counter"> 44 <div class="container"> 45 <div class="container-gap"> 46 <div class="navbar-header clearfix"> 47 48 <!-- btn--> 49 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 50 <span class="iconfont icon-nanrentouxiang"></span> 51 </button> 52 53 <!-- btn--> 54 <div class="menu-btn"> 55 <span class="iconfont icon-menu"></span> 56 </div> 57 58 <!-- logo --> 59 <a class="navbar-brand-logo" href="/"><img src="/files/system/2026/09-17/1838499c1a54682586.png?version=26.3.6"></a> 60 61 <form class="navbar-form navbar-left hidden-sm hidden-xs clearfix" role="search" action="/search"> 62 <div class="form-group"> 63 <input type="search" class="form-control" placeholder="请è¾å ¥æå ´è¶£ç课ç¨å" name="q"> 64 </div> 65 <button type="submit" class="btn"><span class="iconfont icon-sousuo1"></span></button> 66 </form> 67 68 </div> 69 70 <div class="navbar-collapse collapse"> 71 <ul class="nav navbar-nav navbar-right"> 72 <li><a href="/login?goto=/"> <span class="iconfont icon-login"></span><p>ç»å½</p></a></li> 73 <li><a href="/register?goto=/"> <span class="iconfont icon-zhuce"></span><p>注å</p></a></li> 74 </ul> 75 </div><!--/.navbar-collapse end --> 76 </div> 77 </div> <div class="menu-sec"> 78 <div class="container"> 79 <ul class="nav navbar-nav"> 80 <li class=""> 81 <a href="/" class="" >é¦é¡µ </a> 82 </li> 83 <li class=""> 84 <a href="/course/explore/xiaosx" class="" >å°å¦æ°å¦ </a> 85 </li> 86 <li class=""> 87 <a href="/course/explore/xiaoas" class="" >å°å¦å¥¥æ° </a> 88 </li> 89 <li class=""> 90 <a href="/course/explore/chusx" class="" >å䏿°å¦ </a> 91 </li> 92 <li class=""> 93 <a href="/vip/" class="" target="_blank" >ç å¦å¹´å¡ </a> 94 </li> 95 <li class=""> 96 <a href="/classroom/explore" class="" >ç级 </a> 97 </li> 98 <li class=""> 99 <a href="/article" class="" target="_blank" >黿¿æ¥ </a> 100 </li> 101 <li class=""> 102 <a href="/page/liveclass" class="" >è士é¯ç´æè¯¾ </a> 103 </li> 104 <li class=""> 105 <a href="/page/daoxue" class="" >å¯¼å¦ </a> 106 </li> 107 <li class=""> 108 <a href="/page/gerenxuean" class="" >个æ§å妿¡ </a> 109 </li> 110 </ul> 111 </div> 112 </div> 113</div> 114 115 <div id="content-container" class="container"> 116 <div class="es-section login-section"> 117 <div class="logon-tab clearfix"> 118 <a href="/login?goto=/">ç»å½å¸å·</a> 119 <a class="active">注åå¸å·</a> 120 </div> 121 <div class="login-main"> 122 <input type="hidden" name="register_mode" value="mobile"/> 123 <form id="register-form" method="post" action=""> 124 125 <div class="form-group mbl"> 126 <label class="control-label required" 127 for="register_mobile">ææºå·ç </label> 128 <div class="controls"> 129 <input type="tel" id="register_mobile" name="verifiedMobile" class="form-control input-lg" 130 data-url="/register/mobile/check" 131 placeholder="å¡«åä½ å¸¸ç¨çææºå·ç ä½ä¸ºç»å½å¸å·" 132 onkeydown="if(event.keyCode==13) return false;"> 133 <p class="help-block"></p> 134 </div> 135 </div> 136 137 <div class="form-group mbl"> 138 <label class="control-label required" 139 for="register_nickname">ç¨æ·å</label> 140 <div class="controls"> 141 <input type="text" id="register_nickname" name="nickname" required="required" 142 class="form-control input-lg" data-url="/register/nickname/check" 143 placeholder="ä¸ãè±æåå¯ï¼æé¿18ä¸ªè±ææ9个æ±å" 144 onkeydown="if(event.keyCode==13) return false;"> 145 <p class="help-block"></p> 146 </div> 147 </div> 148 149 <div class="form-group mbl"> 150 <label class="control-label required" 151 for="register_password">å¯ç </label> 152 <div class="controls" style="position: relative;"> 153 <input type="password" id="register_password" name="password" required="required" 154 class="form-control input-lg" placeholder="请è¾å ¥å¯ç " 155 onkeydown="if(event.keyCode==13) return false;"> 156 <p class="help-block">8-32ä½å符ï¼å å«åæ¯ãæ°åã符å·ä»»æä¸¤ç§å以ä¸ç»åæçå¯ç </p> 157 <img src="/static-dist/app/img/open_eye.svg?version=26.3.6" class="open-eye" alt="" 158 style="position: absolute; right: 10px; top: 8px; cursor: pointer; display: none"/> 159 <img src="/static-dist/app/img/close_eye.svg?version=26.3.6" class="close-eye" alt="" 160 style="position: absolute; right: 10px; top: 8px; cursor: pointer; display: block"/> 161 </div> 162 </div> 163 164 <div 165 class="form-group cd-mb32 js-drag-jigsaw"> 166 <label class=" control-label required ">éªè¯ç </label> 167<input type="hidden" name="dragCaptchaToken" value="" /> 168<div class="drag-section-wrap">
169 <div class="drag-section"> 170 <div class="drag-img js-drag-img"> 171 <img class="js-jigsaw drag-img__jigsaw"> 172 <div class="drag-img__mask js-drag-img-mask infinite-loading"></div> 173 </div> 174 175 <div class="drag-bar"> 176 <span class="drag-bar__tip js-drag-bar-tip">æå¨å·¦è¾¹æ»å宿䏿¹æ¼å¾</span> 177 <div class="drag-bar__mask js-drag-bar-mask"></div> 178 <div id="drag-btn" class="drag-bar__btn"></div> 179 </div> 180 </div> 181</div> 182 </div> 183 <div 184 class="form-group mbl email_mobile_msg"> 185 <label class="control-label required js-email_mobile_msg-label">çä¿¡éªè¯ç </label> 186 <div class="controls cd-row"> 187 <div class="col-xs-6"> 188 <input type="text" maxlength="6" class="form-control input-lg js-email_mobile_msg-input" 189 data-url="/edu_cloud/sms_check/sms_registration" 190 onkeydown="if(event.keyCode==13) return false;"> 191 <p class="help-block"></p> 192 </div> 193 <div class="col-xs-6"> 194 <a href="javascript:;" class="btn btn-default sms-send-btn js-code-send-btn disabled" 195 data-sms-url="/edu_cloud/sms_send_registration"> 196 <span id="js-time-left"></span> 197 <span id="js-fetch-btn-text">è·åéªè¯ç </span> 198 </a> 199 </div> 200 </div> 201 </div> 202 203 204 <div class="form-group mbl"> 205 <div class="controls"> 206 <button type="button" id="register-btn" data-submiting-text="æ£å¨æäº¤..." 207 class="btn btn-primary btn-lg btn-block">注å</button> 208 </div> 209 </div> 210 211 212 <input type="hidden" name="emailToken" value=""> 213 <input type="hidden" name="captcha_enabled" value="1"/> 214 <input type="hidden" name="email_enabled" value="closed"/> 215 <input type="hidden" name="_csrf_token" value="ndvJnDVfouGPEfos_GEcVXJ8QLFFfzq-NrBCgFCYR0Q"> 216 <input type="hidden" name="registerVisitId" value=""> 217 <input type="hidden" name="emailOrMobile" value=""> 218 </form> 219 220 <div class="social-login"> 221 222 <span> 223 224 <a href="/login/bind/qq?_target_path=/&inviteCode=" class="social-icon social-qq"> 225 <i class="es-icon es-icon-qq"></i> 226 </a> 227 228 229 230 </span> 231 <div class="line"></div> 232 </div> 233 </div> 234 </div> 235 </div> 236 237 238 <div id="footer-fir" class="hidden-xs"> 239 <div class="container clearfix"> 240 241 <a class="pull-left" href="/"><img src="/files/system/2026/09-17/1838499c1a54682586.png?version=26.3.6"></a> 242 243 <div class="pull-right"> 244 <ul class="site-footer-links"> 245 </ul> 246 247 <p> 248 课ç¨å 容çæåå½<a href="/">è士靿°å¦</a>ææ 249 250 <a href=https://beian.miit.gov.cn target="_blank">京ICPå¤10050476å·-1</a> 251 </p> 252 <p class="edusoho"> Powered by <a href="http://www.edusoho.com/" target="_blank">EduSoho v26.3.6</a> 253 ©2014-2026 254</p> 255 <!-- è士靿°å¦ · å ¨ç«æçä¸è§è§åºçº¿ï¼DESIGN.md v1.0 · 2026-09-18 · P1-2 åè§ä¸æé®ç»ä¸ï¼ --> 256<style id="fsc-typography"> 257:root{ 258 --fsc-green:#0F392B; --fsc-gold:#B8893D; --fsc-leaf:#8EC663; 259 --fsc-cream:#FBF8F2; --fsc-ink:#3C3C3C; --fsc-ink-soft:#6B655C; 260 --fsc-body:16px; --fsc-lh:1.75; 261 --fsc-radius:4px; --fsc-radius-sm:4px; --fsc-radius-pill:999px; 262} 263/* ââ A. é¿ææ£æï¼P0-A å·²ä¸çº¿ï¼ä¿çï¼ââââââââââââââââââââââââââââââ */ 264.article-content{max-width:720px;margin:0 auto;font-size:var(--fsc-body)!important; 265 line-height:var(--fsc-lh)!important;color:var(--fsc-ink);text-align:left;} 266.article-content p{line-height:var(--fsc-lh)!important;margin:0 0 1.2em!important;} 267.article-content li{line-height:var(--fsc-lh)!important;} 268.article-content h1,.article-content h2,.article-content h3{color:var(--fsc-green);} 269.article-content a{color:var(--fsc-green);text-decoration:underline; 270 text-underline-offset:3px;} 271.course-item .title a,.es-card .title a{color:var(--fsc-ink);} 272.course-item .title a:hover,.es-card .title a:hover{color:var(--fsc-green);} 273 274/* ââ B. åè§ç»ä¸ä¸º 4pxï¼P1-2ï¼âââââââââââââââââââââââââââââââââââ */ 275/* 大ç½è¯ï¼æå ¨ç«æé® / å¡ç / è¾å ¥æ¡ç"åè§"ç»ä¸æä¸ä¸ªå°ºå¯¸ï¼ 276 é¿å æçæ¹ãæçåãæçååï¼ççåå 个人åå«åçã */ 277/* B1. å¡ç类容å¨ï¼æ¬å·²å¤æ¯ 4pxï¼æ¶ç´§æ®ä½ç 2px/3px/6pxï¼ */ 278.course-item,.classroom-item,.teacher-item,.es-card,.es-box,.panel,.card, 279.profile-card,.item-list li,.class-item,.coupon-item,.vip-card,.media, 280.list-item,.note-item,.question-item,.comment-item,.package-item{ 281 border-radius:var(--fsc-radius)!important; 282} 283/* B2. æé®ï¼ç»ä¸ 4pxï¼è¦çå¸èµé¡µ 2px ä¸é¦é¡µ 0pxï¼ */ 284.btn,.btn-primary,.btn-default,.btn-success,.btn-info,.btn-warning, 285.es-btn,button,input[type="submit"],input[type="button"],.ant-btn{ 286 border-radius:var(--fsc-radius)!important; 287} 288/* B3. è¡¨åæ§ä»¶ */ 289.form-control,input[type="text"],input[type="password"],input[type="email"], 290input[type="tel"],input[type="number"],textarea,select,.input-group, 291.search-input,.search-box{ 292 border-radius:var(--fsc-radius)!important; 293} 294/* B4. æ ç¾ / å¾½ç« / å°åç ââ ä¿çè¶åå½¢ï¼æ¬å°±æ¯è®¾è®¡æå¾ï¼ */ 295.label,.badge,.tag,.es-tag,.pill,.chip,.status-tag{ 296 border-radius:var(--fsc-radius-pill)!important; 297} 298/* B5. 头åä¸åå½¢è£ é¥° ââ ä¿ææ£åï¼ä¸è¦è¢«ä¸é¢è§åæ³¢å */ 299.avatar,.user-avatar,.img-circle,.round,.circle, 300[class*="avatar"] img,.teacher-avatar,.header-avatar{ 301 border-radius:50%!important; 302} 303/* B6. 䏿 / æµ®å± / å¼¹çª */ 304.dropdown-menu,.modal,.modal-content,.popover,.tooltip-inner,.es-modal, 305.ant-dropdown,.ant-modal-content,.select-menu,.tip-box{ 306 border-radius:var(--fsc-radius)!important; 307} 308/* B7. å¾ç容å¨ï¼ç¼©ç¥å¾ç»ä¸åè§ï¼ä¸å¡çä¸è´ï¼ */ 309.course-item img,.classroom-item img,.es-card img,.cover,.thumb, 310.thumbnail,.banner-img{ 311 border-radius:var(--fsc-radius)!important; 312} 313/* B8. ä¼å页ä¸é¡¹ï¼å®æµæ®çï¼2px/7px/8px/16px æ··ç¨ï¼ */ 314.level-item,.level-item__bg,.time-item,.time-item__btn, 315.title-style__item,.buy__btn,.vip-banner,.vip-box{ 316 border-radius:var(--fsc-radius)!important; 317} 318 319/* ââ C. ä¸»è²æ¶æï¼P1-3 · ç¬¬ä¸æ¥ï¼åªå¨æåè²ï¼ä¸å¨æé®åºè²ï¼ââââââââââ */ 320/* èæ¯ï¼å®æµå ¨ç«ç¨çæ¯ EduSoho èªå¸¦äº®ç»¿ #02b980ï¼ 321 èåçæ·±ç»¿ #0F392B åªå¨ä¼å页åºç° â å ¨ç«åçææè£ã 322 æ¬æ¥åªæãæåç±»ãçç»¿æ¶æå°åçæ·±ç»¿ï¼æé®åºè²çå°ç¬¬äºæ¥åç¬çææã 323 大ç½è¯ï¼å æ"å"çé¢è²æ¢æå±å®¶çç»¿ï¼æé®ç"åºè²"å å«å¨ï¼ç¨³å¦¥ç¹ã */ 324/* C1. æ£æå 龿¥ */ 325.article-content a,.article-content a:visited{color:var(--fsc-green)!important;} 326/* C2. æç« æ ç¾ / åç±»å°æ */ 327.btn-tag,.article-tag,.tag-item,.label-tag{color:var(--fsc-green)!important;} 328/* C3. 导èªé¾æ¥ï¼å½åé䏿 / æ¬åï¼ââ ç¨åç绿æ¿ä»£äº®ç»¿ */ 329.navbar-nav > li > a:hover,.navbar-nav > li > a:focus, 330.navbar-nav > .active > a,.nav-link:hover,.nav-link.active{ 331 color:var(--fsc-green)!important; 332} 333/* C4. é¢å å± / 次级导èªçæå龿¥ */ 334.breadcrumb a,.breadcrumb-item a,.sub-nav a:hover,.crumb a{ 335 color:var(--fsc-green)!important; 336} 337/* C5. å页页ç ï¼æ°å龿¥ï¼æåè² */ 338.pagination > li > a,.pager > li > a,.page-link,.pagination a{ 339 color:var(--fsc-green)!important; 340} 341.pagination > .active > a,.page-item.active .page-link{ 342 background-color:var(--fsc-green)!important; 343 border-color:var(--fsc-green)!important;color:#fff!important; 344} 345/* C6. ä¼åé¡µï¼æåçé/深绿已æé¨åä¿æï¼ä» ç»ä¸"å¾é"符å·è² */ 346.level-item .fa-check,.time-item .fa-check,.vip-table .fa-check{ 347 color:var(--fsc-gold)!important; 348} 349/* C7. å ¨å±æ 颿åè²ï¼h1-h3 æªä¸æ¦çé¨åï¼ */ 350h1,h2,h3{color:var(--fsc-green);} 351.page-header h1,.section-title,.block-title,.main-title{color:var(--fsc-green);} 352 353/* ââ D. æé®åºè²æ¶æï¼P1-3 ç¬¬äºæ¥ · æ¹æ¡ Cï¼æ·±ç»¿åº + åçè²æè¾¹ï¼ââââââ */ 354/* å³çï¼èèå¸ 2026-09-18 ææ¿ãC ç¨ Cãã 355 宿µä¾æ®ï¼WCAG 对æ¯åº¦ï¼ï¼äº®ç»¿åº+ç½å = 2.54ï¼â ä¸åæ ¼ï¼
356 深绿åº+ç½å = 12.80ï¼â å®å ¨åæ ¼ï¼ 357 â æ¢ææ·±ç»¿åºä¸åªæ¯"ç»ä¸åç"ï¼æ¯**ççæ´å¥½è¯»**ã 358 æè¾¹ç¨äº®ç»¿ #8EC663ï¼é 深绿 6.34ï¼èéåçéï¼é æ·±ç»¿ä» 4.07ï¼1px 太弱ï¼ã */ 359:root{ --fsc-btn:#0F392B; --fsc-btn-hover:#155C43; --fsc-btn-line:#8EC663; } 360 361/* D1. 主æé®ï¼æ·±ç»¿åº + 亮绿æè¾¹ + ç½å */ 362.btn-primary,.btn-success,.btn-info,.btn-lg,.btn-sm, 363.es-btn-primary,.buy__btn,.time-item__btn{ 364 background-color:var(--fsc-btn)!important; 365 border:1px solid var(--fsc-btn-line)!important; 366 color:#fff!important; 367 box-shadow:0 1px 2px rgba(15,57,43,.18)!important; 368} 369.btn-primary:hover,.btn-success:hover,.btn-info:hover,.es-btn-primary:hover, 370.buy__btn:hover,.time-item__btn:hover, 371.btn-primary:focus,.btn-success:focus,.btn-info:focus{ 372 background-color:var(--fsc-btn-hover)!important; 373 border-color:var(--fsc-leaf)!important; 374 color:#fff!important; 375} 376/* D2. é¡¶é¨æç´¢æé®ï¼å®æµï¼`<button class="btn"><span class="iconfont icon-sousuo1">`ï¼ 377 ç¶å ç´ `.navbar-form`ï¼â æ·±ç»¿åº + 亮绿æè¾¹ + ç½å¾æ 378 â ï¸ å¿ é¡»ç¨ :not() æé¤å®¢ææ¡ï¼å¦åä¼è¯¯ä¼¤ãå 微信ãå¯ä¸éé */ 379.navbar-form .btn,button.btn[type="submit"]:not([class*="consult"]){ 380 background-color:var(--fsc-btn)!important; 381 border:1px solid var(--fsc-btn-line)!important; 382 color:#fff!important; 383} 384.navbar-form .btn:hover,button.btn[type="submit"]:not([class*="consult"]):hover{ 385 background-color:var(--fsc-btn-hover)!important; 386} 387/* D3. 䏿忢æé®ãä¼å课ç¨ãâ 宿µæ¯**æ è¾¹æ¡éæåºç°å**ç设计ï¼
388 ä¸è¦ç»å®å è¾¹æ¡ï¼å äºåèåä¸ï¼ãåªç»ä¸åè§ï¼ä¿æåæ ·ã */ 389.btn.dropdown-toggle,.dropdown-toggle{ 390 border-radius:var(--fsc-radius)!important; 391} 392/* D4. ä¼åé¡µä»·æ ¼æé®ï¼æ©è² #ffa51f é ç½åä» 1.97ï¼â 严éä¸åæ ¼ï¼ 393 â æ¶æå°åçæ·±ç»¿ï¼ä¿çéè²æè¾¹åä¼åä¸å±åºåã 394 â ï¸ å¿ é¡»é¿å¼ .btn-consult-warningï¼å®¢ææ¡ä¹å« .btn-warning åç¼ç±»åï¼ */ 395.btn-warning:not(.btn-consult-warning){ 396 background-color:var(--fsc-btn)!important; 397 border:1px solid var(--fsc-gold)!important; 398 color:#fff!important; 399 box-shadow:0 1px 2px rgba(15,57,43,.18)!important; 400} 401.btn-warning:not(.btn-consult-warning):hover{ 402 background-color:var(--fsc-btn-hover)!important; 403 border-color:var(--fsc-gold)!important; 404 color:#fff!important; 405} 406/* D5. ð´ð´ ä¿æ¤æ¡ï¼å®¢ææµ®å¨æ¡ = å ¨ç«"å 微信"å¯ä¸ééï¼ç»å¯¹ä¸è½è¢«è¦çã 407 æ¾å¨æå + æ¾å¼å£°æï¼ç¡®ä¿ä¼å 级æé«ã */ 408.btn-consult-warning,.float-consult .btn, 409.float-consult-phone-btn,.float-consult-weixin-btn,.float-consult-email-btn, 410[class*="float-consult"]{ 411 background-color:rgb(255,165,31)!important; 412 border:1px solid rgb(238,148,14)!important; 413 color:#fff!important; 414 border-radius:var(--fsc-radius)!important; 415} 416/* D6. å页å½å页ï¼ä¸æé®åè²ç³»ï¼ */ 417.pagination > .active > a,.page-item.active .page-link{ 418 background-color:var(--fsc-btn)!important; 419 border-color:var(--fsc-btn)!important; 420} 421 422/* ââ E. å¯¼èªæ¡æ·±ç»¿åï¼P1-3 æ¶å°¾ · 䏿é®å¼åºï¼ââââââââââââââââââââââ */ 423/* 宿µæ¹åï¼`.menu-sec` æ¯ 1440Ã40 æ¨ªè´¯å ¨å®½ç亮绿å®å¿è²åï¼è§è§æéçä¸åï¼ï¼ 424 æé®å·²æ¹æ·±ç»¿åï¼å¯¼èªæ¡ä»æ¯äº®ç»¿ä¼å½¢æææ¾å²è£ã 425 é æ¯ï¼æ·±ç»¿åº #0F392B + ç±³ç½å #FBF8F2ï¼å¯¹æ¯åº¦ 12.08 â ï¼ã */ 426.menu-sec{ 427 background-color:var(--fsc-green)!important; 428 border-color:var(--fsc-green)!important; 429} 430.menu-sec a,.menu-sec .nav-link,.menu-sec li > a{ 431 color:var(--fsc-cream)!important; 432} 433.menu-sec a:hover,.menu-sec a:focus,.menu-sec a.active, 434.menu-sec .active > a,.menu-sec .nav-link:hover,.menu-sec .nav-link.active{ 435 color:var(--fsc-leaf)!important; 436 background-color:transparent!important; 437} 438/* E2. ãææ° / æç / æ¨èãçéæ¡é䏿
439 â ï¸ å®æµï¼å ¨ç«ä» 1 个 `a.active`ï¼ç¥å é¾ `ul.nav.nav-sort < div.es-filter.pc-es-filter`ã 440 ç¨ç²¾ç¡®ç¥å éå®ï¼ç»ä¸ç¨å®½æ³ç `li > a.active`ï¼ä¼è¯¯ä¼¤å ¨ç«åè¡¨é¾æ¥ï¼ã */ 441.es-filter .nav-sort > li > a.active, 442.es-filter .nav-sort > li.active > a, 443.pc-es-filter .nav > li > a.active{ 444 background-color:var(--fsc-green)!important; 445 color:#fff!important; 446 border-color:var(--fsc-green)!important; 447} 448/* E3. å类导èªï¼ãå ¨é¨/å°å¦å¥¥æ°/å°å¦æ°å¦/å䏿°å¦ãï¼é䏿 */ 449.cat-nav a.active,.category-list a.active,.nav-tabs > li.active > a{ 450 color:var(--fsc-green)!important; 451 border-color:var(--fsc-green)!important; 452} 453/* E4. é¡¶é¨ä¸»å¯¼èªï¼ç½åºé£ä¸å±ï¼hover ä¹ç»ä¸ */ 454.navbar-nav > li > a:hover,.navbar-nav li.open > a{ 455 color:var(--fsc-green)!important; 456} 457/* E5. 课ç¨å¡çæ¬åæµ®å±ï¼é¦é¡µ `.mask`ï¼å®æµ `opacity:0` é¼ æ æ¬åææ¾ç¤ºï¼ 458 â åºè²æ¶æå°åçæ·±ç»¿ï¼åæ¬å°±æ¯æ·±è²é®ç½©ç设计æå¾ï¼ã 459 â ï¸ è¯¥æµ®å±å 容嫿叿µç§°"åè±"ï¼å± IP é®é¢ï¼å¦è¡å¤çï¼æ¤å¤åªæ¹åºè²ã */ 460.mask{background-color:rgba(15,57,43,.92)!important;} 461 462/* ââ F. é¦é¡µåºåæ 颿¹åï¼2026-09-18 èèå¸å·¥åï¼âââââââââââââââââââ */ 463/* å·¥åï¼é¦é¡µãå¦éç级ãâãç级ãï¼ãå¦éç å¦å¹´å¡ãâãç å¦å¹´å¡ãã 464 èæ¯ï¼å®æµè¿ä¸¤ä¸ª `<h2>` æ¯ **graceful 䏻颿¨¡æ¿åæ»ç**ï¼ 465 4 个åéåå°å ¥å£ï¼/setting/themeã/themeã/blockã/sett
465ing/homepageï¼å ¨ 404ï¼ 466 `/admin/v2/setting/theme` é乿 对åºå段 â **åå°æ¹ä¸äº**ã 467 æ¹æ¡ï¼ç¨ CSS è§è§è¦çï¼åæ `font-size:0` éè + `::after` æ³¨å ¥æ°æåï¼ï¼ 468 䏿¹æ¨¡æ¿ãå¯ä¸é®åæ»ã 469 â ï¸ å·²ç¥å±éï¼HTML éç**ç宿å仿¯æ§ç**ââå±å¹é 读å¨ä¸æç´¢å¼æè¯»å°çè¿æ¯åæã 470 ä» "è§è§"åäºã对åºåæ é¢è¿ç§éæ ¸å¿å 容坿¥åã 471 ð´ å ³é®åï¼ãæ¨è课ç¨ãåãå¦éç级ã**å ±ç¨ `.es-box.es-course > h2`**ï¼ 472 å¿ é¡»ç¨ `:has(> ul.home-class-list)` 精确åºåï¼å¦åä¼æãæ¨è课ç¨ã乿¹æãç级ãã */ 473.es-box:has(> ul.home-class-list) > h2{font-size:0!important;} 474.es-box:has(> ul.home-class-list) > h2::after{ 475 content:"ç级"; 476 font-size:24px; color:var(--fsc-green); font-weight:600; line-height:1.2; 477} 478.the-vip-content > h2{font-size:0!important;} 479.the-vip-content > h2::after{ 480 content:"ç å¦å¹´å¡"; 481 font-size:24px; color:var(--fsc-green); font-weight:600; line-height:1.2; 482} 483
484/* ââ G. æç« æ£ææçä¿®å¤ï¼2026-09-18 èèå¸å·¥åã页颿çä¸è¡ãï¼âââââ */ 485/* 宿µæ¹åï¼Playwright 读渲æåçå®å¼ï¼article/256ï¼ï¼ 486 .article-content å®¹å¨ = 16px / lh 28px â 容卿¯å¯¹ç 487 .article-content p = **13px** / lh 22.75px â ð´ 被主é¢åå° 13px 488 .article-content h3 = 18px / **lh 19.8px** â ð´ è¡é«æ¯åå·è¿å°ï¼åå å¨ä¸èµ· 489 æ ¹å ï¼æ£ææ¯è£¸ <p> æ å èæ ·å¼ï¼åå°å graceful 主é¢é»è®¤æ ·å¼ã 490 大ç½è¯ï¼å¤æ¡ç©¿ç 16 ç çéï¼éé¢å¡äºåª 13 ç çèã 491 颿¼å®æµï¼13pxâ16px / lh 22.75â28 / å°æ é¢ lh 19.8â28.5 / æ®µè· 15.6â19.2px */ 492.article-content p,.article-content li,.article-content div{ 493 font-size:16px!important; line-height:1.8!important; 494 margin:0 0 1.1em!important; color:var(--fsc-ink)!important; 495} 496.article-content h2{font-size:21px!important; line-height:1.5!important; 497 margin:32px 0 14px!important; color:var(--fsc-green)!important;} 498.article-content h3{font-size:19px!important; line-height:1.5!important; 499 margin:28px 0 12px!important; color:var(--fsc-green)!important;} 500.article-content h4{font-size:17px!important; line-height:1.5!important; 501 margin:22px 0 10px!important; color:var(--fsc-green)!important;} 502.article-content strong,.article-content b{color:var(--fsc-green)!important;} 503.article-content ul,.article-content ol{margin:0 0 1.1em 1.5em!important;padding:0;} 504.article-content ul li,.article-content ol li{margin:0 0 .5em!important;} 505.article-content img{max-width:100%;height:auto; 506 border-radius:var(--fsc-radius)!important;} 507.article-content blockquote{margin:0 0 1.1em!important;padding:12px 16px; 508 border-left:3px solid var(--fsc-leaf);background:var(--fsc-cream); 509 color:var(--fsc-ink-soft)!important;} 510.article-content hr{border:0;border-top:1px solid #e7e0d2;margin:28px 0;} 511 512/* ââ H. æç« å°é¢å¾å åºï¼2026-09-18 èèå¸å·¥åãå¾çæ¾ç¤ºä¸æ£å¸¸ãï¼ââââ */ 513/* 宿µæ ¹å ï¼é»è®¤å°é¢ URL `https://www.xuetong.com/assets/img/default/` è¿å **HTTP 404** 514 ï¼è¿å 6225 åèç 404 页é¢ï¼ï¼166/186 ç¯æç« å°é¢å ¨æåå® â 515 åå°æ¸²ææç ´å¾ï¼æè¢«åæ **16px 宽çç»é¿æ¡**ï¼æªå¾éç«ææå峿¤æ ï¼ã 516 â ï¸ è¯å®è¯´æï¼CSS **æ æ³æ£æµ 404**ï¼çº¯ CSS åªè½å¤ç"空 src"å尺寸失æ§ã 517 çæ£ç 404 ç ´å¾å¿ é¡»é "ç»æç« è¡¥å°é¢å¾"æ ¹æ²»ï¼æ¬æ®µåªæ¯å®å ¨ç½ã */ 518/* H1. 尺寸å åºï¼æ è®ºææ²¡æå¾ï¼é½å«åºç° 16px ç»é¿æ¡ */ 519.article-item img,.media img,.article-item .cover, 520.media-left img,.thumb,.thumbnail{ 521 max-width:100%!important; 522 height:auto!important; 523 min-width:0!important; 524 object-fit:cover!important; 525} 526/* H2. 空 src / æ src çå¾ç´æ¥éèï¼é¿å ç ´å¾è½®å» */ 527img[src=""],img:not([src]){display:none!important;} 528/* H3. ð´ 宿µçå®ç»æï¼2026-09-18ï¼ï¼ 529 `div.media > div.media-left > a > img.thumb-img[src="/files/ "]` 530 ââ ä¸åªæ¯å¾ç ´äºï¼**ç¶å®¹å¨ div.media-left æ¬èº«è¢«åæ 16px 宽**ï¼ 531 äºæ¯å¾çè¢«æ¤æ 16Ã170 çç»é¿æ¡ï¼é¾æ¥æååªè½ç«ææ¢è¡ã 532 â å¿ é¡»åæ¶æå¼ **ç¶å®¹å¨** ä¸ **img**ï¼ä¸¤å±ä¸èµ·ä¿®ï¼åªæ¹ img 没ç¨ã */ 533.article-item .media-left,.article-item .media-left a{ 534 display:block!important; 535 width:120px!important;min-width:120px!important;max-width:120px!important; 536 height:80px!important;overflow:hidden!important; 537 border-radius:var(--fsc-radius)!important; 538 background-color:var(--fsc-cream); 539} 540.article-item .media-left img,.article-item img.thumb-img{ 541 display:block!important; 542 width:120px!important;min-width:120px!important;max-width:120px!important; 543 height:80px!important;min-height:80px!important;max-height:80px!important; 544 object-fit:cover!important;object-position:center!important; 545} 546/* H4. åè¡¨æ£æå左移ï¼é¿å 被 120px å°é¢æ¤å */ 547.article-item .media-body,.article-item .media-right{min-width:0!important;} 548 549/* ââ I. æç« 页å³ä¾§æ ç¦èº« + æ£æå 宽ï¼2026-09-18 èè叿æ¿ï¼âââââââââ */ 550/* 宿µï¼æ£æ `.es-section.article-content` åªæ **720px**ï¼x=167ï¼ï¼ 551 å³ä¾§æ 363px å æ»¡ï¼ä¸é´å¤§çç©ºç½ â ä¿¡æ¯å¯åº¦æä½ã 552 å³ä¾§æ 4 åçå® classï¼å®æµï¼ï¼hot-article(çé¨ç¦ç¹) / hot-tag(ç鍿 ç¾) / 553 hot-comments(çé¨è¯è®º) / recommend-article(ç¼è¾æ¨è)ï¼åå **li æ¡ç®æ°å ¨ä¸º 0
553** 554 ï¼å³"çé¨è¯è®º"å½åæ¯ç©ºçï¼"ç鍿 ç¾"æ¯æ§ç«å ³é®è¯ï¼ã 555 å³çï¼åªçãçé¨ç¦ç¹ãï¼=ç«å 导èªï¼çæç¨ï¼ï¼å ¶ä½ä¸åéèï¼æ£æå å®½å° 840pxã */ 556.article-page .hot-tag,.article-page .hot-comments, 557.hot-tag,.hot-comments{display:none!important;} 558/* æ£æå®¹å¨å 宽ï¼å«å表/详æ éç¨ï¼ */ 559.es-section.article-content{max-width:840px!important;} 560/* å ¼å®¹å ¶å®é¡µé¢ä¸ç忬¾å®¹å¨ */ 561.article-content{max-width:840px!important;} 562/* å³ä¾§æ ä¿æå宽ï¼ä½é¡¶é¨å¯¹é½ï¼é¿å çç½ */ 563.panel.hot-article,.panel.recommend-article{margin-bottom:16px!important;} 564</style> 565 566<!-- FSC LIVE NAV HIGHLIGHT v1 --> 567<style id="fsc-live-nav"> 568/* 导èªãè士é¯ç´æè¯¾ãé«äº® ââ æéåºåï¼å¯¹é½ DESIGN.mdï¼æéï¼æäº¤å¨ä½ï¼ */ 569.es-header-nav a[href="/page/liveclass"], 570.navbar-nav a[href="/page/liveclass"], 571.nav>li>a[href="/page/liveclass"], 572.top-nav a[href="/page/liveclass"]{ 573 background:#B8893D!important; 574 color:#FFFFFF!important; 575 font-weight:500!important; 576 border-radius:4px 4px 0 0!important; 577 padding-left:15px!important; 578 padding-right:15px!important; 579} 580.es-header-nav a[href="/page/liveclass"]:hover, 581.navbar-nav a[href="/page/liveclass"]:hover, 582.nav>li>a[href="/page/liveclass"]:hover, 583.top-nav a[href="/page/liveclass"]:hover{ 584 background:#9E7433!important; 585 color:#FFFFFF!important; 586} 587.es-header-nav a[href="/page/liveclass"]::before, 588.navbar-nav a[href="/page/liveclass"]::before, 589.nav>li>a[href="/page/liveclass"]::before, 590.top-nav a[href="/page/liveclass"]::before{ 591 content:"\25CF"; 592 color:#FFE9C4; 593 font-size:9px; 594 margin-right:6px; 595 vertical-align:2px; 596} 597@media(max-width:767px){ 598 .es-header-nav a[href="/page/liveclass"]::before, 599 .navbar-nav a[href="/page/liveclass"]::before, 600 .nav>li>a[href="/page/liveclass"]::before, 601 .top-nav a[href="/page/liveclass"]::before{vertical-align:middle;} 602} 603</style> 604 605<!-- FSC DAOXUE NAV HIGHLIGHT v2 --> 606<style id="fsc-daoxue-nav"> 607/* 导èªã导å¦ãé«äº® v2ï¼2026-09-19ï¼ââ 墨éå®åº + ç±³ç½å + æéç»è¾¹ 608 ä¸ãè士é¯ç´æè¯¾ãæéå®åºå åå½¢ç¶ / åé«åº¦ / ååéï¼é è²ç¸ï¼é â éï¼åºåã 609 v1 æ¾ç¨ç±³ç½å®åº #FBF8F2ï¼å¨å¢¨ç»¿å¯¼èªæ¡ä¸è¿äº®è¿è·³ãä¸éå䏿æ¯ä¾ â æ¹ä¸ºä¸é´è°ã 610 对æ¯åº¦ï¼ç±³ç½å vs #35786A = 4.90:1ï¼â¥4.5 è¾¾æ ï¼ */ 611.es-header-nav a[href="/page/daoxue"], 612.navbar-nav a[href="/page/daoxue"], 613.nav>li>a[href="/page/daoxue"], 614.top-nav a[href="/page/daoxue"]{ 615 background:#35786A!important; 616 color:#FBF8F2!important; 617 font-weight:500!important; 618 border-radius:4px 4px 0 0!important; 619 box-shadow:inset 0 0 0 1px #B8893D!important; 620 padding-left:15px!important; 621 padding-right:15px!important; 622} 623.es-header-nav a[href="/page/daoxue"]:hover, 624.navbar-nav a[href="/page/daoxue"]:hover, 625.nav>li>a[href="/page/daoxue"]:hover, 626.top-nav a[href="/page/daoxue"]:hover{ 627 background:#3E8B7B!important; 628 color:#FFFFFF!important; 629} 630.es-header-nav a[href="/page/daoxue"]::before, 631.navbar-nav a[href="/page/daoxue"]::before, 632.nav>li>a[href="/page/daoxue"]::before, 633.top-nav a[href="/page/daoxue"]::before{ 634 content:"\25AA"; 635 color:#FBF8F2; 636 font-size:9px; 637 margin-right:6px; 638 vertical-align:2px; 639} 640@media(max-width:767px){ 641 .es-header-nav a[href="/page/daoxue"]::before, 642 .navbar-nav a[href="/page/daoxue"]::before, 643 .nav>li>a[href="/page/daoxue"]::before, 644 .top-nav a[href="/page/daoxue"]::before{vertical-align:middle;} 645} 646</style> 647</p></span></button> 648 649<!-- FSC LAZYLOAD FIX v1 · 2026-09-19 650 é®é¢ï¼graceful 主é¢çå¾çæå è½½ç¨ echo.jsï¼æå å¨ app/js/main.js å ï¼window.echoï¼ã 651 echo ç render() 被 250ms debounce å ä½ ââ åªå¨"忢æ»å¨ 250ms å"æè·ä¸æ¬¡ï¼ 652 æé´åè¿çæ´è¡å¡çæ°¸è¿ä¸æ¢å¾ï¼src åå¨ 480Ã270 纯ç°å ä½å¾ 653 /assets/img/default/lazyload_course.pngï¼å®æµ rgb(224,224,224)ï¼ã 654 ç°ç¶ï¼è¯¾ç¨å表页é¦å± 8/20 çå¾ï¼è§¦æ§æ¿è¿ç»æ» / ææ»å¨æ¡è·³å°åº â 第 3 è¡ 4 å¼ æ°¸ä¹ ç°æ¡ã 655 æ¬æ®µï¼æ data-echo äº¤ç»æµè§å¨åç loading="lazy" æ¥ç®¡ï¼å½»åºç»å¼ echo.js ç debounceã 656 å½±åé¢ï¼å ¨ç«ææç¨äº data-echo çå¾ï¼åªæ"ç°å ä½"æ¢æ"çå¾"ï¼ä¸æ¹åä»»ä½å¸å±ã 657 åéï¼å ææ¬æ®µï¼æ xt_site_css.py revertï¼å³æ¢å¤åç¶ã -->
658<script id="fsc-lazyload-fix"> 659(function(){ 660 if (window.__fscLazyFix) { return; } 661 window.__fscLazyFix = 1; 662 function fix(){ 663 var list = document.querySelectorAll('img[data-echo]'); 664 for (var i = 0; i < list.length; i++) { 665 var el = list[i]; 666 var src = el.getAttribute('data-echo'); 667 if (!src) { continue; } 668 el.setAttribute('loading', 'lazy'); 669 el.setAttribute('src', src); 670 el.removeAttribute('data-echo'); 671 } 672 } 673 function boot(){ fix(); } 674 if (document.readyState === 'loading') { 675 document.addEventListener('DOMContentLoaded', boot); 676 } else { boot(); } 677 window.addEventListener('load', boot); 678 if (window.MutationObserver && document.body) { 679 new MutationObserver(fix).observe(document.body, {childList: true, subtree: true}); 680 } 681})(); 682</script>
682 683 684<!-- FSC TEXT FIX v1 · 2026-09-19 ï¼æä»¤å¡ 003-R1ï¼ 685 ç®çï¼æ 6 å¤ã导èªä¸ä¸ªåã页é¢å¦ä¸ä¸ªåãåèªå¤¸è¯ãç²¾åãæ¸ æã 686 687 A1 ç级页页头 ãç²¾åçå表ã â ãç级ã ï¼ä¸å¯¼èªåä¸è´ï¼ 688 A2 å¹´å¡é¡µæµè§å¨æ ç¾ãä¼åä¸åº - ä¼åä¸åºãâãç å¦å¹´å¡ãï¼å»éå¤ + ä¸å¯¼èªä¸è´ï¼ 689 B2 ç级页ä¼åçé ãä¼åç²¾åçã â ãä¼åç级ã 690 B3 ç级页å è´¹çé ãå 费精åçã â ãå è´¹ç级ã 691 B4 课ç¨é¡µæé® ãæ¥çç²¾åçã â ãæ¥çç级ã 692 B5b å¹´å¡é¡µåºåæ é¢ ãä¼åç²¾åçï¼Nï¼ãâãä¼åç级ï¼Nï¼ã 693 694 为ä»ä¹å¿ 须走è¿éï¼è¿ 6 夿åå ¨é¨åæ»å¨ graceful 䏻颿å¡ç«¯æ¨¡æ¿éï¼ 695 åå°æ²¡æé ç½®å£ï¼12 个åéå ¥å£éåæ®µæ ¸è¿ï¼è§æä»¤å¡ 003 æ¢æ¥æ¥åï¼ã 696 å¯ä¸å¯æ¹éé = ç«ç¹è®¾ç½® analyticsï¼æ¬æ®µï¼ï¼å¯ä¸é®éåã 697 698 èå´ä¸å®å ¨æ§ï¼åªæ¹ææ¬èç¹ï¼text nodeï¼ï¼ä¸å¨å ç´ ç»æãä¸å¨é¾æ¥ãä¸å¨å¸å±ã 699 ç½åå 4 个精确è¯ç»ï¼ä¸å ·å¤æ³åå¹é è½åã 700 ä¸çº¿åå·²æ ¸å¯¹ï¼166 é¨è¯¾ç¨ + 166 个课ç¨è®¡å + 10 个ç级 + 71 ç¯æç« æ£æ 701 + ç«ç¹è®¾ç½®å ¨å段 + 导èªå ââ 0 å¤å²çªï¼ä¸ä¼è¯¯ä¼¤ä»»ä½çå®å 容ã 702 703 åéï¼å ææ¬æ®µ â xt_site_css.py applyï¼æç´æ¥ xt_site_css.py revert ä¸é®è¿åã -->
704<script id="fsc-text-fix"> 705(function () { 706 if (window.__fscTextFix) { return; } 707 window.__fscTextFix = 1; 708 709 /* ç½ååï¼åªè®¤è¿ 4 个精确è¯ç»ï¼æ¹å®å³æ¢ï¼å¹çï¼éå¤è·ä¸ä¼äºæ¬¡åå½¢ï¼ */ 710 var MAP = { 711 'ç²¾åçå表': 'ç级', 712 'æ¥çç²¾åç': 'æ¥çç级', 713 'å 费精åç': 'å è´¹ç级', 714 'ä¼åç²¾åç': 'ä¼åç级' 715 }; 716 var RE = new RegExp(Object.keys(MAP).join('|'), 'g'); 717 718 function swap(t) { 719 return t.replace(RE, function (m) { return MAP[m]; }); 720 } 721 722 /* åªéåãå«ãç²¾åçãä¸ä¸ªåçææ¬èç¹ãï¼å ¶ä½ä¸å¾è·³è¿ ââ 便å®ä¸ç²¾å */ 723 function walk(root) { 724 if (!root) { return; } 725 var it = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, { 726 acceptNode: function (n) { 727 var p = n.parentNode; 728 if (!p) { return NodeFilter.FILTER_REJECT; } 729 var tag = p.nodeName; 730 if (tag === 'SCRIPT' || tag === 'STYLE' || 731 tag === 'NOSCRIPT' || tag === 'TEXTAREA') { 732 return NodeFilter.FILTER_REJECT; 733 } 734 return (n.nodeValue && n.nodeValue.indexOf('ç²¾åç') >= 0) 735 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT; 736 } 737 }, false); 738 var list = [], n; 739 while ((n = it.nextNode())) { list.push(n); } 740 for (var i = 0; i < list.length; i++) { 741 var v = swap(list[i].nodeValue); 742 if (v !== list[i].nodeValue) { list[i].nodeValue = v; } 743 } 744 } 745 746 /* A2ï¼å¹´å¡é¡µæµè§å¨æ ç¾ãä¿çç«ç¹ç»ä¸çã - ç«å - æ è¯ - Powered By EduSohoãå°¾å·´ï¼ 747 åªæå¼å¤´éå¤çãä¼åä¸åº - ä¼åä¸åºãæ¢æãç å¦å¹´å¡ãã */ 748 function fixTitle() { 749 if (location.pathname.replace(/\/+$/, '') !== '/vip') { return; } 750 var m = document.title.match(/^ä¼åä¸åº(\s*[-ââ]\s*ä¼åä¸åº)?(\s*[-ââ]\s*[\s\S]*)$/); 751 if (m) { document.title = 'ç å¦å¹´å¡' + m[2]; } 752 var og = document.querySelector('meta[property="og:title"]'); 753 if (og) { 754 var c = og.getAttribute('content') || ''; 755 if (c.indexOf('ä¼åä¸åº') >= 0) { 756 og.setAttribute('content', c.replace(/ä¼åä¸åº/g, 'ç å¦å¹´å¡')); 757 } 758 } 759 } 760 761 var timer = null; 762 function run() { 763 clearTimeout(timer); 764 timer = setTimeout(function () { walk(document.body); fixTitle(); }, 60); 765 } 766 767 if (document.readyState === 'loading') { 768 document.addEventListener('DOMContentLoaded', run); 769 } else { run(); } 770 window.addEventListener('load', run); 771 772 /* å åºï¼æ¢å¾/翻页ç弿¥æå ¥çèç¹ä¹è¦çå°ã 773 åªçå¬ childListï¼ä¸çå¬ characterData ââ å¦åä¼è¢«èªå·±çæ¹å¨è§¦åæ»å¾ªç¯ã */ 774 document.addEventListener('DOMContentLoaded', function () { 775 if (!document.body || !window.MutationObserver) { return; } 776 new MutationObserver(run).observe(document.body, { childList: true, subtree: true }); 777 run(); 778 }); 779})(); 780</script>
780 781<!-- è士靿°å¦ · é¦é¡µé¦å±ä¼å fsc-home-firstscreenï¼æä»¤å¡004 · 2026-09-19ï¼ --> 782<style id="fsc-home-firstscreen"> 783/* ============================================================================ 784 è士靿°å¦ · å¦éå¨çº¿ é¦é¡µé¦å±ãå³è½»å·¦éãå¸å±ä¼å 785 æä»¤å¡ 004 · 2026-09-19 · workbuddy äº§åº 786 ---------------------------------------------------------------------------- 787 ä½ç¨åï¼body.homepageï¼ä» é¦é¡µï¼Â· æ¡é¢ç«¯ â¥992px 788 ååï¼ åªè¿½å ã纯 CSSã䏿¹ä¸»é¢ä»£ç ã䏿¹åå°å 容ãå¯ä¸é®è¿å 789 åçè²ï¼æ·±æ£®æç»¿ #0F392B / è«å °è¿ªç»¿ #3A6B55 / æé #B8893D / ç±³ç½ #FBF8F2 790 ---------------------------------------------------------------------------- 791 ã宿µå®ä½å°çä¸ä¸ªçå®é®é¢ã 792 â 峿 æ´ä½åªæ 536px é«ï¼å·¦æ 2313px ââ 峿 åºé¨å¾ä¸çº¦ 1777px æ¯ç©ºç½å¸¦ 793 â¡ ãç å¦å¹´å¡ãå¡çéå¾ç容å¨è¢«æ¨¡æ¿åæ»ä¸º div.col-md-4.col-xs-6ï¼ 794 å¨ 363px 宽çå¡çéåªå© 117px â å¾çè¢«åæ 97Ã127ï¼å³ä¾§ 235px å ¨ç©º 795 ï¼è¿å°±æ¯ãå³è½»ãçæ ¹å ï¼åå¾ 1040Ã584ï¼æ¾å¤§åæ æï¼ 796 ⢠ãä»è´¹è¯¾ç¨ãTop3 åºå·æ¯è£¸é²ç #FF5D42 æ°åï¼è§è§æéå¼± 797 ============================================================================ */ 798 799 800/* ========================================================================== 801 第 1 ç» Â· 两æ çé«ï¼ä¸ºå³æ æ»å¨è·éæä¾é«åº¦åºç¡ï¼ 802 Bootstrap3 æ æ ¼åæ¬é floatï¼å³åé«åº¦åªçäºèªèº«å 容é«ï¼æ æ³åé¿è·ç¦»å¸éã 803 æ¹ä¸º flex çé«ï¼ä» é¦é¡µè¿ä¸ä¸ª .rowï¼ï¼å·¦å³å宽度æåæ æ ¼æ¯ä¾å¤å»ï¼è§è§é¶ååã 804 ========================================================================== */ 805@media (min-width: 992px) { 806 807 body.homepage .es-wrap > .container > .row { 808 display: -webkit-box; 809 display: -ms-flexbox; 810 display: flex; 811 -ms-flex-wrap: nowrap; 812 flex-wrap: nowrap; 813 -webkit-box-align: stretch; 814 -ms-flex-align: stretch; 815 align-items: stretch; 816 } 817 818 /* å·¦åï¼749px å 容宽ï¼å®å ¨ä¸å¨ */ 819 body.homepage .es-wrap > .container > .row > .main.col-md-8 { 820 -webkit-box-flex: 0; 821 -ms-flex: 0 0 66.666667%; 822 flex: 0 0 66.666667%; 823 width: 66.666667%; 824 max-width: 66.666667%; 825 float: none; 826 } 827 828 /* å³åï¼387pxï¼æé«å°ä¸å·¦åçé«ï¼å 鍿¹ä¸ºçºµå flex */ 829 body.homepage .es-wrap > .container > .row > .col-md-4 { 830 -webkit-box-flex: 0; 831 -ms-flex: 0 0 33.333333%; 832 flex: 0 0 33.333333%; 833 width: 33.333333%; 834 max-width: 33.333333%; 835 float: none; 836 display: -webkit-box; 837 display: -ms-flexbox; 838 display: flex; 839 -webkit-box-orient: vertical; 840 -ms-flex-direction: column; 841 flex-direction: column; 842 } 843 844 845 /* ====================================================================== 846 第 2 ç» Â· 峿 两å¡çæ»å¨è·é ââ æ ¹æ²» 1777px 空ç½å¸¦ 847 â ãä»è´¹è¯¾ç¨ãå¸éå¨è§å£é¡¶ 20px å¤ 848 â¡ãç å¦å¹´å¡ãå¸éå¨ 280px å¤ï¼=20 + ä»è´¹å¡ç 230 + 30 é´è·ï¼ä¿æåé´è·ï¼ 849 两è é«åº¦å计 536pxï¼è§å£ 900px å ä¸éå ãä¸é®å 容ã 850 æ´é¡µæå¤§æ»å¨é 1770px < æ¨èµ°éå¼ 1954px â å ¨ç¨å¸éï¼ä¸ä¼è¢«åºé¨æ¨èµ°ã 851 ====================================================================== */ 852 body.homepage .es-wrap > .container > .row > .col-md-4 > .es-box { 853 position: -webkit-sticky; 854 position: sticky; 855 z-index: 5; 856 -ms-flex-negative: 0; 857 flex-shrink: 0; 858 } 859 body.homepage .es-wrap > .container > .row > .col-md-4 > .es-box:nth-child(1) { top: 20px; } 860 body.homepage .es-wrap > .container > .row > .col-md-4 > .es-box:nth-child(2) { top: 280px; } 861 862 863 /* ====================================================================== 864 第 3 ç» Â·ãæ ¸å¿ä¿®å¤ãç å¦å¹´å¡å¡ç 865 æ¨¡æ¿æå¾ç容å¨åæ»æ col-md-4.col-xs-6ï¼33%ï¼ï¼å¨å¡çå åªå© 117pxã 866 è¦ç为 100% 宽 â å¾ç 97Ã127 æ¾å¤§å° 332Ã187ï¼åå¾ 1040Ã584ï¼çæ¯æ æï¼ã 867 å¡çé«åº¦éä¹ 246px â 约 310pxï¼ä¸å·¦ä¾§è½®æ 365px å½¢æåçé éã 868 ====================================================================== */ 869 body.homepage .the-vip-content li.row > [class*="col-"] { 870 width: 100%; 871 max-width: 100%; 872 float: none; 873 -ms-flex-preferred-size: 100%; 874 flex-basis: 100%; 875 } 876 body.homepage .the-vip-content img.vip-card { 877 width: 100%; 878 height: auto; 879 border-radius: 8px; 880 display: block; 881 } 882 883 /* å¡çé«åº¦ä¸å é¨èå¥ï¼ä¸æä¼¸å¾çï¼åªè¡¥è¶³çç½ï¼ */ 884 body.homepage .row > .col-md-4 > .the-vip-content { 885 min-height: 310px; 886 display: -webkit-box; 887 display: -ms-flexbox; 888 display: flex; 889 -webkit-box-orient: vertical; 890 -ms-flex-direction: column; 891 flex-direction: column; 892 } 893 body.homepage .row > .col-md-4 > .the-vip-content > ul { 894 -webkit-box-flex: 1; 895 -ms-flex: 1 1 auto; 896 flex: 1 1 auto; 897 } 898 body.homepage .the-vip-content li.row { 899 margin-bottom: 30px; 900 } 901 902 903 /* ====================================================================== 904 第 4 ç» Â· ä»è´¹è¯¾ç¨ Top3ï¼åºå·è²åï¼çº¯ CSSï¼æ å¾çãæ HTML æ¹å¨ï¼ 905 å为 40Ã40 ç float:left æ°åï¼#FF5D42ï¼24pxï¼ãå åè§è²å + ç½åï¼ 906 第 1 åç¨æéã第 2 åè«å °è¿ªç»¿ã第 3 åæ·±æ£®æç»¿ï¼å½¢ææ¢¯åº¦æéã 907 è²åæ¶å° 36pxï¼é¿å ä¸ä¸æ¹ãXX人æ¥åãè´´å¾å¤ªç´§ï¼å 40px ä¼å 满æ´è¡é«åº¦ï¼ã 908 ====================================================================== */
909 body.homepage #kechen-list .num-warn { 910 width: 36px; 911 height: 36px; 912 line-height: 36px; 913 margin: 3px 6px 3px 0; 914 text-align: center; 915 border-radius: 8px; 916 color: #fff !important; 917 font-size: 19px; 918 font-weight: 700; 919 -webkit-box-sizing: border-box; 920 box-sizing: border-box; 921 } 922 body.homepage #kechen-list .course-row-list li:nth-child(1) .num-warn { background: #B8893D; } 923 body.homepage #kechen-list .course-row-list li:nth-child(2) .num-warn { background: #3A6B55; } 924 body.homepage #kechen-list .course-row-list li:nth-child(3) .num-warn { background: #0F392B; } 925 926 /* 课ç¨åå ç²ä¸æ¡£ï¼æ¥å人æ°éå°æ¬¡è¦å±çº§ */ 927 body.homepage #kechen-list h3 { 928 font-weight: 600; 929 color: #2B2B2B; 930 } 931} 932 933 934/* ========================================================================== 935 第 5 ç» Â· å å¾®ä¿¡æµ®å¨æ¡ 936 宿µï¼å®æ¬å°± fixed è´´å±å¹å³ç¼ãè§å£åç´å± ä¸ï¼ä»æªè¢«ç©ºç½åºé®æ¡ã 937 ä½å®½å±ï¼â¥1320pxï¼ä¸é¡µé¢å 容åºå± ä¸ã两侧çç½å¾å®½ï¼æµ®å¨æ¡å¤æ¬å±å¹è¾¹ç¼ã 938 â 宽屿¶æå®å¯¹é½å°å 容åºå³ä¾§ 24px å¤ï¼ä»å¨å 容åºä¹å¤ï¼ä¸é®æ¡ä»»ä½å 容ï¼ï¼ 939 å¹¶å æå½±è®©å®å¨ç±³ç½åºä¸æ´éç®ãçªå±ç»´æåæ ·ã 940 注ï¼ç¦»å¼å±å¹è¾¹ç¼åï¼å³è¾¹ç´è§ä¼æ¾å¾åè¢«åæ â æ¹ä¸ºåè§çåè§ã 941 ========================================================================== */ 942@media (min-width: 1320px) { 943 body.homepage .float-consult { 944 right: auto; 945 left: calc(50% + 580px + 24px); 946 border-radius: 10px; 947 -webkit-filter: drop-shadow(0 6px 16px rgba(15, 57, 43, .22)); 948 filter: drop-shadow(0 6px 16px rgba(15, 57, 43, .22)); 949 } 950} 951 952@media (min-width: 992px) { 953 body.homepage .float-consult .btn { 954 -webkit-transition: -webkit-transform .18s ease; 955 transition: transform .18s ease; 956 } 957 body.homepage .float-consult .btn:hover { 958 -webkit-transform: translateX(-3px); 959 transform: translateX(-3px); 960 } 961} 962 963/* ============================================================================ 964 æªè§¦ç¢°æ¸ åï¼ææä¸ºä¹ï¼é¿å è¯¯ä¼¤ï¼ 965 · å·¦åè½®æ .es-posterï¼ä¸å¨æ²¡å¨ 966 · 页颿»å®½ / .container 宽度ï¼ä¸å¨æ²¡å¨ 967 · ç§»å¨ç«¯ <992pxï¼å ¨é¨è§åå¨ @media å ï¼å¸å±ä¸åæ¥å®å ¨ä¸è´ 968 · å¹´å¡ä»·æ ¼ãæçãæé®ææ¡ï¼ä¸ä¸ªå没æ¹ï¼å±åå°å 容ï¼CSS æ æä¹ä¸è¯¥æ¹ï¼ 969 ============================================================================ */ 970 971</style> 972<!-- è士靿°å¦ · æç« å表页åå°æç¤ºæ¡æ¸ é¤ fsc-article-adminbar-hideï¼æä»¤å¡005 · 2026-09-19ï¼ --> 973<style id="fsc-article-adminbar-hide"> 974/* ============================================================================ 975 è士靿°å¦ · æç« å表页ãåå°é ç½®æç¤ºæ¡ãæ¸ é¤ 976 æä»¤å¡ 005 · 2026-09-19 · 纯 CSSï¼å¯ä¸é®è¿å 977 ---------------------------------------------------------------------------- 978 ç®æ å ç´ ï¼/article é¡¶é¨ï¼ï¼ 979 <div class="alert alert-warning"> 980 头æ¡å¤§å¾è½®æåè½éå å¨åå°èµè®¯ç®¡ç页é¢è®¾ç½®ç¼©ç¥å¾ä»¥åæ·»å 头æ¡å±æ§ 981 <a class="mls alert-link" href="/admin/v2/article">åå¾è®¾ç½®</a> 982 </div> 983 984 宿µç»è®ºï¼2026-09-19ï¼æ¸¸å®¢æ vs 管çåæ å份åå§ HTML æ¯å¯¹ï¼ï¼ 985 · 游客æ /article ââ 0 å¤ãåå°å®¶é¿/è®¿å®¢æ¬æ¥å°±çä¸å°è¿æ¡æç¤º 986 · 管çåç»å½æ /article ââ 1 å¤ãEduSoho æ¨¡æ¿æãå½åç»å½èº«ä»½ãè¾åº 987 · åºç°èå´ï¼ä» /article é¦é¡µï¼å类页 / é¦é¡µ / 课ç¨å表 / ççº§å¹¿åº / å¹´å¡é¡µ å为 0 988 · æ¡é¢ 1140Ã54 @y=253ï¼ææºç«¯ 370Ã76 ââ 端å°ç«¯é½è¦å¤ç 989 · å ¨é¡µåªæè¿ 1 个 .alertï¼æ²¡ææå/é误æç¤ºæ¡ï¼ä¸åå¨è¯¯ä¼¤å¯¹è±¡ 990 991 éæ©å¨åå¼çç±ï¼ä¸çº§æ¶å£ï¼è¶é åè¶ä¸¥ï¼ï¼ 992 body.artcile-list-page â â 页é¢çº§æ¶å£ï¼åªå¨è¿ä¸ä¸ªé¡µé¢çæ 993 #content-container > â â¡ å¿ é¡»æ¯å 容容å¨çãç´æ¥å级ã 994 .es-tabs.article-list-header + â â¢ å¿ é¡»ç´§è·å¨ãæç« å表页ç¾ãä¹å 995 .alert.alert-warning â ⣠ä¸å¿ é¡»æ¯è¦ååæç¤ºæ¡ 996 ï¼æ³¨ï¼artcile-list-page æ¯ graceful 主é¢éæ¬èº«æ¼éçç±»åï¼ç §æåæï¼ä¸è¦"ä¿®æ£"ï¼ 997 å类页ç body ç±»åæ¯ artcile-cat-pageï¼ä¸æ¬è§å天ç¶é离ã 998 999 ä¸ä¼è¯¯ä¼¤çåå ï¼EduSoho ç flash æå/é误æç¤ºä¸ä¼æ¸²æå
999¨ 1000 ã页ç¾ä¹åãå 容容å¨ç´æ¥å级ãè¿ä¸ªä½ç½®ä¸ã已宿µè¯¥éæ©å¨å½ä¸æ° = 1ï¼ä¸å½ä¸çå°±æ¯æ¬æ¡ã 1001 ========================================================================== */ 1002 1003body.artcile-list-page #content-container > .es-tabs.article-list-header + .alert.alert-warning { 1004 display: none !important; 1005} 1006 1007</style> 1008 1009<!-- è士靿°å¦ · æµ®å¨å¨è¯¢æ¡èç³»æ¹å¼æ´æ°ï¼2026-09-19 · v2å ¨å±æ¿æ¢+å»¶è¿200msï¼ -->
1010<script> 1011(function(){ 1012 function updateContact(){ 1013 var phoneBox=document.getElementById('consult-phone-content'); 1014 if(phoneBox){phoneBox.innerHTML=phoneBox.innerHTML.replace(/13167306058/g,'13601275360');} 1015 var emailBox=document.getElementById('consult-email-content'); 1016 if(emailBox){emailBox.innerHTML=emailBox.innerHTML.replace(/[email protected]/g,'[email protected]');} 1017 } 1018 if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',function(){setTimeout(updateContact,200);});} 1019 else{setTimeout(updateContact,200);} 1020})(); 1021</script>
1021 1022<!-- è士靿°å¦ · é¦é¡µæ¨è课ç¨å¡çHTMLæ ç¾ç¢çæ¸ ç fsc-course-card-cleanï¼æä»¤å¡006 · 2026-09-19ï¼ --> 1023<style id="fsc-course-card-clean"> 1024/* ====================================================================== 1025 å¦éå¨çº¿ · é¦é¡µãæ¨è课ç¨ãå¡ç hover é®ç½©éç HTML æ ç¾ç¢çæ¸ ç 1026 æä»¤å¡ 006 · 2026-09-19 · è士靿°å¦ 1027 ---------------------------------------------------------------------- 1028 ç°è±¡ï¼é¼ æ ç§»å°é¦é¡µãæ¨è课ç¨ãå¡ç䏿¶ï¼æ·±ç»¿è²é®ç½©éåºç°ä¸¤è¡ä¹±ç ï¼ 1029 <p><span style="color:#E53333;"> 1030 <st... 1031 çèµ·æ¥åç½ç«åº bugã 1032 ====================================================================== 1033 1034 ãæ ¹å ãè¿ä¸æ¯è¯¾ç¨æ°æ®è ââ æ¯ä¸»é¢æ¨¡æ¿éåæ»ç䏿®µææ¬ 1035 ---------------------------------------------------------------------- 1036 宿µè¯æ®é¾ï¼ 1037 1038 â é¦é¡µ 6 夿åãå®å ¨ç¸åãï¼é½æ¯ 38 åç¬¦ï¼ 1039 <p><span style="color:#E53333;"><st... 1040 â¡ è¿ 6 é¨è¯¾åå°çåæ®µãåä¸ç¸åãï¼ 1041 title 6 个å¼å ¨ä¸å 1042 subtitle 6 个å¼å ¨ä¸åï¼19/19/17/24/25/14 åï¼ 1043 summary 6 个å¼å ¨ä¸åï¼1297/1335/1008/1633/1687/1024 åï¼ 1044 â¢ è¿ 6 é¨è¯¾çåå°é¡µé¢éæ `E53333` â 0 次 1045 ⣠课ç¨ç®¡çå ¨é¨å页ï¼base / courses / question / testpaper / filesï¼ 1046 æ `E53333` â 0 次 1047 â¤ å ¨ç«è£ 修页 / ç»ä»¶é¡µ / ç«ç¹è®¾ç½®é¡µæ `E53333` â 0 次 1048 1049 â ç»è®ºï¼è¿æ®µæåæ¢ä¸æ¯ã课ç¨ç®ä»ãä¹ä¸æ¯ã课ç¨å¯æ é¢ãï¼ 1050 èæ¯ä¸»é¢æ¨¡æ¿éåæ»ç䏿®µã已转ä¹ç HTML æºç ææ¬ãï¼ 1051 è¢«æ¨¡æ¿æåºå®é¿åº¦ï¼35 å符 + çç¥å·ï¼æªæåå½çº¯ææ¬è¾åºã 1052 åå°æ²¡æä»»ä½å段å¯ä»¥æ¹å®ï¼æ¨¡æ¿æä»¶ä¹ä¸å¨æ¬ç«å¯ç¼è¾èå´å ã 1053 1054 ã为ä»ä¹æ¯è½¬ä¹å½¢æã 1055 HTML éåçæ¯ `<p><span style="color:#E53333;"><st...` 1056 ââ å°æ¬å·è¢«è½¬ä¹ãä½åå¼å·æ²¡æã 1057 è¥æ¯æ¨¡æ¿å¼æèªå¨è½¬ä¹ï¼åå¼å·ä¼ä¸èµ·åæ `"`ã 1058 æä»¥è¿æ®µå¼æ¯ãåè¿æ¥æ¶å°±å¸¦ç < å®ä½ãçï¼è¢«åæ ·è¾åºã 1059 1060 ====================================================================== 1061 ãåæ³ãåªéèè¿ä¸ä¸ªå ç´ ï¼ä¸å¨æ¨¡æ¿ãä¸å¨æ°æ®ãä¸å¨å ¶ä»é¡µé¢ 1062 ---------------------------------------------------------------------- 1063 æ¶å£åå±ï¼ç¼ºä¸ä¸å¯ï¼ï¼ 1064 1065 body.homepage â åªå¨é¦é¡µçæ 1066 #content-container â åªå¨æ£æåº 1067 .es-box.es-course â åªå¨ãæ¨è课ç¨ãåºå 1068 li.es-course-list â åªå¨è¯¥åºåç课ç¨å¡ç 1069 .mask > a > p â åªå¨è¯¥å¡ç hover é®ç½©éçé£ä¸è¡ 1070 1071 宿µï¼`li.es-course-list` å¨é¦é¡µæ£å¥½å½ä¸ 6 个ï¼å°±æ¯è¿ 6 å¼ å¡çï¼ï¼ 1072 `.mask > a > p` æ£å¥½å½ä¸ 6 å¤ï¼å°±æ¯è¿ 6 è¡ç¢å±ï¼ãæ 误伤对象ã 1073 1074 â ï¸ æ³¨æå«å裸 `.es-box.es-course > h2` ä¹ç±» ââ ãå¦éç级ãåºå 1075 ä¸ãæ¨è课ç¨ãå ±ç¨ `.es-box.es-course` è¿ä¸ªç±»åï¼å®½æ³éæ©å¨ä¼ä¸²å³ã 1076 æ¬æ®µç¨ `li.es-course-list` æ¶å£ï¼å·²å®æµä¸å½ä¸ç级å¡çã 1077 1078 ====================================================================== 1079 ãå¯è§æ§è¯´æãè¿æ¡å¾éè¦ï¼å³å®äºé®é¢ççå®ä¸¥éç¨åº¦ 1080 ---------------------------------------------------------------------- 1081 `.mask` çæ ·å¼æ¯ position:absolute + opacity:0ï¼åªæé¼ æ æ¬åå°å¡çä¸ 1082 æ opacity:1 æ¾ç¤ºã 1083 1084 · æ¡é¢ç«¯ï¼é¼ æ ç§»ä¸å»æçå¾å°ï¼å·²å®æç¡®è®¤ï¼ç¡®å®é¾çï¼ 1085 · ææº / å¹³æ¿ï¼æ²¡æ hover ç¶æï¼æ°¸è¿çä¸å° 1086 1087 æä»¥å®æ¯ãé¼ æ æ¬åæé²åºçççµãï¼ä¸æ¯é¡µé¢ä¸æå¼å°±æç硬伤ã 1088 1089 ====================================================================== 1090 ãå½±åé¢ãå·²å ¨ç«æ«æ 11 个页é¢ï¼åªæé¦é¡µè¿ 6 å¤ 1091 ---------------------------------------------------------------------- 1092 é¦é¡µ 6 å¤ â <-- å¯ä¸ 1093 课ç¨å表 /course/explore 0 å¤ â 1094 å¹´å¡é¡µ /vip 0 å¤ â 1095 ççº§å¹¿åº /classroom/explore 0 å¤ â 1096 æç´¢é¡µ 0 å¤ â 1097 6 é¨è¯¾è¯¦æ 页ï¼å 1 ä¸ªï¼ 0 å¤ â 1098 ====================================================================== */ 1099 1100body.homepage #content-container .es-box.es-course li.es-course-list .mask > a > p { 1101 display: none !important; 1102} 1103 1104/* ---------------------------------------------------------------------- 1105 éèåé®ç½©å 容åç´å± ä¸ï¼ 1106 忥é£è¡ç¢å±é« 95pxï¼å æé®ç½©è¿ä¸åé«åº¦ã廿åè¥ä¸å± ä¸ï¼ 1107 头å+åç§°+æ é¢ä¼å ¨é¨æ¤å¨é®ç½©é¡¶é¨ï¼ä¸æ¹çä¸å¤§å空ã 1108 宿µé®ç½©é« 227pxãå å± <a> é« 187pxï¼æ¹ flex å± ä¸å屿¬¡æ´ç¨³ã 1109 ---------------------------------------------------------------------- */ 1110body.homepage #content-container .es-box.es-course li.es-course-list .mask > a { 1111 display: -webkit-flex; 1112 display: flex; 1113 -webkit-flex-direction: column; 1114 flex-direction: column;
1115 -webkit-justify-content: center; 1116 justify-content: center; 1117 height: 100%; 1118 -webkit-box-sizing: border-box; 1119 box-sizing: border-box; 1120} 1121 1122</style> 1123</span></p></a></p></span> 1124<!-- è士靿°å¦ · å ¨ç« SEO è¡¥å ¨ï¼é¡µé¢ä¸»æ é¢ H1ï¼æä»¤å¡ P2-1 · 2026-09-19ï¼ 1125 1126 èæ¯ï¼å ¨ç«æ ¸å¿é¡µé¢ <h1> æ°é为 0 ââ æç´¢å¼ææ¿ä¸å°é¡µé¢ä¸»æ é¢ï¼ 1127 å±å¹é 读å¨ä¹æ²¡ææ é¢éç¹æ¥å®ä½æ£æã 1128 åæ³ï¼æé¡µé¢ç±»åï¼å¨ææå ¥ 1 个ãè§è§éèãç <h1>ï¼sr-onlyï¼ï¼ 1129 ä½ç½®å¨ body é¦ä½ã尺寸 1x1ãç»å¯¹å®ä½ä¸å å¸å±ï¼è§è§ä¸å®å ¨çä¸è§ã 1130 约æï¼â æ¯é¡µæ°å¥½ 1 个ï¼èæ¬å æ£æµå·²æ H1ï¼æåè·³è¿ï¼ 1131 ⡠课ç¨/åå页æ é¢ä»é¡µé¢ DOM å®é 读åï¼è¯»ä¸å°ä¸æå ¥ï¼å®ç¼ºæ¯æ»¥ï¼ 1132 ⢠æç« 详æ 页模æ¿èªå¸¦ H1 â èªå¨è·³è¿ï¼ä¸é夿·»å 1133 ⣠åªèµ°æ³¨å ¥ééï¼ä¸æ¹ä¸»é¢æ¨¡æ¿ 1134 1135 â ï¸ å·²ç¥å±éï¼æ¬æ®µæ¯ JSï¼å¯¹ã䏿§è¡ JS çä¼ ç»ç¬è«ãä¸å¯è§ï¼ 1136 对 Google/Bingï¼ä¼æ§è¡ JSï¼ãå±å¹é 读å¨å®å ¨ææã
1137 åéï¼å 餿¬æ®µï¼id=fsc-seo-h1ï¼å³å¯ï¼é¡µé¢ç«å³æ¢å¤åæ ·ã 1138-->
1139<script id="fsc-seo-h1"> 1140(function () { 1141 if (window.__fscSeoH1) return; 1142 window.__fscSeoH1 = 1; 1143 1144 function pickTitle() { 1145 var p = location.pathname; 1146 var b = (document.body && document.body.className) || ''; 1147 if (p === '/' || /\bhomepage\b/.test(b)) return 'è士靿°å¦ · å¦éå¨çº¿'; 1148 if (p === '/course/explore') return '课ç¨å表'; 1149 if (/^\/(?:course|goods\/show)\/\d+/.test(p)) { 1150 var el = document.querySelector('.detail-right__title'); 1151 if (el) { 1152 var s = (el.textContent || '').replace(/\s+/g, ' ').trim(); 1153 if (s) return s; 1154 } 1155 var dt = (document.title || '').split(' - ')[0].replace(/\s+/g, ' ').trim(); 1156 return dt || null; 1157 } 1158 if (p === '/vip' || p === '/vip/') return 'ç å¦å¹´å¡'; 1159 if (p === '/article' || p === '/article/') return '黿¿æ¥'; 1160 if (p === '/classroom/explore') return 'ç级'; 1161 return null; 1162 } 1163 1164 function insert(t) { 1165 var st = document.createElement('style'); 1166 st.id = 'fsc-seo-h1-style'; 1167 st.textContent = '.fsc-seo-h1{position:absolute!important;width:1px;height:1px;' 1168 + 'padding:0!important;margin:-1px!important;overflow:hidden!important;' 1169 + 'clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}'; 1170 document.head.appendChild(st); 1171 var h = document.createElement('h1'); 1172 h.className = 'fsc-seo-h1'; 1173 h.id = 'fscSeoH1'; 1174 h.textContent = t; 1175 document.body.insertBefore(h, document.body.firstChild); 1176 } 1177 1178 var tries = 20; 1179 function attempt() { 1180 if (document.querySelector('h1')) return; 1181 var t = pickTitle(); 1182 if (t) { insert(t); return; } 1183 if (tries-- > 0) setTimeout(attempt, 300); 1184 } 1185 1186 if (document.readyState === 'loading') { 1187 document.addEventListener('DOMContentLoaded', attempt); 1188 } else { 1189 attempt(); 1190 } 1191})(); 1192</script>
1192 1193<!-- è士靿°å¦ · å ¨ç« SEO è¡¥å ¨ï¼å¾ç alt 屿§ï¼æä»¤å¡ P2-2 · 2026-09-19ï¼ 1194 1195 èæ¯ï¼å ¨ç«å¯ä¸ãå®å ¨æ alt 屿§ãçå¾çåªæä¸ç±» ââ 1196 â ç«ç¹ Logoï¼é¡µå¤´ + 页èï¼æ¯é¡µå 1 ä¸ªï¼ 1197 ⡠页è微信äºç»´ç ï¼æ«ææ·»å 好åï¼ 1198 ⢠详æ 页ãå享ãäºç»´ç ï¼JS 卿çæï¼ 1199 课ç¨å°é¢ / è½®æå¾ / æç« 缩ç¥å¾ç alt æ©å·²é½å ¨ï¼è£ 饰å¾ä¹å·²ç¨ alt="" æ£ç¡®å¤çã 1200 1201 åæ³ï¼åªç»ãå®å ¨æ²¡æ alt 屿§ãçå¾çè¡¥ altï¼å·²æ altï¼å«ç©º alt=""ï¼ä¸å¾ä¸å¨ã 1202 ååï¼å®ç¼ºæ¯æ»¥ ââ åªå¤çè½é«ç½®ä¿¡è¯å«çä¸ç±»ï¼å ¶ä½ä¿æåæ ·ï¼ç»ä¸ç¼é æè¿°ã 1203 空 alt="" æ¯åæ³ä¸æ£ç¡®çï¼è£ 饰å¾ï¼ï¼æä»¥ä¸ä¸»å¨æ·»å ã 1204 1205 è¯å«å¤æ®ï¼2026-09-19 宿µç¡®å®ï¼åå·²æ¶ç´§é¿å 误伤ï¼ï¼ 1206 · Logo ï¼src å« /files/system/ ä¸ä½äº .navbar-brand-logo / #footer-fir å 1207 ï¼â ï¸ ä¸è½åªç¨ src åç¼ ââ è½®æå¾ä¹å¨ /files/system/ ä¸ï¼ 1208 · 页èäºç»´ç ï¼img.qrcode 1209 · å享äºç»´ç ï¼src å« /qrcode 1210 1211 åéï¼å 餿¬æ®µï¼id=fsc-seo-altï¼å³å¯ï¼å¾çç«å³æ¢å¤åæ ·ã 1212-->
1213<script id="fsc-seo-alt"> 1214(function () { 1215 if (window.__fscSeoAlt) return; 1216 window.__fscSeoAlt = 1; 1217 1218 function fix() { 1219 var imgs = document.querySelectorAll('img:not([alt])'); 1220 var n = 0; 1221 for (var i = 0; i < imgs.length; i++) { 1222 var im = imgs[i]; 1223 var src = im.getAttribute('src') || ''; 1224 var cls = (im.className || '').toString(); 1225 var alt = null; 1226 var near = im.closest('.navbar-brand-logo, .navbar-brand, #footer-fir, .es-footer'); 1227 if (src.indexOf('/files/system/') >= 0 && near) { 1228 alt = 'è士靿°å¦'; 1229 } else if (cls.indexOf('qrcode') >= 0) { 1230 alt = 'æ«ç æ·»å è士靿°å¦ä¸ºå¾®ä¿¡å¥½å'; 1231 } else if (src.indexOf('/qrcode') >= 0) { 1232 alt = 'æ«ç ç¨ææºæå¼æ¬é¡µé¢'; 1233 } 1234 if (alt !== null) { 1235 im.setAttribute('alt', alt); 1236 n++; 1237 } 1238 } 1239 return n; 1240 } 1241 1242 function attempt() { fix(); } 1243 if (document.readyState === 'loading') { 1244 document.addEventListener('DOMContentLoaded', attempt); 1245 } else { 1246 attempt(); 1247 } 1248 setTimeout(fix, 1200); 1249 setTimeout(fix, 3000); 1250})(); 1251</script>
1251 1252<!-- FSC:P2-3:BEGIN --> 1253<!-- è士靿°å¦ · æç« æ¥æè¡¥å ¨å¹´ä»½ï¼æä»¤å¡ P2-3 · 2026-09-19ï¼ 1254 1255 é®é¢ï¼æç« å表页 / å类页 / 详æ é¡µçæ¥æå¾½ç« åªæ¾ç¤ºãæ¥ + æãï¼å¦ 18 / 09æï¼ï¼ 1256 䏿¾ç¤ºå¹´ä»½ã跨年åå®¶é¿æ æ³å¤ææç« å±äºåªä¸å¹´ï¼æç´¢å¼æä¹æ¿ä¸å°å®æ´å叿¥æã 1257 åæ³ï¼å¨æ¥æååï¼.dateï¼å ãæä»½ä¸æ¹è¡¥ä¸è¡å°å年份ï¼å¦ã2026å¹´ãï¼ã 1258 å¹´ä»½æ¥æºï¼æ¬ç«å®æ¹ API `GET /api/articles` ç publishedTime åæ®µ ââ ç宿°æ®ï¼ 1259 ä¸ä»é¡µé¢æ¨æãä¸ç¡¬ç¼ç ãå¿«ç §æ¥æï¼2026-09-19ï¼71 ç¯ï¼å ¨é¨ä¸º 2026 å¹´ï¼ã 1260 1261 ð èªæ´æ°æºå¶ï¼æ éæ¯å¹´ç»´æ¤ï¼ï¼ 1262 â ä¼å ç¨å ç½®æ å°è¡¨ï¼å¿«ç §ï¼ââ å½åæç« 100% å½ä¸ï¼é¶ç½ç»è¯·æ±ãé¶å»¶è¿ï¼ 1263 â¡ è¥é¡µé¢ä¸åºç°æ å°è¡¨é没æçæç« ï¼ä¾å¦å°æ¥æ°å¢ç 2027 å¹´æç« ï¼ï¼ 1264 èªå¨è¯·æ±åæºå®æ¹ API `/api/articles?limit=500` è¡¥é½ï¼ 1265 ç»æåå ¥ sessionStorageï¼å䏿µè§ä¼è¯å åªè¯·æ±ä¸æ¬¡ï¼ï¼ 1266 ⢠æ¥å£ä¸å¯ç¨æ¶éé»è·³è¿ï¼ç»ä¸ç年份 ââ æ¾ä¸å°å¹´ä»½çæç« ä¿æåæ ·ã 1267 1268 å½±åèå´ï¼ä» å¨æç« é¡µçæï¼body.artcile-list-page / artcile-cat-page / article-detail-pageï¼ã 1269 åéï¼å 餿¬æ®µï¼id=fsc-article-date-yearï¼å³å¯ï¼é¡µé¢ç«å³æ¢å¤åæ ·ã 1270--> 1271<style id="fsc-article-date-year-css"> 1272/* æ¥æå¾½ç« å为åºå® 45x45 çç°åï¼å å«ãæ¥ / æã两è¡ã 1273 æ¬æ®µï¼æåæ¾å° 50x50ï¼è®©ç¬¬ä¸è¡ãå¹´ãè£ å¾ä¸ï¼å¹¶ç»ä¸ä¸è¡è¡é«ã 1274 1275 â ï¸ è¯¦æ 页è¿è¦åæä¸ä¸ªåå²éçï¼æ©åçæ£ææç段ï¼fsc-typographyï¼éæä¸æ¡ 1276 `.article-content p / li / div` çè§åï¼å¼ºè®¾ font-size:16pxãline-height:1.8ã 1277 margin:0 0 1.1emï¼å为 !importantï¼ãè详æ é¡µçæ¥æå¾½ç« æ£å¥½è½å¨ .article-content 1278 å â å¾½ç« éç div 被æ¾å¤§æ 16px / è¡é« 28.8px / ä¸è¾¹è· 17.6pxï¼ 1279 宿µå¾½ç« å å®¹æº¢åº 35pxï¼ãæã被æ¤åºååï¼åå²éçè§è§ç¼ºé·ï¼ã 1280 æ¬æ®µç¨æ´é«ç¹å¼æ§ + !important æé£ä¸é¡¹åååä½ï¼é¡ºå¸¦ä¿®å¤è¯¥ç¼ºé·ã 1281 â ï¸ ä¸é¢ææå£°æå¿ 须带 !importantï¼å¦åä¼è¢«ä¸è¿° !important è§ååè¿ã 1282 1283 宿µï¼2026-09-19ï¼Playwright çæµè§å¨ï¼ï¼ 1284 å表/å类页ï¼å¾½ç« 45x45 â 50x50ï¼.article-metas é« 54px ä¸åï¼é¡µé¢é«åº¦ Î0 1285 详æ 页 ï¼å¾½ç« 45x45(å å®¹æº¢åº 35px) â 50x50(æº¢åº 0)ï¼é¡µé¢é«åº¦ Î0 1286 ä¸é¡µ 0 溢åºã0 è£åªã0 JS æ¥éãæ¨ªåæ æº¢åº */ 1287body.artcile-list-page .article-metas .date, 1288body.artcile-cat-page .article-metas .date, 1289body.article-detail-page .article-metas .date { 1290 width: 50px !important; 1291 height: 50px !important; 1292 min-height: 50px !important; 1293 padding: 0 0 2px !important; 1294 margin: 0 !important; 1295 box-sizing: border-box; 1296 overflow: hidden; 1297 line-height: 1.1 !important; 1298} 1299body.artcile-list-page .article-metas .date .day, 1300body.artcile-cat-page .article-metas .date .day, 1301body.article-detail-page .article-metas .date .day { 1302 font-size: 15px !important; 1303 line-height: 1.1 !important; 1304 padding: 3px 0 0 !important; 1305 margin: 0 !important; 1306} 1307body.artcile-list-page .article-metas .date .month, 1308body.artcile-cat-page .article-metas .date .month, 1309body.article-detail-page .article-metas .date .month { 1310 font-size: 12px !important; 1311 line-height: 1.1 !important; 1312 padding: 0 !important; 1313 margin: 0 !important; 1314} 1315body.artcile-list-page .article-metas .date .fsc-art-year, 1316body.artcile-cat-page .article-metas .date .fsc-art-year, 1317body.article-detail-page .article-metas .date .fsc-art-year { 1318 font-size: 10px !important; 1319 line-height: 1.15 !important; 1320 font-weight: 400 !important; 1321 color: #999 !important; 1322 letter-spacing: .2px !important; 1323 white-space: nowrap !important; 1324 padding: 0 !important; 1325 margin: 0 !important; 1326} 1327</style>
1328<script id="fsc-article-date-year"> 1329(function () { 1330 if (window.__fscArtYear) return; 1331 window.__fscArtYear = 1; 1332 1333 /* ââ å 置年份æ å°ï¼æç« ID -> åå¸å¹´ä»½ ââ 1334 æ°æ®æ¥æºï¼GET /api/articlesï¼EduSoho 宿¹ APIï¼ç publishedTime 1335 å¿«ç §æ¥æï¼2026-09-19 å ± 71 ç¯ */ 1336 var YG = { 1337 "2026": "234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 258" 1338 + " 259 260 261 262 263 264 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283" 1339 + " 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306" 1340 }; 1341 1342 var YM = {}; 1343 for (var y in YG) { 1344 var ids = String(YG[y]).split(/\s+/); 1345 for (var i = 0; i < ids.length; i++) { if (ids[i]) YM[ids[i]] = y; } 1346 } 1347 1348 var API = '/api/articles?limit=500'; 1349 var CACHE = 'fscArtYearV1'; 1350 var TTL = 6 * 3600 * 1000; /* ä¼è¯ç¼å 6 å°æ¶ */ 1351 1352 /* æ¾æä¸ªæ¥æå ç´ å¯¹åºçæç« IDï¼å表/å类页走 article-item éç龿¥ï¼è¯¦æ 页走 URL 1353 注æï¼article-item é第ä¸ä¸ª /article/ 龿¥å¾å¾æ¯åç±»é¾æ¥ï¼/article/category/xxxï¼ï¼ 1354 æä»¥å¿ é¡»é忿龿¥ãåªè®¤ /article/ åè·çº¯æ°åç */ 1355 function idOf(el) { 1356 var box = el.closest ? el.closest('article.article-item') : null; 1357 if (box) { 1358 var as = box.querySelectorAll('a[href*="/article/"]'); 1359 for (var k = 0; k < as.length; k++) { 1360 var m = (as[k].getAttribute('href') || '').match(/\/article\/(\d+)(?:[\/?#]|$)/); 1361 if (m) return m[1]; 1362 } 1363 } 1364 var m2 = (location.pathname || '').match(/^\/article\/(\d+)(?:[\/?#]|$)/); 1365 return m2 ? m2[1] : null; 1366 } 1367 1368 function paint(el, y) {
1369 if (el.querySelector('.fsc-art-year')) return; 1370 var d = document.createElement('div'); 1371 d.className = 'fsc-art-year'; 1372 d.textContent = y + 'å¹´'; 1373 el.appendChild(d); 1374 } 1375 1376 /* éåé¡µé¢æææ¥æå¾½ç« ï¼è¿åãæ å°è¡¨éè¿æ²¡æçãæç« ID */ 1377 function pass() { 1378 var els = document.querySelectorAll('.article-metas .date'); 1379 var need = []; 1380 for (var i = 0; i < els.length; i++) { 1381 var el = els[i]; 1382 if (el.querySelector('.fsc-art-year')) continue; 1383 var id = idOf(el); 1384 if (!id) continue; 1385 var y = YM[id]; 1386 if (y) paint(el, y); else need.push(id); 1387 } 1388 return need; 1389 } 1390 1391 function merge(o) { 1392 for (var k in o) { if (o[k] && !YM[k]) YM[k] = o[k]; } 1393 } 1394 1395 function cacheRead() { 1396 try { return JSON.parse(sessionStorage.getItem(CACHE) || 'null'); } catch (e) { return null; } 1397 } 1398 function cacheWrite(m) { 1399 try { sessionStorage.setItem(CACHE, JSON.stringify({ t: Date.now(), m: m })); } catch (e) {} 1400 } 1401 1402 function refresh() { 1403 if (window.__fscArtYearBusy) return; 1404 window.__fscArtYearBusy = 1; 1405 try { 1406 fetch(API, { credentials: 'same-origin', 1407 headers: { 'Accept': 'application/vnd.edusoho.v2+json' } }) 1408 .then(function (r) { return r.ok ? r.json() : null; }) 1409 .then(function (j) { 1410 if (!j || !j.data) return; 1411 var m = {}, d = j.data; 1412 for (var i = 0; i < d.length; i++) { 1413 var t = String(d[i].publishedTime || ''); 1414 if (t.length >= 4) m[String(d[i].id)] = t.slice(0, 4); 1415 } 1416 merge(m); 1417 cacheWrite(m); 1418 pass(); 1419 }) 1420 .catch(function () {}); 1421 } catch (e) {} 1422 } 1423 1424 function run() { 1425 var need = pass(); 1426 if (!need.length) return; /* å ç½®è¡¨å ¨å½ä¸ï¼ä¸åä»»ä½è¯·æ± */ 1427 var c = cacheRead(); /* çä¼è¯ç¼å */ 1428 if (c && c.t && (Date.now() - c.t) < TTL && c.m) { 1429 merge(c.m); 1430 if (!pass().length) return; 1431 } 1432 refresh(); /* ä»ç¼º â æä¸æ¬¡å®æ¹ API */ 1433 } 1434 1435 if (document.readyState === 'loading') { 1436 document.addEventListener('DOMContentLoaded', run); 1437 } else { 1438 run(); 1439 } 1440})(); 1441</script>
1441 1442<!-- FSC:P2-3:END --> 1443<!-- FSC:P3-1:BEGIN --> 1444<!-- ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1445 è士靿°å¦ · å¦éå¨çº¿ ï½ å¹´å¡è½å°é¡µï¼P3-1ï¼ 1446 å¶ä½ï¼2026-09-19 ï½ æ®µIDï¼fsc-vip-landing ï½ ä½ç¨é¡µï¼/vip/ ä¸ /vip/ï¼ä» çµèç主é¢ï¼ 1447 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1448 · åªå¨ /vip/ çæï¼å ¶ä»é¡µé¢ä¸æ§è¡ä»»ä½é»è¾ 1449 · 䏿¸ ç©ºä»»ä½ EduSoho 容å¨ï¼æ°å»º .vip-landing æå¨ .container ä¹åï¼ 1450 åæåçåºåæ¬è¿æ¥ï¼åªå¯¹ .vip-banner / .es-wrap > .container å display:none 1451 · åçä¿çï¼.vip-levelï¼ä¼åå¡ï¼ã.vip-opening-timeï¼å¼é/ç»è´¹å ¥å£ï¼ã 1452 .vip-filerï¼ä¼å课ç¨166 + ä¼åç级10 宿¶å表ï¼ã#vipDetailInfo å 3 个 input 1453 · å ¨å¹ åºè¡ä¸ç¨ 100vwï¼é¿å æ¨ªåæº¢åºï¼CSS å ¨é¨å¸¦ .vip-landing åç¼ï¼ä¸æ±¡æå ¨ç« 1454 · åéï¼python xt_inject.py vip revert ï¼æå æ <style>/
1454<script> 两个 fsc-vip-landing* æ ç¾ï¼ 1455 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ --> 1456<style id="fsc-vip-landing-css"> 1457 .vip-landing, .vip-landing * { 1458 box-sizing: border-box !important 1459 } 1460 .vip-landing :where(.hero, .hero *, .section, .section *, .final-cta, .final-cta *) { 1461 margin: 0 !important; padding: 0 !important 1462 } 1463 .vip-landing { 1464 font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif !important; background: #FBF8F2 !important; color: #1a1a1a !important; line-height: 1.7 !important 1465 } 1466 .vip-landing .vip-inner { 1467 max-width: 960px !important; margin: 0 auto !important; padding: 0 20px !important 1468 } 1469 .vip-landing .hero { 1470 background: linear-gradient(135deg, #0F392B 0%, #1a5c42 100%) !important; color: #FBF8F2 !important; padding: 60px 0 50px !important; text-align: center !important; position: relative !important; overflow: hidden !important 1471 } 1472 .vip-landing .hero::before { 1473 content: '' !important; position: absolute !important; top: -50% !important; right: -20% !important; width: 500px !important; height: 500px !important; background: radial-gradient(circle, rgba(184,137,61,0.15) 0%, transparent 70%) !important; border-radius: 50% !important 1474 } 1475 .vip-landing .hero-tag { 1476 display: inline-block !important; background: rgba(184,137,61,0.2) !important; border: 1px solid #B8893D !important; color: #B8893D !important; padding: 6px 18px !important; border-radius: 20px !important; font-size: 14px !important; margin-bottom: 20px !important; letter-spacing: 2px !important 1477 } 1478 .vip-landing .hero .vip-hero-title { 1479 font-size: 42px !important; font-weight: 700 !important; margin-bottom: 12px !important; letter-spacing: 1px !important 1480 } 1481 .vip-landing .hero-sub { 1482 font-size: 18px !important; color: rgba(251,248,242,0.8) !important; margin-bottom: 30px !important 1483 } 1484 .vip-landing .hero-price { 1485 margin-bottom: 30px !important 1486 } 1487 .vip-landing .hero-price .num { 1488 font-size: 56px !important; font-weight: 700 !important; color: #B8893D !important 1489 } 1490 .vip-landing .hero-price .unit { 1491 font-size: 20px !important; color: rgba(251,248,242,0.7) !important; margin-left: 8px !important 1492 } 1493 .vip-landing .hero-price .per-day { 1494 font-size: 14px !important; color: rgba(251,248,242,0.6) !important; margin-top: 6px !important 1495 } 1496 .vip-landing .hero-cta { 1497 display: inline-block !important; background: #B8893D !important; color: #fff !important; padding: 16px 48px !important; border-radius: 8px !important; font-size: 18px !important; font-weight: 600 !important; text-decoration: none !important; transition: all 0.3s !important; box-shadow: 0 4px 20px rgba(184,137,61,0.4) !important 1498 } 1499 .vip-landing .hero-cta:hover { 1500 background: #c99a4e !important; transform: translateY(-2px) !important 1501 } 1502 .vip-landing .hero-note { 1503 margin-top: 16px !important; font-size: 13px !important; color: rgba(251,248,242,0.5) !important 1504 } 1505 .vip-landing .section { 1506 padding: 50px 0 !important 1507 } 1508 .vip-landing .section-title { 1509 text-align: center !important; font-size: 28px !important; font-weight: 700 !important; color: #0F392B !important; margin-bottom: 8px !important 1510 } 1511 .vip-landing .section-desc { 1512 text-align: center !important; color: #666 !important; font-size: 15px !important; margin-bottom: 36px !important 1513 } 1514 .vip-landing .divider { 1515 width: 50px !important; height: 3px !important; background: #B8893D !important; margin: 0 auto 30px !important; border-radius: 2px !important 1516 } 1517 .vip-landing .benefits-grid { 1518 display: grid !important; grid-template-columns: repeat(2, 1fr) !important; gap: 20px !important 1519 } 1520 .vip-landing .benefit-card { 1521 background: #fff !important; border-radius: 12px !important; padding: 28px 24px !important; box-shadow: 0 2px 12px rgba(15,57,43,0.06) !important; border-left: 4px solid #B8893D !important; transition: transform 0.3s !important 1522 } 1523 .vip-landing .benefit-card:hover { 1524 transform: translateY(-4px) !important 1525 } 1526 .vip-landing .benefit-icon { 1527 width: 48px !important; height: 48px !important; background: linear-gradient(135deg, #0F392B, #1a5c42) !important; border-radius: 10px !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 24px !important; margin-bottom: 14px !important 1528 } 1529 .vip-landing .benefit-title { 1530 font-size: 18px !important; font-weight: 600 !important; color: #0F392B !important; margin-bottom: 8px !important 1531 } 1532 .vip-landing .benefit-desc { 1533 font-size: 14px !important; color: #666 !important; line-height: 1.7 !important 1534 } 1535 .vip-landing .benefit-highlight { 1536 color: #B8893D !important; font-weight: 600 !important 1537 } 1538 .vip-landing .compare-section { 1539 background: #fff !important 1540 } 1541 .vip-landing .compare-table { 1542 width: 100% !important; border-collapse: collapse !important; background: #fff !important; border-radius: 12px !important; overflow: hidden !important; box-shadow: 0 2px 12px rgba(15,57,43,0.06) !important 1543 } 1544 .vip-landing .compare-table th { 1545 background: #0F392B !important; color: #FBF8F2 !important; padding: 14px 16px !important; font-size: 15px !important; font-weight: 600 !important; text-align: left !important 1546 } 1547 .vip-landing .compare-table td { 1548 padding: 14px 16px !important; border-bottom: 1px solid #f0ece3 !important; font-size: 14px !important 1549 } 1550 .vip-landing .compare-table tr:last-child td { 1551 border-bottom: none !important 1552 } 1553 .vip-landing .compare-table tr:hover { 1554 background: #faf7f0 !important 1555 } 1556 .vip-landing .compare-table .vip-price { 1557 color: #B8893D !important; font-weight: 700 !important 1558 } 1559 .vip-landing .compare-table .save-tag { 1560 display: inline-block !important; background: #e8f5e9 !important; color: #2e7d32 !important; padding: 2px 10px !important; border-radius: 10px !important; font-size: 12px !important; font-weight: 600 !important 1561 } 1562 .vip-landing .compare-note { 1563 text-align: center !important; margin-top: 20px !important; font-size: 14px !important; color: #888 !important 1564 } 1565 .vip-landing .audience-grid { 1566 display: grid !important; grid-template-columns: repeat(3, 1fr) !important; gap: 20px !important 1567 } 1568 .vip-landing .audience-card { 1569 background: #fff !important; border-radius: 12px !important; padding: 30px 24px !important; text-align: center !important; box-shadow: 0 2px 12px rgba(15,57,43,0.06) !important; transition: transform 0.3s !important 1570 } 1571 .vip-landing .audience-card:hover { 1572 transform: translateY(-4px) !important 1573 } 1574 .vip-landing .audience-num { 1575 width: 40px !important; height: 40px !important; background: #B8893D !important; color: #fff !important; border-radius: 50% !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 18px !important; font-weight: 700 !important; margin: 0 auto 16px !important 1576 } 1577 .vip-landing .audience-title { 1578 font-size: 17px !important; font-weight: 600 !important; color: #0F392B !important; margin-bottom: 10px !important 1579 } 1580 .vip-landing .audience-desc { 1581 font-size: 13px !important; color: #666 !important; line-height: 1.7 !important 1582 } 1583 .vip-landing .choice-section { 1584 background: #fff !important 1585 } 1586 .vip-landing .choice-grid { 1587 display: grid !important; grid-template-columns: repeat(3, 1fr) !important; gap: 20px !important 1588 } 1589 .vip-landing .choice-card { 1590 border-radius: 12px !important; padding: 28px 24px !important; text-align: center !important; border: 2px solid #e8e2d5 !important; transition: all 0.3s !important 1591 } 1592 .vip-landing .choice-card.recommended { 1593 border-color: #B8893D !important; background: linear-gradient(180deg, #fffbf3 0%, #fff 100%) !important; position: relative !important 1594 } 1595 .vip-landing .choice-card.recommended::before { 1596 content: 'æ¨è' !important; position: absolute !important; top: -12px !important; left: 50% !important; transform: translateX(-50%) !important; background: #B8893D !important; color: #fff !important; padding: 4px 16px !important; border-radius: 10px !important; font-size: 12px !important; font-weight: 600 !important 1597 } 1598 .vip-landing .choice-title { 1599 font-size: 18px !important; font-weight: 600 !important; color: #0F392B !important; margin-bottom: 8px !important 1600 } 1601 .vip-landing .choice-price { 1602 font-size: 28px !important; font-weight: 700 !important; color: #B8893D !important; margin-bottom: 12px !important 1603 } 1604 .vip-landing .choice-price small { 1605 font-size: 14px !important; color: #999 !important; font-weight: 400 !important 1606 } 1607 .vip-landing .choice-desc { 1608 font-size: 13px !important; color: #666 !important; line-height: 1.7 !important 1609 } 1610 .vip-landing .faq-list { 1611 max-width: 760px !important; margin: 0 auto !important 1612 } 1613 .vip-landing .faq-item { 1614 background: #fff !important; border-radius: 10px !important; margin-bottom: 12px !important; overflow: hidden !important; box-shadow: 0 2px 8px rgba(15,57,43,0.04) !important 1615 } 1616 .vip-landing .faq-q { 1617 padding: 18px 24px !important; font-size: 15px !important; font-weight: 600 !important; color: #0F392B !important; cursor: pointer !important; display: flex !important; justify-content: space-between !important; align-items: center !important 1618 } 1619 .vip-landing .faq-q::after { 1620 content: '+' !important; font-size: 20px !important; color: #B8893D !important; font-weight: 400 !important 1621 } 1622 .vip-landing .faq-a { 1623 padding: 0 24px 18px !important; font-size: 14px !important; color: #666 !important; line-height: 1.8 !important; display: none !important 1624 } 1625 .vip-landing .faq-item.open .faq-a { 1626 display: block !important 1627 } 1628 .vip-landing .faq-item.open .faq-q::after { 1629 content: 'â' !important 1630 } 1631 .vip-landing .final-cta { 1632 background: linear-gradient(135deg, #0F392B 0%, #1a5c42 100%) !important; color: #FBF8F2 !important; padding: 50px 0 !important; text-align: center !important 1633 } 1634 .vip-landing .final-cta h2 { 1635 font-size: 28px !important; margin-bottom: 12px !important 1636 } 1637 .vip-landing .final-cta p { 1638 color: rgba(251,248,242,0.7) !important; margin-bottom: 24px !important; font-size: 15px !important 1639 } 1640 .vip-landing .final-cta .contact { 1641 font-size: 18px !important; color: #B8893D !important; font-weight: 600 !important; margin-bottom: 8px !important 1642 } 1643 .vip-landing .final-cta .contact small { 1644 display: block !important; font-size: 13px !important; color: rgba(251,248,242,0.5) !important; font-weight: 400 !important; margin-top: 4px !important 1645 } 1646@media (max-width: 768px){ 1647 .vip-landing .hero .vip-hero-title { 1648 font-size: 28px !important 1649 } 1650 .vip-landing .hero-sub { 1651 font-size: 15px !important 1652 } 1653 .vip-landing .hero-price .num { 1654 font-size: 42px !important 1655 } 1656 .vip-landing .section-title { 1657 font-size: 22px !important 1658 } 1659 .vip-landing .benefits-grid { 1660 grid-template-columns: 1fr !important 1661 } 1662 .vip-landing .audience-grid { 1663 grid-template-columns: 1fr !important 1664 } 1665 .vip-landing .choice-grid { 1666 grid-template-columns: 1fr !important 1667 } 1668 .vip-landing .compare-table { 1669 font-size: 12px !important 1670 } 1671 .vip-landing .compare-table th, 1672 .vip-landing .compare-table td { 1673 padding: 10px 8px !important 1674 } 1675 .vip-landing .hero-cta { 1676 padding: 14px 36px !important; font-size: 16px !important 1677 } 1678} 1679 1680 /* âââ æ¬ç«éé ï¼è®¾è®¡ç¨¿ä¹å¤ï¼P3-1 æ°å¢ï¼âââ */ 1681 1682 /* â ä¼åå¡ï¼.vip-level å éï¼ï¼å» EduSoho æ³¢æµªèæ¯ï¼æ¶ææ£å¸¸å¡çå°ºå¯¸å± ä¸ */ 1683 .vip-landing .vip-native { 1684 background: #FBF8F2 !important; 1685 padding: 0 20px !important; 1686 } 1687 .vip-landing .vip-wallet { 1688 width: 100% !important; 1689 max-width: 420px !important; 1690 margin: 0 auto !important; 1691 padding-top: 36px !important; 1692 } 1693 .vip-landing .vip-level { 1694 background: none !important; 1695 background-image: none !important; 1696 height: auto !important; 1697 min-height: 0 !important; 1698 width: 100% !important; 1699 padding: 0 !important; 1700 text-align: center !important; 1701 } 1702 /* â ï¸ swiper-container/-wrapper å¿ é¡»ç»ãæ¾å¼ãé«åº¦ï¼å®æµ height:auto æ¶æ´æ¡é¾è·¯ä¼å¡æ 0 1703 ï¼slide æé«åº¦ãç¶çº§å´ç® 0ï¼å±æ§é¾å¨ swiper èªæ CSS ä¸ä¸ä¼ éï¼ */ 1704 .vip-landing .vip-level .swiper-container, 1705 .vip-landing .vip-level .swiper-wrapper { 1706 width: 100% !important; 1707 max-width: 420px !important; 1708 height: 218px !important; 1709 min-height: 218px !important; 1710 display: block !important; 1711 margin: 0 auto !important; 1712 overflow: visible !important; 1713 } 1714 .vip-landing .vip-level .swiper-slide, 1715 .vip-landing .vip-level .level-item { 1716 width: 100% !important; 1717 max-width: 420px !important; 1718 height: 218px !important; 1719 min-height: 218px !important; 1720 display: block !important; 1721 margin: 0 auto !important; 1722 } 1723 .vip-landing .vip-level .level-item__bg { 1724 width: 100% !important; 1725 height: 100% !important; 1726 object-fit: cover !important; 1727 display: block !important; 1728 } 1729 .vip-landing .vip-level .vip-level-btn { display: none !important; } 1730 1731 /* â¡ å¼é / ç»è´¹ï¼.vip-opening-timeï¼ï¼æ¶æå°¾å±éçä¸è¡æ¬¡è¦å ¥å£ */ 1732 .vip-landing .vip-open-inline { 1733 margin-top: 22px !important; 1734 } 1735 .vip-landing .vip-opening-time { 1736 width: auto !important; 1737 height: auto !important; 1738 display: inline-block !important; 1739 } 1740 .vip-landing .vip-opening-time .time-item { 1741 width: auto !important; 1742 height: auto !important; 1743 min-width: 0 !important; 1744 background: rgba(255, 255, 255, 0.08) !important; 1745 border: 1px solid rgba(184, 137, 61, 0.45) !important; 1746 border-radius: 8px !important; 1747 padding: 12px 22px !important; 1748 display: inline-flex !important;
1749 align-items: center !important; 1750 gap: 14px !important; 1751 } 1752 .vip-landing .vip-opening-time .time-item__price, 1753 .vip-landing .vip-opening-time .time-item__duration { 1754 color: #FBF8F2 !important; 1755 font-size: 14px !important; 1756 margin: 0 !important; 1757 padding: 0 !important; 1758 } 1759 .vip-landing .vip-opening-time .buy__btn { 1760 background: transparent !important; 1761 color: #D9B87C !important; 1762 border: 1px solid #B8893D !important; 1763 border-radius: 6px !important; 1764 font-size: 14px !important; 1765 padding: 6px 16px !important; 1766 height: auto !important; 1767 line-height: 1.5 !important; 1768 } 1769 .vip-landing .vip-opening-time a { text-decoration: none !important; } 1770 1771 /* ⢠ä¼åè¯¾ç¨ / ä¼åç级ï¼.vip-filerï¼ï¼ä¿æåç 1140 å¸å±ï¼åªè¡¥åççç½ */ 1772 .vip-landing .vip-filer { 1773 background: #FFFFFF !important; 1774 padding: 8px 0 46px !important; 1775 } 1776 .vip-landing .vip-filer .es-piece { padding-top: 26px !important; } 1777 .vip-landing .vip-filer .es-piece:first-child { 1778 border-bottom: 1px solid #F0ECE3 !important; 1779 padding-bottom: 32px !important; 1780 } 1781 .vip-landing .vip-filer img { 1782 border-radius: 8px !important; 1783 object-fit: cover !important; 1784 } 1785 .vip-landing .vip-filer .title, 1786 .vip-landing .vip-filer h3, 1787 .vip-landing .vip-filer h4 { 1788 color: #0F392B !important; 1789 font-weight: 700 !important; 1790 } 1791 1792 /* ⣠EduSoho é¡¶æ ï¼æ¸¸å®¢ï¼åªæ¾ç¤ºã请ç»å½åæ¥çä¼åç¶æãï¼éèï¼å·²ç»å½ç¨æ·ä¿çï¼ 1793 æ¶ææ·±ç»¿ç»æ¡ ââ è¿æ ·ä¼åç¶æä¿¡æ¯ä¸ä¸æå 容ä¹ä¸ä¼è¢«æ¹æï¼æªç»å®æµï¼ä¿å®å¤çï¼ */ 1794 html.fsc-vip-guest .vip-banner { display: none !important; } 1795 html.fsc-vip-loggedin .vip-banner { 1796 display: block !important; 1797 background: #0F392B !important; 1798 background-image: none !important; 1799 height: auto !important; 1800 min-height: 0 !important; 1801 padding: 12px 0 !important; 1802 text-align: center !important; 1803 } 1804 html.fsc-vip-loggedin .vip-banner * { 1805 color: #FBF8F2 !important; 1806 font-size: 14px !important; 1807 line-height: 1.8 !important; 1808 margin: 0 auto !important; 1809 } 1810 html.fsc-vip-loggedin .vip-banner img { display: none !important; } 1811 1812 /* ⤠åªå¨ææ¹ JS æåæ¥ç®¡åæéè主ä½å®¹å¨ï¼JS 失败ååé¡µç §å¸¸æ¾ç¤ºï¼å®å ¨å åºï¼ */ 1813 html.fsc-vip-on .es-wrap > .container { display: none !important; } 1814 1815 1816 /* âââ æ¬ç«èªæç±»ï¼P3-1 æ°å¢ï¼âââ */ 1817 .vip-landing .vip-pinpoint { padding: 34px 0 0 !important; } 1818 .vip-landing .vip-pinpoint-box { 1819 background: #FBF1DE !important; 1820 border-left: 4px solid #B8893D !important; 1821 border-radius: 0 8px 8px 0 !important; 1822 padding: 16px 20px !important; 1823 } 1824 .vip-landing .vip-pinpoint-box p { 1825 margin: 0 !important; 1826 font-size: 14px !important; 1827 line-height: 1.9 !important; 1828 color: #6B6252 !important; 1829 } 1830 .vip-landing .vip-pinpoint-box strong { color: #8E672A !important; } 1831 .vip-landing .vip-hero-title { 1832 font-size: 42px !important; 1833 font-weight: 700 !important; 1834 color: #FBF8F2 !important; 1835 margin-bottom: 12px !important; 1836 letter-spacing: 1px !important; 1837 line-height: 1.25 !important; 1838 } 1839 .vip-landing .compare-table tr.row-total td { 1840 background: #FAF7F0 !important; 1841 font-weight: 600 !important; 1842 } 1843 .vip-landing .audience-note { 1844 text-align: center !important; 1845 margin-top: 24px !important; 1846 color: #888 !important; 1847 font-size: 14px !important; 1848 line-height: 1.9 !important; 1849 } 1850 .vip-landing .vip-native-section { background: #FFFFFF !important; padding-bottom: 0 !important; } 1851 @media (max-width: 768px) { 1852 .vip-landing .vip-hero-title { font-size: 28px !important; } 1853 .vip-landing .vip-pinpoint { padding: 26px 0 0 !important; } 1854 } 1855 1856</style>
1857<script id="fsc-vip-landing"> 1858(function () { 1859 'use strict'; 1860 var P = location.pathname; 1861 if (P !== '/vip' && P !== '/vip/' && P.indexOf('/vip/') !== 0) return; 1862 if (document.getElementById('fscVipLanding')) return; // å¹ç 1863 1864 var HTML = ` 1865<div class="vip-landing" id="fscVipLanding"> 1866 1867 <!-- â é¦å± --> 1868 <section class="hero"> 1869 <div class="vip-inner"> 1870 <div class="hero-tag">è士靿°å¦ · å¦éå¨çº¿</div> 1871 <div class="vip-hero-title">ç å¦å¹´å¡</div> 1872 <p class="hero-sub">ä¸å¹´ 365 天ï¼å ¨ç« 166 鍿°å¦è¯¾ + 10 个æå çï¼å ¨é¨é便å¦</p> 1873 <div class="hero-price"> 1874 <span class="num">¥1,499</span> 1875 <span class="unit">/ å¹´</span> 1876 <div class="per-day">ä¸åæ°èå¦åï¼ç»ä¸ä»· · æåæ¯å¤©çº¦ ¥4.1</div> 1877 </div> 1878 <a href="#vipContact" class="hero-cta">ç«å³å¨è¯¢å¼é</a> 1879 <div class="hero-note">æ¬ç«å·²æåå¨çº¿æ¯ä»ï¼èç³»èèå¸å¾®ä¿¡ / 转账åç«å³å¼é</div> 1880 </div> 1881 </section> 1882 1883 <!-- â¡ ä¼åå¡ï¼EduSoho åç .vip-level å éæè½½ç¹ï¼ --> 1884 <div class="vip-native" id="fscVipLevel"></div> 1885 1886 <!-- ⢠请å çè¿ä¸å¥ï¼007 åå¶ææ¡ï¼è®¾è®¡ç¨¿ç¼ºå¤±ï¼æ¤å¤è¡¥åï¼ --> 1887 <section class="section vip-pinpoint"> 1888 <div class="vip-inner"> 1889 <div class="vip-pinpoint-box"> 1890 <p><strong>请å çè¿ä¸å¥ï¼</strong>æ¬é¡µä¸æ¹ãä¼å课ç¨ãä¸ãä¼åç级ã两个åºåéç<strong>å ¨é¨è¯¾ç¨åç级ï¼é½å·²ç»å å«å¨å¹´å¡å ï¼ä¸éè¦ååç¬ä»è´¹</strong>ãå¡çä¸çãç«å³å å ¥ãæé®æ¯é¡µé¢æ¨¡æ¿èªå¸¦çï¼<strong>ä¸ä»£è¡¨å¹´å¡ä¹å¤è¿è¦å é±</strong>ã<br> 1891 ï¼å¹´å¡å ·ä½å å«åªäºç级ï¼ä»¥æ¬é¡µãä¼åç级ãåºåååºç为åï¼</p> 1892 </div> 1893 </div> 1894 </section> 1895 1896 <!-- ⣠è¿å¼ å¡å å«ä»ä¹ --> 1897 <section class="section"> 1898 <div class="vip-inner"> 1899 <h2 class="section-title">è¿å¼ å¡å å«ä»ä¹</h2> 1900 <div class="divider"></div> 1901 <div class="benefits-grid"> 1902 <div class="benefit-card"> 1903 <div class="benefit-icon">📚</div> 1904 <div class="benefit-title">å ¨ç« 166 鍿°å¦è¯¾</div> 1905 <div class="benefit-desc"> 1906 å°å¦å¥¥æ° <span class="benefit-highlight">65 é¨</span> · å°å¦æ°å¦ <span class="benefit-highlight">57 é¨</span> · å䏿°å¦ <span class="benefit-highlight">44 é¨</span><br> 1907 å ¶ä¸ 10 é¨å è´¹è¯å¬è¯¾ï¼ä¸ç¨ä¹°å°±è½ç 1908 </div> 1909 </div> 1910 <div class="benefit-card"> 1911 <div class="benefit-icon">🏫</div> 1912 <div class="benefit-title">10 个æå ç</div> 1913 <div class="benefit-desc"> 1914 ä¸ï½å 年级 · åä¸ · åäºãå ¨å¹´çã¥799ï¼<br> 1915 å°å¦å¥¥æ° · æç»´å ¨ç¨ç ¥1,299ï¼åä¸ · ä¸èå ¨ç¨ç ¥1,299<br> 1916 åä¹°è¦ ¥799ï½¥1,299ï¼å¹´å¡å ¨é¨å å« 1917 </div> 1918 </div> 1919 <div class="benefit-card"> 1920 <div class="benefit-icon">🔄</div> 1921 <div class="benefit-title">åå¤çï¼ä¸é次æ°</div> 1922 <div class="benefit-desc"> 1923 ä¸å¹´å åä¸è课ç 1 éè¿æ¯ 20 éé½ä¸æ ·<br> 1924 ä¸éæ¶é¿ãä¸é¢å¤è®¡è´¹<br> 1925 é¢ä¹ ãå¤ä¹ ãèåå²åºï¼éæ¶ç¿»åºæ¥ç 1926 </div> 1927 </div> 1928 <div class="benefit-card"> 1929 <div class="benefit-icon">✨</div> 1930 <div class="benefit-title">æ°è¯¾ä¸çº¿èªå¨å å«</div> 1931 <div class="benefit-desc"> 1932 å¹´å¡æå æ°ä¸çº¿ç课ç¨ä¸ç¨åä¹°<br> 1933 ä¹ä¸ç¨è¡¥å·®ä»·<br> 1934 åå¹´çº§åæ¥ççï¼ä¸ç¨åä¹°æ°è¯¾ 1935 </div> 1936 </div> 1937 </div> 1938 </div> 1939 </section> 1940 1941 <!-- ⤠买å é¨å°±åæ¬ --> 1942 <section class="section compare-section"> 1943 <div class="vip-inner"> 1944 <h2 class="section-title">ä¹°å é¨å°±åæ¬ï¼</h2> 1945 <p class="section-desc">æ¨ä¸éè¦ç¨å° 166 é¨ãæä¸é¢è¿å¼ 表ç®ï¼ä¹° ¥399 æ¡£ 4 é¨ã¥299 æ¡£ 6 é¨ï¼å¹´å¡å°±å·²ç»æ¯å买便å®ï¼å¦æåªä¹° ¥129 ç奥æ°ä¸é¢ï¼è¦ä¹°å° 12 鍿忬</p> 1946 <div class="divider"></div> 1947 <table class="compare-table"> 1948 <thead> 1949 <tr> 1950 <th>
1950æ¨è¦ä¹°ç课</th> 1951 <th>åä¹°å计</th> 1952 <th>å¹´å¡</th> 1953 <th>ç»æ</th> 1954 </tr> 1955 </thead> 1956 <tbody> 1957 <tr> 1958 <td>¥129 档奥æ°ä¸é¢ × 12 é¨</td> 1959 <td>¥1,548</td> 1960 <td class="vip-price">¥1,499</td> 1961 <td><span class="save-tag">ç ¥49</span></td> 1962 </tr> 1963 <tr> 1964 <td>¥199 æ¡£è¯¾ç¨ × 8 é¨</td> 1965 <td>¥1,592</td> 1966 <td class="vip-price">¥1,499</td> 1967 <td><span class="save-tag">ç ¥93</span></td> 1968 </tr> 1969 <tr> 1970 <td>¥299 æ¡£è¯¾ç¨ × 6 é¨</td> 1971 <td>¥1,794</td> 1972 <td class="vip-price">¥1,499</td> 1973 <td><span class="save-tag">ç ¥295</span></td> 1974 </tr> 1975 <tr> 1976 <td>¥399 æ¡£è¯¾ç¨ × 4 é¨</td> 1977 <td>¥1,596</td> 1978 <td class="vip-price">¥1,499</td> 1979 <td><span class="save-tag">ç ¥97</span></td> 1980 </tr> 1981 <tr> 1982 <td>两个年级çãå ¨å¹´çãï¼¥799 × 2ï¼</td> 1983 <td>¥1,598</td> 1984 <td class="vip-price">¥1,499</td> 1985 <td><span class="save-tag">ç ¥99</span></td> 1986 </tr> 1987 <tr> 1988 <td>ãå°å¦å¥¥æ° · æç»´å ¨ç¨çãåä¹°ï¼11 é¨ï¼</td> 1989 <td>¥4,389</td> 1990 <td class="vip-price">¥1,499</td> 1991 <td><span class="save-tag">ç ¥2,890</span></td> 1992 </tr> 1993 <tr class="row-total"> 1994 <td>ç«å 166 é¨è¯¾å ¨é¨éä¸åä¹°</td> 1995 <td>¥40,324</td> 1996 <td class="vip-price">¥1,499</td> 1997 <td><span class="save-tag">ç ¥38,825</span></td> 1998 </tr> 1999 </tbody> 2000 </table> 2001 <p class="compare-note">ä¸å¼ å¹´å¡ = å ¨ç« 166 é¨ + 10 个çï¼ä¸å¹´å å ¨é¨å¦å®ä¹è¿æ¯è¿ä¸ªä»·</p> 2002 </div> 2003 </section> 2004 2005 <!-- ⥠åè¯¾ãæ¥çã年塿ä¹é --> 2006 <section class="section choice-section"> 2007 <div class="vip-inner"> 2008 <h2 class="section-title">åè¯¾ãæ¥çãå¹´å¡ï¼æä¹é</h2> 2009 <div class="divider"></div> 2010 <div class="choice-grid"> 2011 <div class="choice-card"> 2012 <div class="choice-title">åä¹°ä¸é¨è¯¾</div> 2013 <div class="choice-price">¥129<small> èµ·ï¼ä»è´¹è¯¾æä½ ¥129ï¼</small></div> 2014 <div class="choice-desc">åªæ³è¡¥ä¸åãæ¯å¦å©ååæ°åºç¨é¢å¼±ï¼å°±åä¹°ä¸ä¸ªä¸é¢ã</div> 2015 </div> 2016 <div class="choice-card"> 2017 <div class="choice-title">æ¥ä¸ä¸ªç</div> 2018 <div class="choice-price">¥799<small> èµ·</small></div> 2019 <div class="choice-desc">æ³è·ç课æ¬èµ°ä¸å¦å¹´ãä¸ä¸ªçæä¸å¦æè¦ç¨çå é¨è¯¾æé¡ºåºæå 好ï¼ä¸ç¨èªå·±æï¼æ¯åä¹°ç 20%~70%ã</div> 2020 </div> 2021 <div class="choice-card recommended"> 2022 <div class="choice-title">å¼éå¹´å¡</div> 2023 <div class="choice-price">¥1,499<small> / å¹´</small></div> 2024 <div class="choice-desc">æ³å ¨ç«é便å¦ãä¸é¢ä¸¤ç±»éçå ¨é¨è¯¾ç¨åå ¨é¨ç级é½å«å¨éé¢ï¼å æ¬ä»¥åæ°ä¸çº¿ç课ï¼ä¸ç¨åä¹°ã</div> 2025 </div> 2026 </div> 2027 </div> 2028 </section> 2029 2030 <!-- ⦠è¿å¼ å¡éåè° --> 2031 <section class="section"> 2032 <div class="vip-inner"> 2033 <h2 class="section-title">è¿å¼ å¡éåè°</h2> 2034 <div class="divider"></div> 2035 <div class="audience-grid"> 2036 <div class="audience-card"> 2037 <div class="audience-num">1</div> 2038 <div class="audience-title">ä¸ï½å 年级 / åä¸åäº</div> 2039 <div class="audience-desc">è¿ä¸å¹´çé¢ä¹ ã忥æé«ã奥æ°ä¸é¢å ¨é½ç¨å¾ä¸ï¼åå¹´çº§åæ¥ççï¼ä¸ç¨åä¹°æ°è¯¾ã</div> 2040 </div> 2041 <div class="audience-card"> 2042 <div class="audience-num">2</div> 2043 <div class="audience-title">æ ¡å æç»© + å¥¥æ°æç»´</div> 2044 <div class="audience-desc">è¿ä¸¤æ¡çº¿æ¬æ¥è¦ä¹°ä¸¤å¥è¯¾ï¼å¹´å¡ä¸æ¬¡è¦ç 166 é¨ã两æ¡è ¿èµ°è·¯ï¼ä¸åç§ã</div> 2045 </div> 2046 <div class="audience-card"> 2047 <div class="audience-num">3</div> 2048 <div class="audience-title">åä¸å¤èä¸è</div> 2049 <div class="audience-desc">ä¸èä¸é¢å¤ä¹ ãåè½´é¢ç²¾è®²é½å¨å ï¼èååå¤çä¸ç¨é¢å¤ä»è´¹ãåªéè弱翻åªéã</div> 2050 </div> 2051 </div> 2052 <p class="audience-note"> 2053 ä¹è¯´å¥å®è¯ï¼å¦æå©ååªæç®è¡¥æä¸ä¸ªä¸é¢ãä¹°ä¸é¨è¯¾å°±å¤ï¼é£åä¹°æ´åéï¼ä¸å¿ å¼å¹´å¡ã<br>
2054 å¹´å¡åç®çåæï¼æ¯è¿ä¸å¹´éä¹°å¾å¤å¤ ââ å ·ä½ä¹°å°å 鍿忬ï¼çä¸é¢é£å¼ 表ã 2055 </p> 2056 </div> 2057 </section> 2058 2059 <!-- ⧠常è§é®é¢ --> 2060 <section class="section compare-section"> 2061 <div class="vip-inner"> 2062 <h2 class="section-title">常è§é®é¢</h2> 2063 <div class="divider"></div> 2064 <div class="faq-list"> 2065 <div class="faq-item"> 2066 <div class="faq-q">Q1 年塿¯ä¸å¹´è¿æ¯æ°¸ä¹ ï¼</div> 2067 <div class="faq-a">ä¸å¹´ãä»å¼éå½å¤©å¼å§ç®ï¼365 å¤©å ææã</div> 2068 </div> 2069 <div class="faq-item"> 2070 <div class="faq-q">Q2 æ°å¦ååèå¦åä»·æ ¼ä¸æ ·åï¼</div> 2071 <div class="faq-a">䏿 ·ã¥1,499 / å¹´ï¼ä¸åæ°èå¦åï¼ç»ä¸ä»·ï¼æ²¡æãèå¦åä¸äº«ãè¿ç§è¯´æ³ã</div> 2072 </div> 2073 <div class="faq-item"> 2074 <div class="faq-q">Q3 å¼éåï¼æ°ä¸çº¿ç课è¿è¦å¦å¤ä»è´¹åï¼</div> 2075 <div class="faq-a">ä¸ç¨ã年塿ææå æ°ä¸çº¿ç课ç¨èªå¨å å«ï¼ä¸éè¦è¡¥å·®ä»·ï¼ä¹ä¸éè¦éæ°è´ä¹°ã</div> 2076 </div> 2077 <div class="faq-item"> 2078 <div class="faq-q">Q4 ä¸è课è½åå¤çåï¼</div> 2079 <div class="faq-a">å¯ä»¥ã年塿å ä¸é次æ°ãä¸éæ¶é¿ï¼åä¸è课çå¤å°éé½è¡ã</div> 2080 </div> 2081 <div class="faq-item"> 2082 <div class="faq-q">Q5 å·²ç»æ¥äºãå¹´çº§å ¨å¹´çãï¼è¿è¦ä¹°å¹´å¡åï¼</div> 2083 <div class="faq-a">ä¸ç¨éå¤ä¹°ï¼äºéä¸å³å¯ï¼æ³è·ç课æ¬èµ°ä¸å¦å¹´ â æ¥ãå¹´çº§å ¨å¹´çã¥799ï¼å¤ç¨ï¼æ³å ¨ç«é便å¦ï¼å«å¥¥æ°åå ¶ä»å¹´çº§ï¼ â å¼å¹´å¡ ¥1,499ï¼10 个çä¹é½å«å¨éé¢ã</div> 2084 </div> 2085 <div class="faq-item"> 2086 <div class="faq-q">Q6 å¹´å¡éç课ï¼ååç¬ä¹°ç课å 容æåºå«åï¼</div> 2087 <div class="faq-a">没æåºå«ãåä¸é¨è¯¾ãåæ ·ç课æ¶ãåæ ·ç讲ä¹ï¼å¹´å¡åªæ¯æå®åæãä¸å¹´å ä¸é次æ°å è´¹å¦ãã</div> 2088 </div> 2089 <div class="faq-item"> 2090 <div class="faq-q">Q7 æä¹ä»æ¬¾å¼éï¼</div> 2091 <div class="faq-a">èç³»èèå¸ 18310750509ï¼å¾®ä¿¡åçµè¯ï¼ï¼å¾®ä¿¡ / é¶è¡è½¬è´¦åå¯ï¼æ¶å°åç«å³ä¸ºæ¨å¼éï¼å ¨ç¨å åéã</div> 2092 </div> 2093 </div> 2094 </div> 2095 </section> 2096 2097 <!-- ⨠ä¼åè¯¾ç¨ / ä¼åç级ï¼EduSoho åç .vip-filer æè½½ç¹ï¼æ¾å¨ section ä¹å¤ 2098 ââ é¿å 被è½å°é¡µç margin/padding å½é¶è§åæå¹³åçæçï¼ --> 2099 <section class="section vip-native-section"> 2100 <div class="vip-inner"> 2101 <h2 class="section-title">å¹´å¡éå ·ä½æåªäºè¯¾åç</h2> 2102 <p class="section-desc">ä¸é¢æ¯æ¬ç«å¹´å¡å½åå å«çå ¨é¨è¯¾ç¨ä¸ç级ï¼å®æ¶æ°æ®ï¼</p> 2103 <div class="divider"></div> 2104 </div> 2105 </section> 2106 <div id="fscVipFiler"></div> 2107 2108 <!-- â© å°¾å± CTA --> 2109 <section class="final-cta" id="vipContact"> 2110 <div class="vip-inner"> 2111 <h2>ç«å³å¼éå¹´å¡ · ¥1,499 / å¹´</h2> 2112 <p>å ¨ç« 166 é¨è¯¾ + 10 个çï¼ä¸å¹´é便å¦</p> 2113 <div class="contact"> 2114 èèå¸ï¼183-1075-0509ï¼å¾®ä¿¡åçµè¯ï¼ 2115 <small>微信 / é¶è¡è½¬è´¦åå¯ï¼æ¶å°åç«å³å¼éï¼å ¨ç¨å åé</small> 2116 </div> 2117 <div class="vip-open-inline" id="fscVipOpen"></div> 2118 </div> 2119 </section> 2120 2121</div> 2122`; 2123 2124 function ready(fn) { 2125 if (document.readyState === 'loading') { 2126 document.addEventListener('DOMContentLoaded', fn); 2127 } else { fn(); } 2128 } 2129 2130 function build() { 2131 var wrap = document.querySelector('.es-wrap'); 2132 var container = document.querySelector('.es-wrap > .container'); 2133 if (!wrap || !container) return; 2134 2135 // ââ 1. å ååçèç¹ï¼.vip-filer / .vip-opening-time æ¬çèç¹ï¼ 2136 // .vip-level ç¨å éï¼é¿å swiper 尺寸计ç®è¢«æ¬ç§»æä¹±ï¼ 2137 var lvl = document.querySelector('.vip-level'); 2138 var open = document.querySelector('.vip-opening-time'); 2139 var filer = document.querySelector('.vip-filer'); 2140 2141 // ââ 2. 建è½å°é¡µï¼æ¤æ¶å ä¸ä¸ classï¼éèé»è¾æå䏿¥æçæï¼ 2142 var land = document.createElement('div'); 2143 land.innerHTML = HTML; 2144 var root = land.firstElementChild; 2145 if (!root) return; 2146 2147 // ââ 3. åçèç¹æ¬è¿è½å°é¡µ 2148 try { 2149 var lvlBox = root.querySelector('#fscVipLevel'); 2150 if (lvl && lvlBox) { 2151 var w = document.createElement('div'); 2152 w.className = 'vip-wallet'; 2153 var lvClone = lvl.cloneNode(true); 2154 // ð´ swiper å¨ wrapper / slide ä¸åäºè¡å æ ·å¼ï¼padding:0 380pxãwidth:380px çï¼ï¼ 2155 // è¡å æ ·å¼ä¼åè¿æ®é CSS è§å â å éåå¿ é¡»å¥æï¼å¦åå¡çè¢«éæ 380 宽ãé«åº¦å¡æ 0 2156 try { 2157 var rm = ['.swiper-container', '.swiper-wrapper', '.swiper-slide']; 2158 for (var ri = 0; ri < rm.length; ri++) { 2159 var es = lvClone.querySelectorAll(rm[ri]); 2160 for (var ei = 0; ei < es.length; ei++) es[ei].removeAttribute('style'); 2161 } 2162 } catch (e2) { /* 奿 ·å¼å¤±è´¥ä¸è´å½ï¼CSS ä»å¯å åº */ } 2163 w.appendChild(lvClone); 2164 lvlBox.appendChild(w); 2165 } 2166 var filerBox = root.querySelector('#fscVipFiler'); 2167 if (filer && filerBox) { filerBox.appendChild(filer); } 2168 2169 var openBox = root.querySelector('#fscVipOpen'); 2170 if (open && openBox) { openBox.appendChild(open); } 2171 } catch (e) { /* æ¬ç§»å¤±è´¥ä¸å½±åè½å°é¡µä¸»ä½ */ } 2172 2173 // ââ 4. æå° .container ä¹åï¼å¯¼èªæ / .vip-banner ä¹åï¼ 2174 container.parentNode.insertBefore(root, container); 2175 2176 // ââ 5. å ¨é¨å°±ä½åæéèåçåºåï¼å¤±è´¥æ¶åé¡µç §å¸¸æ
2176¾ç¤ºï¼ 2177 var banner = document.querySelector('.vip-banner'); 2178 var isGuest = !banner || /请ç»å½åæ¥çä¼åç¶æ/.test(banner.textContent || ''); 2179 document.documentElement.classList.add(isGuest ? 'fsc-vip-guest' : 'fsc-vip-loggedin'); 2180 document.documentElement.classList.add('fsc-vip-on'); 2181 2182 // ââ 6. FAQ æå ï¼äºä»¶å§æï¼æå®åç»ä¹æ æè°ï¼ 2183 root.addEventListener('click', function (ev) { 2184 var q = ev.target.closest ? ev.target.closest('.faq-q') : null; 2185 if (!q || !root.contains(q)) return; 2186 var item = q.parentElement; 2187 if (item) item.classList.toggle('open'); 2188 }); 2189 // 馿¡é»è®¤å±å¼ï¼è®©è®¿å®¢ä¸ç¼çå°æä¸ä¸ªå¯äº¤äºçé®ç 2190 var first = root.querySelector('.faq-item'); 2191 if (first) first.classList.add('open'); 2192 } 2193 2194 ready(function () { 2195 try { build(); } catch (e) { 2196 var de = document.documentElement; 2197 de.classList.remove('fsc-vip-on'); 2198 de.classList.remove('fsc-vip-guest'); 2199 de.classList.remove('fsc-vip-loggedin'); 2200 if (window.console && console.warn) console.warn('[fsc-vip-landing]', e); 2201 } 2202 }); 2203})(); 2204 2205</script>
2205 2206<!-- FSC:P3-1:END --> 2207</script>
2207</style> 2208<!-- FSC:P2-7-classroom:BEGIN --> 2209<!-- è士靿°å¦ · ç级广åºãææºç«¯æ¨ªåæº¢åºãä¿®å¤ï¼æä»¤å¡ P2-7 ä»»å¡2 · 2026-09-19ï¼ 2210 2211 é®é¢ï¼375px ææºç«¯è®¿é® /classroom/exploreï¼æ´é¡µå¯æ¨ªåæ»å¨ 10px 2212 ï¼documentElement.scrollWidth = 385ï¼è§å£ 375ï¼ï¼å·¦ä¾§å 容被æ¨åºå±å¹ 10pxã 2213 2214 æ ¹å ï¼å®æµï¼éçæµï¼ï¼ 2215 Bootstrap ç `.row { margin-left:-10px; margin-right:-10px }` æ¯ãè´è¾¹è·æµæ¶å¤å± 2216 paddingãçåæ³ï¼è¦æ±å¤å±å®¹å¨æ 10px å·¦å³ç padding æ¥æµæ¶ã使¬é¡µ `.container` 2217 å¨ â¤768px æ¶ padding 为 **0**ï¼computed 宿µ pl=0 / pr=0ï¼ï¼è´è¾¹è·æ 夿µæ¶ 2218 â `.class-list-mobile.row` åæ x=-10ã宽 395ï¼= 375 + 10 + 10ï¼â å³ä¾§æº¢åº 10pxã 2219 2220 ï¼å¡é¢åå设æ¯ã.container çç§»å¨ç«¯ padding:10px ä¸ row è´è¾¹è·å å ãï¼ 2221 æ¹å对ä½ç»èåäºï¼container ç padding æ¯ 0ï¼ä¸æ¯ 10pxãï¼ 2222 2223 åæ³ï¼æè¯¥è¡çè´è¾¹è·å½é¶ï¼æ¶é¤ 20px èå¢å®½åº¦ï¼ï¼åæ¶æå®çè¡å padding 2224 ç± 12px è°ä¸º 2px ä½ä¸ºè¡¥å¿ ââ 使å¡çå ä½ä¸ä¿®å¤å**éåç´ å®å ¨ä¸è´**ï¼ 2225 2226 ä¿®å¤åï¼row x=-10 + ml/pad â å¡ç x=14ï¼å®½ 347 2227 ä¿®å¤åï¼row x= 0 + pad 2 â å¡ç x=14ï¼å®½ 347ï¼å®æµä¸è´ï¼ 2228 æ¨ªåæº¢åºï¼10px â 0px 2229 2230 â 纯æ¶é¤æº¢åºï¼è§è§é¶ååï¼å¯ä¸å忝飿¡çä¸è§çæ»å¨æ¡æ²¡äºï¼ã 2231 2232 èå´æ§å¶ï¼ä¸éæ¶çªï¼ç¡®ä¿ä¸è¯¯ä¼¤å ¶ä»é¡µï¼ï¼ 2233 â ä» body.classroom-list-page ââ 该 class åªåºç°å¨ /classroom/explore 2234 â¡ ä» @media (max-width:768px) ââ æ¡é¢ç«¯ï¼å®æµæ¬æ¥å°±æ²¡ææº¢åºï¼å®å ¨ä¸ä»å ¥ 2235 â¢ éæ©å¨å¸¦ .class-list-mobile ââ åªå½ä¸ç级广åºçç§»å¨åè¡¨è¡ 2236 2237 åéï¼å 餿¬æ®µï¼æå¯¹æ è®° FSC:P2-7-classroomï¼ 2238--> 2239<style id="fsc-classroom-overflow-fix"> 2240@media (max-width: 768px) { 2241 body.classroom-list-page .class-list-mobile.row { 2242 margin-left: 0 !important; 2243 margin-right: 0 !important; 2244 padding-left: 2px !important; 2245 padding-right: 2px !important; 2246 } 2247} 2248</style> 2249<!-- FSC:P2-7-classroom:END --> 2250</head></script>
2250 2251<!-- FSC:P3-5:BEGIN --> 2252<!-- è士靿°å¦ · SEO ç»æåæ°æ®ï¼JSON-LDï¼Â· 段ID fsc-seo-schema · å¡ P3-5 · 2026-09-19 -->
2253<script id="fsc-seo-schema"> 2254/* ============================================================================ 2255 è士靿°å¦ · SEO ç»æåæ°æ®ï¼JSON-LDï¼ Â· 段ID: fsc-seo-schema · å¡: P3-5 2256 ä¸çº¿æ¥æ: 2026-09-19ï¼v2 ä¿®è®¢åæ¥ï¼ 2257 ---------------------------------------------------------------------------- 2258 ä½ç¨ï¼ 2259 â Organization ââ å ¨ç« 2260 â¡ Course ââ 课ç¨è¯¦æ é¡µï¼æ é¢/ä»·æ ¼/ç®ä»ä» DOM å¨æè¯»åï¼ 2261 ⢠Article ââ æç« è¯¦æ é¡µï¼æ é¢/æ¥æ/æè¦ä» DOM å¨æè¯»åï¼ 2262 ⣠BreadcrumbList ââ å 容页ï¼ä¼å 读页é¢å·²æé¢å å±ï¼ç¼ºå¤±åæè·¯å¾æ¨å¯¼ï¼ 2263 设计约æï¼ 2264 · ä¸ç¡¬ç¼ç ä»»ä½ä¸å¡æ°å¼ï¼ä»·æ ¼ãè¯¾ç¨æ°ãæ¥æä¸å¾ç°è¯»ï¼ 2265 · å¹çï¼å·²æ³¨å ¥è¿å³è·³è¿ï¼é²éå¤ï¼ 2266 · æ¯ä¸ª schema ç¬ç« try/catchï¼å个失败ä¸å½±åå ¶ä½ 2267 · 纯æ°å¢
2267<script type="application/ld+json"> å° <head>ï¼ä¸æ¹å¨é¡µé¢ä»»ä½è§è§/ç»æ 2268 â æ§è¡æ¶æºï¼å®æµæè®ï¼ï¼ 2269 æ³¨å ¥æ®µå¨ <head>ï¼æ§è¡æ¶æ£æå°æªæ¸²æï¼ä¸æ¬ç«é¨åå ç´ æ¯ãæ¸è¿å¼æ¸²æãââ 2270 ä¾å¦æç« 页 <div class="date"> å¨ DOMContentLoaded å½å»åªæãæ¥/æã两个åå ç´ ï¼ 2271 年份è¦çå ¶å®èæ¬ï¼P2-3 段ï¼å¨ ~4.5s åè¡¥å ¥ãå æ¤ ready() å¿ é¡»æ ¡éª 2272 ãå 容宿´ãè䏿¯ãå ç´ åå¨ãï¼å¦å伿æ®ç¼ºå¼åè¿ç»æåæ°æ®ã 2273 æå¤éè¯ 25 次 à 400ms â 10 ç§ï¼ä»ä¸å®æ´æ¶èµ°å®æ¹ API å åº / å®ç¼ºå¿éã 2274 åéï¼python xt_inject.py p35seo revert 2275 ============================================================================ */ 2276(function () { 2277 'use strict'; 2278 if (window.__fscSeoSchema) { return; } /* å¹ç */ 2279 window.__fscSeoSchema = true; 2280 2281 var SITE = 'https://www.xuetong.com'; 2282 var path = location.pathname; 2283 var url = SITE + path + location.search; 2284 var isCourse = /^\/(goods\/show\/\d+|course\/\d+)/.test(path); 2285 var isArticle = /^\/article\/\d+/.test(path); 2286 2287 function t(sel) { 2288 var e = document.querySelector(sel); 2289 return e ? (e.innerText || e.textContent || '').replace(/\s+/g, ' ').trim() : ''; 2290 } 2291 function el(sel) { return document.querySelector(sel); } 2292 function num(s) { 2293 var m = (s || '').replace(/,/g, '').match(/\d+(?:\.\d+)?/); 2294 return m ? m[0] : ''; 2295 } 2296 function put(id, obj) { 2297 try { 2298 var old = document.getElementById(id); 2299 if (old && old.parentNode) { old.parentNode.removeChild(old); } 2300 var s = document.createElement('script'); 2301 s.type = 'application/ld+json'; 2302 s.id = id; 2303 s.textContent = JSON.stringify(obj); 2304 (document.head || document.documentElement).appendChild(s); 2305 } catch (e) { /* éé»ï¼ç»æåæ°æ®æ¯é¦ä¸æ·»è±ï¼ç»ä¸å æ¤æé */ } 2306 } 2307 2308 /* ---------- â Organizationï¼å ¨ç«ï¼ ---------- */ 2309 function org() { 2310 put('fsc-ld-org', { 2311 '@context': 'https://schema.org', 2312 '@type': 'Organization', 2313 name: 'è士靿°å¦', 2314 alternateName: 'å¦éå¨çº¿', 2315 url: SITE + '/', 2316 logo: 'https://www.xuetong.com/files/system/2026/09-17/1838499c1a54682586.png', 2317 description: '䏿³¨ä¸å°å¦æ°å¦æè²ï¼å½æè¯¾ + æå ç + ç´æè¯¾ï¼è¦çå°å¦å°åä¸å ¨å¦æ®µã', 2318 telephone: '+86-183-1075-0509', 2319 email: '[email protected]', 2320 address: { '@type': 'PostalAddress', addressCountry: 'CN' }, 2321 sameAs: [] 2322 }); 2323 } 2324 2325 /* ---------- â¡ Courseï¼è¯¾ç¨è¯¦æ é¡µï¼ ---------- */ 2326 function courseSchema() { 2327 var cName = t('h1') || document.title.split('-')[0].trim(); 2328 /* ä»·æ ¼ï¼ä¼å 详æ åºï¼å ¶æ¬¡ä»ç®ä» meta è¡éæãä»·æ ¼ï¼Â¥199ã */ 2329 var cPrice = num(t('.detail-right__price__price') || t('.detail-right__price__num')); 2330 if (cPrice === '') { 2331 var mP = t('#info-left-1').match(/ä»·æ ¼[:ï¼]?\s*Â¥?\s*([\d.]+)/); 2332 if (mP) { cPrice = mP[1]; } 2333 } 2334 /* ç®ä»ï¼ä¼å åãå¦ä»ä¹ã段ï¼å»æãç®ä»ãæ¬å¤´ä¸é¡¶é¨ meta è¡ */ 2335 var cFull = t('#info-left-1').replace(/â/g, ' '); 2336 var mS = cFull.match(/å¦ä»ä¹\s*([\s\S]{8,320}?)(?:æä¹ç¨|$)/); 2337 var cDesc = (mS ? mS[1] : cFull).replace(/^ç®ä»\s*/, '').replace(/\s+/g, ' ').trim(); 2338 if (cDesc.length > 300) { cDesc = cDesc.slice(0, 297) + 'â¦'; } 2339 var cover = ''; 2340 var imgs = document.querySelectorAll('img'); 2341 for (var i = 0; i < imgs.length; i++) { 2342 if (/\/files\/course\//.test(imgs[i].src || '')) { cover = imgs[i].src; break; } 2343 } 2344 var course = { 2345 '@context': 'https://schema.org', 2346 '@type': 'Course', 2347 name: cName, 2348 description: cDesc || cName, 2349 provider: { '@type': 'Organization', name: 'è士靿°å¦', url: SITE + '/' } 2350 }; 2351 if (cover) { course.image = cover; } 2352 if (cPrice !== '') { 2353 course.offers = { 2354 '@type': 'Offer', 2355 price: cPrice, 2356 priceCurrency: 'CNY', 2357 availability: 'https://schema.org/InStock', 2358 url: url 2359 }; 2360 } 2361 course.audience = { '@type': 'EducationalAudience', educationalRole: 'student' }; 2362 course.inLanguage = 'zh-CN'; 2363 put('fsc-ld-course', course); 2364 } 2365 2366 /* ---------- ⢠Articleï¼æç« è¯¦æ é¡µï¼ ---------- */ 2367 function dateEl() { 2368 return el('.article-metas .date') || el('.date') || el('[class*="date"]') || el('time'); 2369 } 2370 function dateText() { 2371 var d = dateEl(); 2372 return d ? (d.textContent || d.innerText || '') : ''; 2373 }
2374 /* è§£ææ¥æï¼å ¼å®¹ã18 09æ 2026å¹´ãã2026å¹´09æ18æ¥ãã2026-09-18T10:00:00+08:00ã 2375 forceYearï¼DOM éæ¿ä¸å°å¹´ä»½æ¶ç±å®æ¹ API ä¼ å ¥çå®å¹´ä»½ 2376 æ 年份 â è¿å ''ï¼ç»ä¸çï¼ */ 2377 function parseDate(s, forceYear) { 2378 s = String(s || '').replace(/\s+/g, ' ').trim(); 2379 var y = forceYear 2380 || (s.match(/(20\d\d)\s*å¹´/) || [])[1] 2381 || (s.match(/(20\d\d)[-\/.]/) || [])[1] 2382 || (s.match(/\b(20\d\d)\b/) || [])[1] || ''; 2383 if (!y) { return ''; } 2384 var mo = (s.match(/(\d{1,2})\s*æ/) || [])[1] 2385 || (s.match(/[-\/.](\d{1,2})[-\/.]/) || [])[1] || ''; 2386 var dd = (s.match(/(\d{1,2})\s*æ¥/) || [])[1] 2387 || (s.match(/^(\d{1,2})(?:\s|$)/) || [])[1] 2388 || (s.match(/[-\/.](\d{1,2})(?:[T\s]|$)/) || [])[1] || ''; 2389 var out = y; 2390 if (mo) { out += '-' + ('0' + mo).slice(-2); } 2391 if (mo && dd) { out += '-' + ('0' + dd).slice(-2); } 2392 return out; 2393 } 2394 /* æè¦ï¼æç¡®åéé¾ï¼é¿å¼é¡µé¢é¡¶é¨ç»å½æç¤ºï¼æ§ç [class*="article"] p æ¾å½ä¸ <p>ç»å½</p>ï¼ */ 2395 function articleDesc() { 2396 var sels = ['.js-article-text', '.article-text', '.es-article-content', 2397 '[class*="article-content"]', '#detail-content .article-text']; 2398 for (var i = 0; i < sels.length; i++) { 2399 var e = el(sels[i]); 2400 if (!e) { continue; } 2401 var tx = (e.innerText || e.textContent || '').replace(/\s+/g, ' ').trim(); 2402 if (tx.length >= 60) { return tx.slice(0, 200); } 2403 } 2404 var md = String((document.querySelector('meta[name="description"]') || {}).content || '') 2405 .replace(/\s+/g, ' ').trim(); 2406 return md.slice(0, 200); 2407 } 2408 /* 宿¹ API å åºï¼ä» å½ DOM éçä¸å°å¹´ä»½æ¶æè¯·æ±ï¼ç»æå sessionStorageï¼ä¸æ¬¡ä¼è¯åªè¯·æ±ä¸æ¬¡ */ 2409 function apiYear(id, cb) { 2410 var C = 'fscSeoPubV1'; 2411 try { 2412 var c = JSON.parse(sessionStorage.getItem(C) || 'null'); 2413 if (c && c.t && (Date.now() - c.t) < 6 * 3600 * 1000 && c.m && c.m[id]) { cb(c.m[id]); return; } 2414 } catch (e) {} 2415 try { 2416 fetch('/api/articles?limit=500', { 2417 credentials: 'same-origin', 2418 headers: { 'Accept': 'application/vnd.edusoho.v2+json' } 2419 }).then(function (r) { return r.ok ? r.json() : null; }) 2420 .then(function (j) { 2421 if (!j || !j.data) { cb(''); return; } 2422 var m = {}, i; 2423 for (i = 0; i < j.data.length; i++) { 2424 var p = String(j.data[i].publishedTime || ''); 2425 if (p.length >= 4) { m[String(j.data[i].id)] = p.slice(0, 4); } 2426 } 2427 try { sessionStorage.setItem(C, JSON.stringify({ t: Date.now(), m: m })); } catch (e2) {} 2428 cb(m[id] || ''); 2429 }) 2430 .catch(function () { cb(''); }); 2431 } catch (e) { cb(''); } 2432 } 2433 function articleSchema(allowApi) { 2434 var aTitle = t('h1') || document.title.split('-')[0].trim(); 2435 var dtxt = dateText(); 2436 var aDate = parseDate(dtxt); 2437 var art = { 2438 '@context': 'https://schema.org', 2439 '@type': 'Article', 2440 headline: aTitle, 2441 author: { '@type': 'Person', name: 'è士é¯' }, 2442 publisher: { 2443 '@type': 'Organization', 2444 name: 'è士靿°å¦', 2445 logo: { '@type': 'ImageObject', url: 'https://www.xuetong.com/files/system/2026/09-17/1838499c1a54682586.png' } 2446 }, 2447 mainEntityOfPage: { '@type': 'WebPage', '@id': url }, 2448 inLanguage: 'zh-CN' 2449 }; 2450 var body = articleDesc(); 2451 if (body) { art.description = body; } 2452 if (aDate) { art.datePublished = aDate; } 2453 put('fsc-ld-article', art); 2454 2455 /* DOM çä¸å°å¹´ä»½ â 宿¹ API å åºï¼æ¿å°çå®å¹´ä»½åä¸ DOM çæ/æ¥æ¼å®æ´ï¼ */ 2456 if (!aDate && allowApi) { 2457 var mId = (path.match(/^\/article\/(\d+)/) || [])[1]; 2458 if (mId) { 2459 apiYear(mId, function (y) { 2460 if (!y) { return; } 2461 var full = parseDate(dtxt, y); 2462 if (!full) { return; } 2463 art.datePublished = full; 2464 put('fsc-ld-article', art); 2465 }); 2466 } 2467 } 2468 } 2469 2470 /* ---------- ⣠BreadcrumbListï¼å å®¹é¡µï¼ ---------- */ 2471 function breadcrumbSchema() { 2472 if (/^\/(goods\/show\/|course\/|article\/|page\/|course\/explore|classroom|vip)/.test(path)) { 2473 var items = [{ '@type': 'ListItem', position: 1, name: 'é¦é¡µ', item: SITE + '/' }]; 2474 var pos = 2; 2475 2476 /* ä¼å ï¼é¡µé¢å·²æé¢å å±ï¼æãå»ç©ºæ ¼ãå½ä¸ååå»éï¼åé¡µé¢ a/span æ··æä¼éå¤ï¼ */ 2477 var crumbEl = el('.breadcrumb') || el('[class*="breadcrumb"]') || el('[class*="crumb"]'); 2478 var names = [], seen = {}; 2479 if (crumbEl) { 2480 var kids = crumbEl.querySelectorAll('a, span, li'); 2481 for (var k = 0; k < kids.length; k++) { 2482 var tx = (kids[k].innerText || '').replace(/\s+/g, '').trim().replace(/^\/|\/$/g, ''); 2483 if (!tx || tx.length > 30 || /^[\/>»·â¢]+$/.test(tx)) { continue; } 2484 if (seen[tx]) { continue; } 2485 seen[tx] = 1; 2486 names.push(tx); 2487 } 2488 } 2489 /* é¢å å±ç¼ºå¤± â æè·¯å¾æ¨å¯¼ */ 2490 if (!names.length) {
2491 var seg = path.split('/').filter(Boolean); 2492 if (seg[0] === 'page') { 2493 names.push(t('h1') || '页é¢'); 2494 } else { 2495 var NAMEMAP = { goods: '课ç¨è¯¦æ ', course: '课ç¨', article: '黿¿æ¥', 2496 classroom: 'ç级', explore: 'å ¨é¨', vip: 'ç å¦å¹´å¡' }; 2497 for (var j = 0; j < seg.length; j++) { 2498 var nm = NAMEMAP[seg[j]]; 2499 if (nm === undefined) { nm = seg[j]; } 2500 if (nm && !seen[nm]) { seen[nm] = 1; names.push(nm); } 2501 } 2502 } 2503 } 2504 for (var n = 0; n < names.length && pos <= 6; n++) { 2505 if (names[n] === 'é¦é¡µ') { continue; } 2506 var li = { '@type': 'ListItem', position: pos, name: names[n] }; 2507 /* åªç»æ«çº§çå® URLï¼ä¸é´å±æ²¡æç URL æ¶å®å¯ä¸ç»ï¼é¿å ç¼é ï¼ */ 2508 if (n === names.length - 1) { li.item = SITE + path; } 2509 items.push(li); 2510 pos++; 2511 } 2512 if (items.length > 1) { 2513 put('fsc-ld-breadcrumb', { 2514 '@context': 'https://schema.org', 2515 '@type': 'BreadcrumbList', 2516 itemListElement: items 2517 }); 2518 } 2519 } 2520 } 2521 2522 function runAll(allowApi) { 2523 try { org(); } catch (e) {} 2524 try { if (isCourse) { courseSchema(); } } catch (e) {} 2525 try { if (isArticle) { articleSchema(allowApi); } } catch (e) {} 2526 try { breadcrumbSchema(); } catch (e) {} 2527 } 2528 2529 /* ---------- æ§è¡æ¶æºï¼çãå 容宿´ãè䏿¯ãå ç´ åå¨ã ---------- */ 2530 var MAX_TRY = 25; /* 25 à 400ms â 10 ç§ */ 2531 function ready() { 2532 if (isCourse) { 2533 /* 课ç¨é¡µå®æµï¼h1 / #info-left-1 / ä»·æ ¼ å¨ DOMContentLoaded åååæ¶å°±ç»ªï¼ 2534 ä»å å 容鍿§ï¼é²æªæ¥æ¹ç导è´è¯»å°åæå */ 2535 var info = t('#info-left-1'); 2536 return t('h1').length > 0 && (info.length >= 80 || t('.detail-right__price__price').length > 0); 2537 } 2538 if (isArticle) { 2539 /* â å ³é®ï¼å¿ é¡»æ 4 ä½å¹´ä»½æç®å®æ´ï¼å¹´ä»½ç±å«æ®µå¨ ~4.5s è¡¥å ¥ï¼ */ 2540 return t('h1').length > 0 && /20\d\d/.test(dateText()); 2541 } 2542 return true; 2543 } 2544 function boot(tries) { 2545 tries = tries || 0; 2546 /* 第ä¸éå è½ Organizationï¼ä¸ä¾èµæ£æï¼ï¼ä¿è¯ä»»ä½æ åµä¸é½æäº§åº */ 2547 try { org(); } catch (e) {} 2548 if (ready()) { runAll(false); return; } 2549 if (tries >= MAX_TRY) { runAll(true); return; } /* çä¸å°äºï¼æç« 页走 API å åº */ 2550 setTimeout(function () { boot(tries + 1); }, 400); 2551 } 2552 if (document.readyState === 'loading') { 2553 document.addEventListener('DOMContentLoaded', function () { boot(0); }); 2554 } else { 2555 boot(0); 2556 } 2557})(); 2558</script>
2558 2559<!-- FSC:P3-5:END --> 2560</head></div> 2561<!-- FSC:P3-4:BEGIN --> 2562<!-- è士靿°å¦ · é¦é¡µéæ°è®¾è®¡ï¼P3-4ï¼Â· 段ID fsc-home-redesign-css / fsc-home-redesign · 2026-09-19 --> 2563<style id="fsc-home-redesign-css"> 2564/* ============================================================================ 2565 è士靿°å¦ · é¦é¡µéæ°è®¾è®¡ï¼æä»¤å¡ P3-4 · 2026-09-19ï¼ 2566 段ID: fsc-home-redesign-css 2567 ---------------------------------------------------------------------------- 2568 å ¨é¨è§å以 body.homepage + .fsc-hrd åééå®ï¼ 2569 · body.homepage â åªå¨é¦é¡µçæï¼å ¶å®é¡µé¢é¶å½±å 2570 · .fsc-hrd åç¼ â ä¸ä¸ EduSoho 主é¢çéç¨ç±»ï¼.container/.btn/h1â¦ï¼å²çª 2571 å #content-container ä¸å é¤ï¼ä» å¨ body å ä¸ .fsc-hrd-on åéèï¼åéåªé廿è¿ä¸ªç±»ï¼ã 2572 åéï¼python xt_inject.py p34home revert 2573 ============================================================================ */ 2574.fsc-hrd, 2575.fsc-hrd * { box-sizing: border-box; } 2576.fsc-hrd { 2577 font-family: inherit; 2578 background: var(--fsc-cream, #FBF8F2); 2579 color: #1a1a1a; 2580 line-height: 1.7; 2581} 2582body.homepage.fsc-hrd-on #content-container { display: none !important; } 2583 2584.fsc-hrd .hrd-in { max-width: 1140px; margin: 0 auto; padding: 0 20px; } 2585.fsc-hrd img { max-width: 100%; border: 0; } 2586.fsc-hrd a { text-decoration: none; } 2587 2588/* ââ 1 é¦å± Hero ââ */ 2589.fsc-hrd .hrd-hero { 2590 background: linear-gradient(135deg, #0F392B 0%, #1a5c42 50%, #0F392B 100%); 2591 color: #FBF8F2; padding: 64px 0; position: relative; overflow: hidden; 2592} 2593.fsc-hrd .hrd-hero::before { 2594 content: ''; position: absolute; top: -100px; right: -100px; 2595 width: 400px; height: 400px; border-radius: 50%; 2596 background: radial-gradient(circle, rgba(184,137,61,.2) 0%, transparent 70%); 2597} 2598.fsc-hrd .hrd-hero-grid { 2599 display: grid; grid-template-columns: 1.2fr 1fr; gap: 50px; 2600 align-items: center; position: relative; z-index: 2; 2601} 2602.fsc-hrd .hrd-tag { 2603 display: inline-block; border: 1px solid #B8893D; color: #B8893D; 2604 background: rgba(184,137,61,.2); border-radius: 20px; 2605 padding: 6px 16px; font-size: 13px; letter-spacing: 1px; margin-bottom: 20px; 2606} 2607/* â Hero 主æ é¢ç¨ <h2 class="hrd-h1">ï¼ä¸æ¯ h1ï¼ï¼ 2608 P2-1 段ï¼fsc-seo-h1ï¼å·²å¨æ¯é¡µæ³¨å ¥ 1 个è§è§éèç h1 æ¿è½½é¡µé¢ä¸»æ é¢ï¼ 2609 æ¤å¤åç¨ h1 ä¼é æãå页两个 h1ããæ¹ç¨ h2 + 忬¾æ ·å¼ï¼è§è§ææå®å ¨ä¸è´ï¼ 2610 åæ¶ä¿ä½å ¨ç«ãæ¯é¡µæ°å¥½ 1 个 h1ãç SEO 约å®ã 2611 妿³¨ï¼fsc-typography 段æå ¨å± `h1,h2,h3{color:var(--fsc-green)}`ï¼ 2612 å æ¤æ·±è²åºä¸çæ é¢å¿ é¡»æ¾å¼å colorï¼å¦åä¼åææ·±ç»¿ç䏿¸ ã */ 2613.fsc-hrd .hrd-hero .hrd-h1 { 2614 font-size: 42px; font-weight: 800; line-height: 1.3; 2615 margin: 0 0 16px; color: #FBF8F2; padding: 0; border: 0; 2616} 2617.fsc-hrd .hrd-hero .hrd-h1 .gold { color: #B8893D; } 2618/* åçéè²å¼ºè°è¯ãå¿ é¡»åææ¾å¼è§åï¼ç«ç¹å ¨å±æ `h1,h2,h3{color:var(--fsc-green)}`ï¼ 2619 æ·±è²åºä¸ç强è°åè¥ä¸æ¾å¼æå®ï¼ä¼ç»§æ¿å°æ·±ç»¿èå ä¹çä¸è§ã */ 2620.fsc-hrd .gold { color: #B8893D; } 2621.fsc-hrd .hrd-sub { 2622 font-size: 17px; line-height: 1.8; margin: 0 0 28px; 2623 color: rgba(251,248,242,.8); 2624} 2625.fsc-hrd .hrd-ctas { display: flex; gap: 16px; margin-bottom: 30px; flex-wrap: wrap; } 2626.fsc-hrd .hrd-btn-1, 2627.fsc-hrd .hrd-btn-2 { 2628 display: inline-block; padding: 14px 32px; border-radius: 8px; 2629 font-size: 16px; font-weight: 600; transition: all .3s; line-height: 1.2; 2630} 2631.fsc-hrd .hrd-btn-1 { 2632 background: #B8893D; color: #fff; 2633 box-shadow: 0 4px 16px rgba(184,137,61,.4); 2634} 2635.fsc-hrd .hrd-btn-1:hover { background: #c99a4e; color: #fff; transform: translateY(-2px); } 2636.fsc-hrd .hrd-btn-2 { 2637 color: #FBF8F2; border: 1.5px solid rgba(251,248,242,.4); 2638} 2639.fsc-hrd .hrd-btn-2:hover { border-color: #B8893D; color: #B8893D; } 2640.fsc-hrd .hrd-stats { 2641 display: flex; gap: 40px; padding-top: 24px; 2642 border-top: 1px solid rgba(251,248,242,.15); 2643} 2644.fsc-hrd .hrd-num { font-size: 28px; font-weight: 700; color: #B8893D; } 2645.fsc-hrd .hrd-lab { font-size: 13px; color: rgba(251,248,242,.6); } 2646.fsc-hrd .hrd-hero-card { 2647 background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.15); 2648 border-radius: 16px; padding: 30px; text-align: center; 2649 -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); 2650} 2651.fsc-hrd .hrd-hc-title { font-size: 18px; font-weight: 600; margin-bottom: 8px; } 2652.fsc-hrd .hrd-hc-price { font-size: 42px; font-weight: 800; color: #B8893D; margin: 10px 0; } 2653.fsc-hrd .hrd-hc-price small { font-size: 16px; font-weight: 400; color: rgba(251,248,242,.6); } 2654.fsc-hrd .hrd-hc-desc { font-size: 13px; color: rgba(251,248,242,.7); margin-bottom: 16px; } 2655.fsc-hrd .hrd-hc-list { text-align: left; font-size: 13px; line-height: 2;
2656 color: rgba(251,248,242,.8); margin: 0; padding: 0; list-style: none; } 2657.fsc-hrd .hrd-hc-list li { list-style: none; padding-left: 20px; position: relative; } 2658.fsc-hrd .hrd-hc-list li::before { 2659 content: '\2713'; position: absolute; left: 0; color: #B8893D; font-weight: 700; 2660} 2661.fsc-hrd .hrd-hc-btn { 2662 display: inline-block; margin-top: 18px; padding: 10px 24px; border-radius: 8px; 2663 background: #B8893D; color: #fff; font-size: 14px; font-weight: 600; 2664} 2665.fsc-hrd .hrd-hc-btn:hover { background: #c99a4e; color: #fff; } 2666 2667/* ââ éç¨åºå ââ */ 2668.fsc-hrd .hrd-sec { padding: 58px 0; } 2669.fsc-hrd .hrd-head { text-align: center; margin-bottom: 38px; } 2670.fsc-hrd .hrd-sec-tag { 2671 display: inline-block; color: #B8893D; font-size: 13px; 2672 font-weight: 600; letter-spacing: 2px; margin-bottom: 8px; 2673} 2674.fsc-hrd .hrd-sec-title { 2675 font-size: 30px; font-weight: 700; color: #0F392B; 2676 margin: 0 0 10px; padding: 0; border: 0; line-height: 1.35; 2677} 2678.fsc-hrd .hrd-sec-desc { font-size: 15px; color: #888; margin: 0; } 2679 2680/* ââ 2 æ ¸å¿äº§åä¸å ¥å£ ââ */ 2681.fsc-hrd .hrd-products { background: #fff; } 2682.fsc-hrd .hrd-pgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; } 2683.fsc-hrd .hrd-pcard { 2684 background: #FBF8F2; border-radius: 16px; padding: 32px 28px; text-align: center; 2685 border: 2px solid transparent; transition: all .3s; 2686} 2687.fsc-hrd .hrd-pcard:hover { 2688 transform: translateY(-6px); border-color: #B8893D; 2689 box-shadow: 0 12px 32px rgba(15,57,43,.12); 2690} 2691.fsc-hrd .hrd-picon { 2692 width: 64px; height: 64px; border-radius: 16px; margin: 0 auto 18px; 2693 display: flex; align-items: center; justify-content: center; font-size: 28px; 2694 background: linear-gradient(135deg, #0F392B, #1a5c42); color: #FBF8F2; 2695} 2696.fsc-hrd .hrd-pcard:nth-child(2) .hrd-picon { background: linear-gradient(135deg, #B8893D, #d4a84f); } 2697.fsc-hrd .hrd-pcard:nth-child(3) .hrd-picon { background: linear-gradient(135deg, #3A6B55, #4a8068); } 2698.fsc-hrd .hrd-pname { font-size: 20px; font-weight: 700; color: #0F392B; margin-bottom: 8px; } 2699.fsc-hrd .hrd-pdesc { font-size: 14px; color: #666; margin-bottom: 16px; line-height: 1.7; } 2700.fsc-hrd .hrd-pprice { font-size: 22px; font-weight: 700; color: #B8893D; } 2701.fsc-hrd .hrd-pprice small { font-size: 13px; font-weight: 400; color: #999; } 2702 2703/* ââ 3 ç²¾é课ç¨ï¼å¨æï¼ââ */ 2704.fsc-hrd .hrd-courses { background: #FBF8F2; } 2705.fsc-hrd .hrd-cgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; } 2706.fsc-hrd .hrd-ccard { 2707 background: #fff; border-radius: 12px; overflow: hidden; 2708 box-shadow: 0 2px 12px rgba(15,57,43,.06); transition: all .3s; display: block; 2709} 2710.fsc-hrd .hrd-ccard:hover { transform: translateY(-4px); box-shadow: 0 8px 24px rgba(15,57,43,.12); } 2711.fsc-hrd .hrd-ccover { position: relative; background: #eef1ee; } 2712.fsc-hrd .hrd-ccover img { display: block; width: 100%; height: 168px; object-fit: cover; } 2713.fsc-hrd .hrd-badge { 2714 position: absolute; top: 12px; right: 12px; background: rgba(255,255,255,.92); 2715 color: #0F392B; padding: 4px 10px; border-radius: 10px; 2716 font-size: 11px; font-weight: 600; 2717} 2718.fsc-hrd .hrd-cinfo { padding: 16px 18px; } 2719.fsc-hrd .hrd-ctitle { 2720 font-size: 15px; font-weight: 600; color: #1a1a1a; line-height: 1.45; 2721 margin: 0 0 10px; min-height: 43px; 2722} 2723.fsc-hrd .hrd-cmeta { 2724 display: flex; justify-content: space-between; align-items: center; 2725 font-size: 13px; color: #888; 2726} 2727.fsc-hrd .hrd-cnum { color: #B8893D; font-weight: 600; } 2728 2729/* ââ 4 å¦éç级ï¼å¨æï¼ââ */ 2730.fsc-hrd .hrd-classes { background: #fff; } 2731.fsc-hrd .hrd-clgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; } 2732.fsc-hrd .hrd-clcard { 2733 display: block; background: #FBF8F2; border-radius: 12px; overflow: hidden; 2734 border: 1px solid #ece6da; transition: all .3s; 2735} 2736.fsc-hrd .hrd-clcard:hover { transform: translateY(-4px); border-color: #B8893D; 2737 box-shadow: 0 8px 24px rgba(15,57,43,.1); } 2738.fsc-hrd .hrd-clcover { display: block; width: 100%; height: 150px; object-fit: cover; background: #eef1ee; } 2739.fsc-hrd .hrd-clinfo { padding: 16px 18px; } 2740.fsc-hrd .hrd-cltitle { 2741 font-size: 15px; font-weight: 600; color: #1a1a1a; line-height: 1.45; margin: 0 0 10px; 2742} 2743.fsc-hrd .hrd-clmeta { font-size: 12.5px; color: #888; display: flex; gap: 14px; flex-wrap: wrap; } 2744 2745/* ââ 5 ç´æè¯¾ä»ç» ââ */ 2746.fsc-hrd .hrd-live { 2747 background: linear-gradient(135deg, #0F392B 0%, #1a5c42 100%); color: #FBF8F2; 2748} 2749.fsc-hrd .hrd-live-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 50px; align-items: center; } 2750.fsc-hrd .hrd-live h2 { 2751 font-size: 32px; font-weight: 700; margin: 0 0 16px; color: #FBF8F2; padding: 0; border: 0; 2752} 2753.fsc-hrd .hrd-live h2 .gold { color: #B8893D; } 2754.fsc-hrd .hrd-ldesc { font-size: 16px; line-height: 1.8; color: rgba(251,248,242,.8); margin: 0 0 24px; } 2755.fsc-hrd .hrd-lfeats { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 26px; } 2756.fsc-hrd .hrd-lfeat { display: flex; gap: 10px; align-items: flex-start; } 2757.fsc-hrd .hrd-lfico { 2758 flex-shrink: 0; width: 24px; height: 24px; margin-top: 2px; border-radius: 6px; 2759 background: rgba(184,137,61,.2); color: #B8893D; font-size: 12px; 2760 display: flex; align-items: center; justify-content: center; 2761} 2762.fsc-hrd .hrd-lftext { font-size: 14px; color: rgba(251,248,242,.85); } 2763.fsc-hrd .hrd-lcard { 2764 background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.15); 2765 border-radius: 16px; padding: 34px; text-align: center; 2766 -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); 2767} 2768.fsc-hrd .hrd-lctitle { font-size: 20px; font-weight: 600; margin-bottom: 12px; } 2769.fsc-hrd .hrd-lcprice { font-size: 34px; font-weight: 800; color: #B8893D; margin: 12px 0; } 2770.fsc-hrd .hrd-lcnote { font-size: 13px; color: rgba(251,248,242,.6); margin-bottom: 18px; } 2771.fsc-hrd .hrd-lcextra { font-size: 14px; line-height: 1.9; color: rgba(251,248,242,.72); } 2772 2773/* ââ 6 æç« æ¨èï¼å¨æï¼ââ */ 2774.fsc-hrd .hrd-articles { background: #fff; }
2775/* æç« æ¡æ°ç±åå°å³å®ï¼å®æµé¦é¡µ 4 æ¡ï¼ãç¨ auto-fit è®©åæ°èªéåºï¼ 2776 4 æ¡ â ä¸è¡ 4 åï¼3 æ¡ â ä¸è¡ 3 åï¼ä¸å¤ä¸å°ï¼ä¸ä¼åºç°ã1 å¼ å¡å¤é¶é¶å ä¸è¡ãã */ 2777.fsc-hrd .hrd-agrid { 2778 display: grid; gap: 24px; 2779 grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); 2780} 2781.fsc-hrd .hrd-acard { 2782 display: block; background: #FBF8F2; border-radius: 12px; padding: 22px; 2783 border: 1px solid #efe9dd; transition: all .3s; 2784} 2785.fsc-hrd .hrd-acard:hover { transform: translateY(-4px); border-color: #B8893D; 2786 box-shadow: 0 8px 24px rgba(15,57,43,.1); } 2787.fsc-hrd .hrd-acat { 2788 display: inline-block; background: rgba(184,137,61,.15); color: #B8893D; 2789 padding: 3px 10px; border-radius: 8px; font-size: 11px; font-weight: 600; margin-bottom: 10px; 2790} 2791.fsc-hrd .hrd-atitle { 2792 font-size: 15px; font-weight: 600; color: #1a1a1a; line-height: 1.5; 2793 margin: 0 0 8px; min-height: 45px; 2794} 2795.fsc-hrd .hrd-adate { font-size: 12px; color: #999; } 2796.fsc-hrd .hrd-amore { text-align: center; margin-top: 30px; } 2797.fsc-hrd .hrd-amore a { 2798 display: inline-block; padding: 11px 30px; border-radius: 8px; 2799 border: 1.5px solid #0F392B; color: #0F392B; font-size: 14px; font-weight: 600; 2800} 2801.fsc-hrd .hrd-amore a:hover { background: #0F392B; color: #FBF8F2; } 2802 2803/* ââ 7 å°¾å± CTA ââ */ 2804.fsc-hrd .hrd-cta { 2805 background: linear-gradient(135deg, #0F392B 0%, #1a5c42 100%); 2806 color: #FBF8F2; padding: 58px 0; text-align: center; 2807} 2808.fsc-hrd .hrd-cta h2 { 2809 font-size: 30px; font-weight: 700; margin: 0 0 12px; color: #FBF8F2; padding: 0; border: 0; 2810} 2811.fsc-hrd .hrd-cta p { font-size: 16px; color: rgba(251,248,242,.7); margin: 0 0 26px; } 2812.fsc-hrd .hrd-contact { font-size: 20px; font-weight: 600; color: #B8893D; } 2813.fsc-hrd .hrd-contact small { 2814 display: block; margin-top: 6px; font-size: 13px; font-weight: 400; 2815 color: rgba(251,248,242,.5); 2816} 2817.fsc-hrd .hrd-cta .hrd-btn-1 { margin-top: 22px; } 2818 2819/* ââ ååºå¼ ââ */ 2820@media (max-width: 768px) { 2821 .fsc-hrd .hrd-hero { padding: 44px 0; } 2822 .fsc-hrd .hrd-hero-grid, 2823 .fsc-hrd .hrd-live-grid { grid-template-columns: 1fr; gap: 30px; } 2824 .fsc-hrd .hrd-hero .hrd-h1 { font-size: 28px; } 2825 .fsc-hrd .hrd-sec { padding: 40px 0; } 2826 .fsc-hrd .hrd-pgrid, 2827 .fsc-hrd .hrd-cgrid, 2828 .fsc-hrd .hrd-clgrid, 2829 .fsc-hrd .hrd-agrid { grid-template-columns: 1fr; } 2830 .fsc-hrd .hrd-lfeats { grid-template-columns: 1fr; } 2831 .fsc-hrd .hrd-stats { gap: 20px; } 2832 .fsc-hrd .hrd-num { font-size: 22px; } 2833 .fsc-hrd .hrd-sec-title { font-size: 23px; } 2834 .fsc-hrd .hrd-live h2 { font-size: 24px; } 2835 .fsc-hrd .hrd-cta h2 { font-size: 23px; } 2836 .fsc-hrd .hrd-ccover img, 2837 .fsc-hrd .hrd-clcover { height: 150px; } 2838} 2839</style>
2840<script id="fsc-home-redesign"> 2841/* ============================================================================ 2842 è士靿°å¦ · é¦é¡µ DOM éç»ï¼æä»¤å¡ P3-4 · 2026-09-19ï¼ 2843 段ID: fsc-home-redesign 2844 ---------------------------------------------------------------------------- 2845 ç®æ ï¼æ EduSoho é»è®¤é¦é¡µï¼è½®æ + æ¨è课ç¨ä¸¤æ ï¼éç»ä¸ºåçå 7 åºåå¸å±ã 2846 卿å å®¹å ¨é¨ç°è¯»ç°æ¸²æï¼ä¸ç¡¬ç¼ç ï¼ 2847 · ç²¾éè¯¾ç¨ â li.es-course-list ï¼æ é¢/å°é¢/æ¥åæ°/龿¥ï¼ 2848 · å¦éç级 â ul.home-class-list > li ï¼æ é¢/å°é¢/å¦åæ°/课æ°/龿¥ï¼ 2849 · æç« æ¨è â .es-box.news li ï¼åç±»/æ é¢/æ¥æ/龿¥ï¼ 2850 å #content-container ä¸å é¤ï¼åªå¨ body å .fsc-hrd-on åç± CSS éèï¼å«è½®æï¼ã 2851 â æ§è¡æ¶æºï¼éè¯é¸é¨ï¼çä¸å¤å¨æå 容é½äºåéç»ï¼é²éªçåæ³æ¯ãç¦»å±æå»º â 2852 䏿¬¡æ§æå ¥ â å ç±»ãå¨åä¸å¸§å®æï¼ä¸å éèåå¡«å 容ã 2853 åéï¼python xt_inject.py p34home revert 2854 ============================================================================ */ 2855(function () { 2856 'use strict'; 2857 if (window.__fscHomeRd) { return; } 2858 window.__fscHomeRd = 1; 2859 2860 /* ââ åªå¨é¦é¡µçæ ââ */ 2861 function isHome() { 2862 var p = location.pathname; 2863 return (p === '/' || p === '/index' || p === '/index.php') && 2864 document.body && document.body.className.indexOf('homepage') >= 0; 2865 } 2866 if (!isHome()) { return; } 2867 2868 function esc(s) { 2869 return String(s == null ? '' : s) 2870 .replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') 2871 .replace(/"/g, '"').replace(/'/g, '''); 2872 } 2873 function txt(e) { return e ? (e.innerText || e.textContent || '').replace(/\s+/g, ' ').trim() : ''; } 2874 function q(root, sel) { return root ? root.querySelector(sel) : null; } 2875 function qa(root, sel) { return root ? Array.prototype.slice.call(root.querySelectorAll(sel)) : []; } 2876 2877 /* ââ ä»åæ DOM éééå¨ææ°æ® ââ */ 2878 2879 /* â 为ä»ä¹è¯¾ç¨å¡ç没æä»·æ ¼ï¼ 2880 宿µ â é¦é¡µ li.es-course-list éåªæ a/img/h3/.student-numï¼**没æä»·æ ¼å ç´ **ï¼ 2881 â¡å ¬å¼æ¥å£ /api/courses è¿å {"code":500,"message":"API Tokenä¸åå¨ï¼"} 2882 ï¼éåå° Tokenï¼å端æ¿ä¸å°ï¼ã 2883 æä»¥å¡çå±ç¤ºãæ¥åæ° + æ¥ç详æ ãï¼ä¸æ¾ç¤ºä»·æ ¼ ââ 硬ç¼ç ä»·æ ¼ä¼ä¸åå°è±èï¼ 2884 è¿åæä»¤å¡æ³¨æäºé¡¹ #9ï¼ä¸ç¡¬ç¼ç ä¸å¡äºå®ï¼ã */ 2885 function pickCourses() { 2886 var out = []; 2887 qa(document, 'li.es-course-list').forEach(function (li) { 2888 var a = q(li, 'a[href]'); 2889 var im = q(li, 'img'); 2890 var h3 = q(li, 'h3'); 2891 var title = txt(h3); 2892 if (!title || !a) { return; } 2893 out.push({ 2894 title: title, 2895 href: a.getAttribute('href') || '#', 2896 img: im ? (im.getAttribute('src') || im.getAttribute('data-echo') || '') : '', 2897 num: txt(q(li, '.student-num')) 2898 }); 2899 }); 2900 return out; 2901 } 2902 2903 function pickClasses() { 2904 var out = []; 2905 qa(document, 'ul.home-class-list > li').forEach(function (li) { 2906 var a = q(li, 'a[href]'); 2907 var im = q(li, 'img'); 2908 var t = q(li, '.class-title'); 2909 var title = txt(t); 2910 if (!title || !a) { return; } 2911 var m = []; 2912 var stu = txt(q(li, '.class-student')); 2913 var cnt = txt(q(li, '.course-num')); 2914 var tea = txt(q(li, '.class-teacher .text-color')) || txt(q(li, '.class-teacher')); 2915 /* å 䏿æ ç¾ï¼`.class-student` çææ¬åªæ¯ä¸ä¸ªæ°åï¼å¾æ +æ°åï¼ï¼ 2916 å ç§ç§ä¸ä¸ªã2ã读è ä¸ç¥éæ¯ä»ä¹ï¼æä»¥è¡¥ãå¦åãã */ 2917 if (tea) { m.push('å¸èµ ' + tea); } 2918 if (stu) { m.push('å¦å ' + stu); } 2919 if (cnt) { m.push(cnt); } 2920 out.push({ 2921 title: title, 2922 href: a.getAttribute('href') || '#', 2923 img: im ? (im.getAttribute('src') || im.getAttribute('data-echo') || '') : '', 2924 metas: m 2925 }); 2926 }); 2927 return out; 2928 } 2929 2930 function pickArticles() { 2931 var out = []; 2932 qa(document, '.es-box.news li').forEach(function (li) { 2933 var a = q(li, 'a[href]'); 2934 if (!a) { return; } 2935 /* åç±»å¨å模æ¿éå¸¦æ¹æ¬å·ï¼å¦ã[æå¦æ¹æ³]ãï¼ã
2935å¾½ç« æ¬èº«å·²æåºè²ï¼ 2936 åå¥ä¸å±æ¹æ¬å·å¾å°å¦ï¼å 奿ã */ 2937 var cat = txt(q(a, 'span')).replace(/^[\s\[ï¼»ã]+|[\s\]ï¼½ã]+$/g, ''); 2938 var title = txt(a).replace(txt(q(a, 'span')), '').trim(); 2939 if (!title) { title = txt(a); } 2940 out.push({ 2941 title: title, 2942 cat: cat, 2943 href: a.getAttribute('href') || '#', 2944 date: txt(q(li, 'em')) 2945 }); 2946 }); 2947 return out; 2948 } 2949 2950 /* ââ æ¸²æ ââ */ 2951 2952 function courseCards(list) { 2953 return list.map(function (c) { 2954 var badge = /å è´¹/.test(c.title) ? '<span class="hrd-badge">å è´¹ä½éª</span>' : ''; 2955 var cover = c.img 2956 ? '<img src="' + esc(c.img) + '" alt="' + esc(c.title) + '" loading="lazy">' 2957 : ''; 2958 return '<a class="hrd-ccard" href="' + esc(c.href) + '">' + 2959 '<div class="hrd-ccover">' + cover + badge + '</div>' + 2960 '<div class="hrd-cinfo">' + 2961 '<h3 class="hrd-ctitle">' + esc(c.title) + '</h3>' + 2962 '<div class="hrd-cmeta">' + 2963 '<span>' + (c.num ? esc(c.num) : 'å½æè¯¾') + '</span>' + 2964 '<span class="hrd-cnum">æ¥çè¯¦æ ›</span>' + 2965 '</div>' + 2966 '</div></a>'; 2967 }).join(''); 2968 } 2969 2970 function classCards(list) { 2971 return list.map(function (c) { 2972 var cover = c.img 2973 ? '<img class="hrd-clcover" src="' + esc(c.img) + '" alt="' + esc(c.title) + '" loading="lazy">' 2974 : ''; 2975 var metas = (c.metas || []).map(function (m) { 2976 return '<span>' + esc(m) + '</span>'; 2977 }).join(''); 2978 return '<a class="hrd-clcard" href="' + esc(c.href) + '">' + cover + 2979 '<div class="hrd-clinfo">' + 2980 '<h3 class="hrd-cltitle">' + esc(c.title) + '</h3>' + 2981 '<div class="hrd-clmeta">' + metas + '</div>' + 2982 '</div></a>'; 2983 }).join(''); 2984 } 2985 2986 function articleCards(list) { 2987 return list.map(function (a) { 2988 return '<a class="hrd-acard" href="' + esc(a.href) + '">' + 2989 (a.cat ? '<span class="hrd-acat">' + esc(a.cat) + '</span>' : '') + 2990 '<h3 class="hrd-atitle">' + esc(a.title) + '</h3>' + 2991 '<div class="hrd-adate">' + esc(a.date) + '</div>' + 2992 '</a>'; 2993 }).join(''); 2994 } 2995 2996 function buildHTML(courses, classes, articles) { 2997 return '' + 2998 /* 1 é¦å± Hero */ 2999 '<section class="hrd-hero">' + 3000 '<div class="hrd-in"><div class="hrd-hero-grid">' + 3001 '<div>' + 3002 '<div class="hrd-tag">è士靿°å¦ · å¦éå¨çº¿</div>' + 3003 '<h2 class="hrd-h1">å¦ä¼ï¼ä¸æ¯å¦è¿<br><span class="gold">䏿³¨æ°å¦è¿ä¸ä»¶äº</span></h2>' + 3004 '<p class="hrd-sub">166 é¨å½æè¯¾ + 10 个æå ç + èèå¸ç´æè¯¾ï¼è¦çå°å¦å°åä¸å ¨å¦æ®µã' + 3005 'ç²¾ç¡®å®¡é¢ Â· ç¬ç«æè · ç²¾ç»è®¡ç® · è§è书åã</p>' + 3006 '<div class="hrd-ctas">' + 3007 '<a class="hrd-btn-1" href="/vip/">å¼éç å¦å¹´å¡</a>' + 3008 '<a class="hrd-btn-2" href="/course/explore">æµè§å ¨é¨è¯¾ç¨</a>' + 3009 '</div>' + 3010 '<div class="hrd-stats">' + 3011 '<div><div class="hrd-num">166</div><div class="hrd-lab">é¨å½æè¯¾ç¨</div></div>' + 3012 '<div><div class="hrd-num">10</div><div class="hrd-lab">个æå ç级</div></div>' + 3013 '<div><div class="hrd-num">12</div><div class="hrd-lab">人å°çç´æè¯¾</div></div>' + 3014 '</div>' + 3015 '</div>' + 3016 '<div>' + 3017 '<div class="hrd-hero-card">' + 3018 '<div class="hrd-hc-title">ç å¦å¹´å¡</div>' + 3019 '<div class="hrd-hc-price">¥1,499<small> / å¹´</small></div>' + 3020 '<div class="hrd-hc-desc">å ¨ç« 166 é¨è¯¾ + 10 个çï¼ä¸å¹´é便å¦</div>' + 3021 '<ul class="hrd-hc-list">' + 3022 '<li>166 鍿°å¦è¯¾å ¨é¨å è´¹</li>' + 3023 '<li>10 个æå çå ¨é¨å å«</li>' + 3024 '<li>æ°è¯¾ä¸çº¿èªå¨å å«</li>' + 3025 '<li>åå¤çï¼ä¸é次æ°</li>' + 3026 '<li>æåæ¯å¤©çº¦ ¥4.1</li>' + 3027 '</ul>' + 3028 '<a class="hrd-hc-btn" href="/vip/">æ¥çå¹´å¡è¯¦æ </a>' + 3029 '</div>' + 3030 '</div>' + 3031 '</div></div>' + 3032 '</section>' + 3033 3034 /* 2 æ ¸å¿äº§åä¸å ¥å£ */ 3035 '<section class="hrd-sec hrd-products">' + 3036 '<div class="hrd-in">' + 3037 '<div class="hrd-head">' + 3038 '<div class="hrd-sec-tag">CORE PRODUCTS</div>' + 3039 '<h2 class="hrd-sec-title">ä¸ç§å¦ä¹ æ¹å¼ï¼æ»æä¸ç§é忍</h2>' + 3040 '<p class="hrd-sec-desc">ä»èªä¸»å¦ä¹ å°å°çç´æï¼è¦çä¸åéæ±åé¢ç®</p>' + 3041 '</div>' + 3042 '<div class="hrd-pgrid">' + 3043 '<div class="hrd-pcard">' + 3044 '<div class="hrd-picon">🎓</div>' + 3045 '<div class="hrd-pname">ç å¦å¹´å¡</div>' + 3046 '<div class="hrd-pdesc">å ¨ç« 166 é¨è¯¾ + 10 个çï¼ä¸å¹´ä¸é次é便å¦ï¼æ§ä»·æ¯æé«</div>' + 3047 '<div class="hrd-pprice">¥1,499<small> / å¹´</small></div>' + 3048 '</div>' + 3049 '<div class="hrd-pcard">' + 3050 '<div class="hrd-picon">📺</div>' + 3051 '<div class="hrd-pname">
3051èèå¸ç´æè¯¾</div>' + 3052 '<div class="hrd-pdesc">满ç 12 人å°çï¼æ¯å¨åºå®ä¸æ¬¡ï¼æ¯è齿忾ï¼äºå¨æ§æå¼º</div>' + 3053 '<div class="hrd-pprice">å¨è¯¢èèå¸</div>' + 3054 '</div>' + 3055 '<div class="hrd-pcard">' + 3056 '<div class="hrd-picon">📚</div>' + 3057 '<div class="hrd-pname">å课 / åç</div>' + 3058 '<div class="hrd-pdesc">åªæ³è¡¥æä¸åï¼åä¹°ä¸é¨è¯¾æä¸ä¸ªçï¼ç²¾åè§£å³é®é¢</div>' + 3059 '<div class="hrd-pprice">¥129<small> èµ·</small></div>' + 3060 '</div>' + 3061 '</div>' + 3062 '</div>' + 3063 '</section>' + 3064 3065 /* 3 ç²¾é课ç¨ï¼å¨æï¼ */ 3066 (courses.length ? 3067 '<section class="hrd-sec hrd-courses">' + 3068 '<div class="hrd-in">' + 3069 '<div class="hrd-head">' + 3070 '<div class="hrd-sec-tag">SELECTED COURSES</div>' + 3071 '<h2 class="hrd-sec-title">æ¨è课ç¨</h2>' + 3072 '<p class="hrd-sec-desc">å å è´¹ä½éªï¼åå³å®è¦ä¸è¦ç³»ç»å¦</p>' + 3073 '</div>' + 3074 '<div class="hrd-cgrid">' + courseCards(courses) + '</div>' + 3075 '</div>' + 3076 '</section>' : '') + 3077 3078 /* 4 å¦éç级ï¼å¨æï¼ */ 3079 (classes.length ? 3080 '<section class="hrd-sec hrd-classes">' + 3081 '<div class="hrd-in">' + 3082 '<div class="hrd-head">' + 3083 '<div class="hrd-sec-tag">PACKAGED CLASSES</div>' + 3084 '<h2 class="hrd-sec-title">å¦éç级</h2>' + 3085 '<p class="hrd-sec-desc">æå¦ææä½ç³»æå ï¼è·çç级èå¥èµ°</p>' + 3086 '</div>' + 3087 '<div class="hrd-clgrid">' + classCards(classes) + '</div>' + 3088 '<div class="hrd-amore"><a href="/classroom/explore">æ¥çå ¨é¨ç级 ›</a></div>' + 3089 '</div>' + 3090 '</section>' : '') + 3091 3092 /* 5 ç´æè¯¾ä»ç» */ 3093 '<section class="hrd-sec hrd-live">' + 3094 '<div class="hrd-in"><div class="hrd-live-grid">' + 3095 '<div>' + 3096 '<div class="hrd-sec-tag" style="color:#B8893D;">LIVE CLASS</div>' + 3097 '<h2>è士é¯ç´æè¯¾<br><span class="gold">满ç 12 人 · æ¯å¨åºå®ä¸æ¬¡</span></h2>' + 3098 '<p class="hrd-ldesc">ä¸åäºå½æè¯¾çèªä¸»å¦ä¹ ï¼ç´æè¯¾æ¯çæ£çãé¢å¯¹é¢ãæå¦ã' + 3099 'èèå¸äº²èªæè¯¾ï¼å®æ¶äºå¨ççï¼æ¯è齿忾å¯åå¤è§çã</p>' + 3100 '<div class="hrd-lfeats">' + 3101 '<div class="hrd-lfeat"><div class="hrd-lfico">✓</div>' + 3102 '<div class="hrd-lftext">满ç 12 人å°çï¼å ³æ³¨åº¦é«</div></div>' + 3103 '<div class="hrd-lfeat"><div class="hrd-lfico">✓</div>' + 3104 '<div class="hrd-lftext">æ¯å¨åºå®æ¶é´ï¼å »æå¦ä¹ ä¹ æ¯</div></div>' + 3105 '<div class="hrd-lfeat"><div class="hrd-lfico">✓</div>' + 3106 '<div class="hrd-lftext">宿¶äºå¨ççï¼é®é¢ä¸è¿å¤</div></div>' + 3107 '<div class="hrd-lfeat"><div class="hrd-lfico">✓</div>' + 3108 '<div class="hrd-lftext">æ¯è齿忾ï¼å¯åå¤è§ç</div></div>' + 3109 '</div>' + 3110 '<a class="hrd-btn-1" href="/page/liveclass">æ¥çç´æè¯¾</a>' + 3111 '</div>' + 3112 '<div class="hrd-lcard">' + 3113 '<div class="hrd-lctitle">è士é¯ç´æè¯¾</div>' + 3114 '<div class="hrd-lcprice">å颿é</div>' + 3115 '<div class="hrd-lcnote">满ç 12 人ï¼éæåé¢çº¦</div>' + 3116 '<div class="hrd-lcextra">å°å¦å年级åæå¼ç<br>å ·ä½æ¶é´åè´¹ç¨è¯·å¨è¯¢èèå¸</div>' + 3117 '</div>' + 3118 '</div></div>' + 3119 '</section>' + 3120 3121 /* 6 æç« æ¨èï¼å¨æï¼ */ 3122 (articles.length ? 3123 '<section class="hrd-sec hrd-articles">' + 3124 '<div class="hrd-in">' + 3125 '<div class="hrd-head">' + 3126 '<div class="hrd-sec-tag">TEACHING NOTES</div>' + 3127 '<h2 class="hrd-sec-title">æå¦æ¹æ³ · 黿¿æ¥</h2>' + 3128 '<p class="hrd-sec-desc">æå¦ç»éªå享ï¼å¸®æ¨æ´ææ°å¦æè²</p>' + 3129 '</div>' + 3130 '<div class="hrd-agrid">' + articleCards(articles) + '</div>' + 3131 '<div class="hrd-amore"><a href="/article">æ¥çå ¨é¨æç« ›</a></div>' + 3132 '</div>' + 3133 '</section>' : '') + 3134 3135 /* 7 å°¾å± CTA */ 3136 '<section class="hrd-cta">' + 3137 '<div class="hrd-in">' + 3138 '<h2>å¼å§å©åçæ°å¦å¦ä¹ 乿 </h2>' + 3139 '<p>
3139166 é¨è¯¾ + 10 个ç + èèå¸ç´æè¯¾ï¼æ»æä¸ç§é忍çå©å</p>' + 3140 '<div class="hrd-contact">èèå¸ï¼183-1075-0509ï¼å¾®ä¿¡åçµè¯ï¼' + 3141 '<small>微信 / é¶è¡è½¬è´¦åå¯ï¼æ¶å°åç«å³å¼éï¼å ¨ç¨å åé</small>' + 3142 '</div>' + 3143 '<a class="hrd-btn-1" href="/course/explore">å¼å§é课</a>' + 3144 '</div>' + 3145 '</section>'; 3146 } 3147 3148 /* ââ æ§è¡ï¼åæ¥é¦æ + éè¯é¸é¨ + åå忢 ââ */ 3149 var MAX_TRY = 30; /* 30 à 200ms â 6 ç§ */ 3150 function mount() { 3151 if (document.getElementById('fscHomeRedesign')) { return true; } 3152 var cc = document.getElementById('content-container'); 3153 if (!cc) { return false; } 3154 var wrap = cc.parentNode; /* ä¸åæ» .es-wrapï¼ç¨çå®ç¶èç¹ */ 3155 if (!wrap) { return false; } 3156 3157 var courses = pickCourses(); 3158 var classes = pickClasses(); 3159 var articles = pickArticles(); 3160 /* å 容é¸é¨ï¼ä¸å¤å¨æå 容ä¸å¤é½æ²¡éå°å°±ä¸æè½½ï¼é¿å 渲æåºç©ºåºåï¼ */ 3161 if (!courses.length && !classes.length && !articles.length) { return false; } 3162 3163 var box = document.createElement('div'); 3164 box.className = 'fsc-hrd'; 3165 box.id = 'fscHomeRedesign'; 3166 box.innerHTML = buildHTML(courses, classes, articles); /* ç¦»å±æå»º */ 3167 3168 wrap.insertBefore(box, cc); /* 䏿¬¡æ§æå ¥ */ 3169 document.body.classList.add('fsc-hrd-on'); /* åä¸å¸§å éèåå 容 â æ ä¸é´æ */ 3170 return true; 3171 } 3172 3173 function safeMount() { 3174 try { return mount(); } catch (e) { return false; } 3175 } 3176 3177 function boot(tries) { 3178 tries = tries || 0; 3179 if (safeMount() || tries >= MAX_TRY) { return; } 3180 setTimeout(function () { boot(tries + 1); }, 200); 3181 } 3182 3183 /* â é²éªççå ³é®ï¼ 3184 宿µæ¬æ®µæ³¨å ¥å 容ä½äºé¦é¡µ HTML ç 51% å¤ï¼æ£æä¸é¡µèä¹åï¼ï¼ 3185 æµè§å¨è§£æå°è¿éæ¶ #content-containerã课ç¨/ç级/èµè®¯å¡çé½å·²å¨ DOM ä¸ï¼ 3186 æä»¥ã忥æè½½ä¸æ¬¡ãââæè½½ä¸é¦æ¬¡ç»å¶è½å¨åä¸å¸§ï¼æ§å¸å±å ä¹ä¸ä¼é²é¢ã 3187 ä¸ä¸æ¨¡æ¿æ¹å¨å¯¼è´å°æªå°±ç»ªï¼åéåå° 200ms éè¯é¸é¨ï¼ç弿¥æ¸²æï¼ã */ 3188 if (!safeMount()) { 3189 if (document.readyState === 'loading') { 3190 document.addEventListener('DOMContentLoaded', function () { boot(0); }); 3191 } else { 3192 boot(0); 3193 } 3194 } 3195})(); 3196</script>
3196 3197<!-- FSC:P3-4:END --> 3198 3199 3200 </div> 3201 </div> 3202 <div class="text-gray " data-role="default-foot-bar" id="license-footer"> 3203 <div class="container clearfix"> 3204 3205 3206 </div> 3207 </div> 3208</div> 3209 3210<div class="fixed-bar"> 3211 <a href="/mobile/" class="mobile-badge-container"> 3212 <span class="iconfont icon-mobile"></span> 3213 <small class="badge"> </small> 3214 </a> 3215 </div> 3216 3217 </div> 3218 3219 3220 3221 3222 3223 3224 <div id="login-modal" class="modal" data-url="/login/ajax"></div> 3225 <div id="modal" class="modal"></div> 3226 <div id="attachment-modal" class="modal"></div> 3227 3228 3229 3230 3231 3232 3233
3233<script> 3234 if (typeof app === 'undefined') { 3235 var app = {}; 3236 } 3237 app.version = '26.3.6'; 3238 app.httpHost = 'https://xuetong.com'; 3239 app.basePath = 'https://xuetong.com'; 3240 app.theme = 'graceful'; 3241 3242 3243 var CLOUD_FILE_SERVER = ""; 3244 3245 app.config = {"api":{"weibo":{"key":""},"qq":{"key":"101196906"},"douban":{"key":""},"renren":{"key":""}},"loading_img_path":"\/assets\/img\/default\/loading.gif?version=26.3.6"}; 3246 3247 app.arguments = {}; 3248 3249 app.scripts = null; 3250 3251 app.fileSingleSizeLimit = 10; 3252 app.uploadUrl = '/file/upload'; 3253 app.imgCropUrl = '/file/img/crop'; 3254 app.lessonCopyEnabled = '0'; 3255 app.cloudSdkBaseUri = ''; 3256 app.cloudDisableLogReport = 0; 3257 app.cloudPlayerSdkUrl = '//service-cdn.qiqiuyun.net/js-sdk/sdk-v1.js?17913833'; 3258 app.cloudPlayServer = 'play1.qiqiuyun.net'; 3259 app.cloudVideoPlayerSdkUrl = '//service-cdn.qiqiuyun.net/js-sdk-v2/sdk-v1.js?17913833'; 3260 app.cloudOldUploaderSdkUrl = '//service-cdn.qiqiuyun.net/js-sdk/uploader/sdk-v1.js?17913833'; 3261 app.cloudOldDocumentSdkUrl = '//service-cdn.qiqiuyun.net/js-sdk/document-player/v7/viewer.html?17913833'; 3262 app.aiApiServer = ''; 3263 app.aiSignalServer = ''; 3264 app.lang = 'zh_CN'; 3265 app.mainColor = 'default'; 3266</script>
3266 3267
3268<script src="/translations/translator.min.js?version=26.3.6"></script>
3268 3269 3270
3270<script src="/translations/zh_CN.js?version=26.3.6"></script>
3270 3271 3272
3272<script src="/static-dist/libs/base.js?version=26.3.6"></script>
3272 3273
3273<script src="/static-dist/app/js/common.js?version=26.3.6"></script>
3273 3274
3274<script src="/static-dist/vue3/js/common.js?version=26.3.6"></script>
3274 3275
3275<script src="/static-dist/app/js/main.js?version=26.3.6"></script>
3275 3276
3276<script src="/static-dist/gracefultheme/js/main.js?version=1.7.15"></script>
3276 3277
3277<script src="/static-dist/libs/bootstrap-datetimepicker.js?version=26.3.6"></script>
3277 3278
3278<script src="/static-dist/libs/jquery-validation.js?version=26.3.6"></script>
3278 3279
3279<script src="/static-dist/app/js/auth/register/index.js?version=26.3.6"></script>
3279 3280
3281<script type="text/javascript"> 3282 window.seajsBoot && window.seajsBoot(); 3283</script>
3283 3284 3285</body> 3286</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.