main.scss 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877
  1. @use "./fix.scss";
  2. @use "sass:list";
  3. @use "sass:math";
  4. /* 基础样式 */
  5. :root {
  6. --color-primary: #db5f46;
  7. --color-secondary: #ac361e;
  8. --color-text: #333;
  9. --color-text-light: #fff;
  10. --color-text-dark: #000;
  11. --color-text-secondary: #888;
  12. --color-border: #ddd;
  13. --color-box: #f9fafb;
  14. --color-box-inset: #e5e7eb;
  15. --color-box-hover: #c4a29b;
  16. --color-mask: rgba(0, 0, 0, 0.4);
  17. --swiper-navigation-color: var(--color-primary);
  18. --swiper-pagination-color: var(--color-primary);
  19. --container-width: 1250px;
  20. --selection-max-width: 1250px;
  21. }
  22. @font-face {
  23. font-family: 'PingFang SC';
  24. src: url('@/assets/fonts/PingFang Regular.ttf') format('truetype');
  25. }
  26. @font-face {
  27. font-synthesis: none;
  28. font-family: "STSongtiSC";
  29. src: url('@/assets/fonts/STSongti-SC-Black.woff2') format('woff2');
  30. }
  31. html, body {
  32. position: relative;
  33. color: var(--color-text);
  34. line-height: 1.6;
  35. font-family: 'PingFang SC', 'STSongtiSC', "Microsoft YaHei", sans-serif !important;
  36. margin: 0;
  37. padding: 0;
  38. }
  39. a {
  40. transition: color 0.3s;
  41. text-decoration: none;
  42. color: var(--color-text);
  43. &:hover {
  44. color: var(--color-primary);
  45. }
  46. }
  47. ul {
  48. list-style: none;
  49. }
  50. /* 头部样式 */
  51. header {
  52. padding: 15px 0;
  53. background-color: #fff;
  54. box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  55. .inner {
  56. display: flex;
  57. flex-direction: row;
  58. justify-content: space-between;
  59. align-items: center;
  60. max-width: var(--container-width);
  61. margin: 0 auto;
  62. }
  63. .logo {
  64. font-family: 'STSongtiSC', "Microsoft YaHei", sans-serif;
  65. font-size: 24px;
  66. font-weight: bold;
  67. color: var(--color-primary);
  68. }
  69. .mobile-menu-toggle {
  70. display: none;
  71. width: 60px;
  72. height: 60px;
  73. }
  74. }
  75. button {
  76. display: flex;
  77. align-items: center;
  78. justify-content: center;
  79. border: none;
  80. background-color: var(--color-primary);
  81. color: var(--color-text-light);
  82. &:hover {
  83. background-color: var(--color-secondary);
  84. }
  85. & i,svg,.iconify {
  86. color: var(--color-text-light);
  87. }
  88. &.bordered {
  89. color: var(--color-text);
  90. background-color: #f3f3f3;
  91. background-repeat: no-repeat;
  92. background-size: 100% 100%;
  93. /* 九宫格切图实现 - 防止图片变形 */
  94. border-image: url('@/assets/images/button-deactive.png') 25 25 25 25 stretch;
  95. border-width: 10px;
  96. border-style: solid;
  97. background-clip: padding-box;
  98. padding: 0 16px;
  99. margin-right: 8px;
  100. cursor: pointer;
  101. font-size: 14px;
  102. font-family: "STSongtiSC";
  103. box-sizing: border-box;
  104. &:hover,
  105. &.active {
  106. color: var(--color-text-light);
  107. background-color: #d74a2e;
  108. border-image: url('@/assets/images/button-active.png') 25 25 25 25 stretch;
  109. }
  110. }
  111. }
  112. .bordered-input {
  113. color: var(--color-text);
  114. border-style: solid;
  115. border-width: 10px;
  116. border-image: url('@/assets/images/button-deactive.png') 25 25 25 25 stretch;
  117. input {
  118. background-color: #f3f3f3;
  119. border: none;
  120. font-size: 15px;
  121. font-family: "STSongtiSC";
  122. color: var(--color-text);
  123. width: 220px;
  124. &:focus {
  125. outline: none;
  126. }
  127. }
  128. }
  129. /* 导航样式 */
  130. nav.main-nav {
  131. position: relative;
  132. .nav-list {
  133. display: flex;
  134. justify-content: center;
  135. align-items: center;
  136. margin-bottom: 0;
  137. }
  138. .nav-item {
  139. position: relative;
  140. &.active a {
  141. font-weight: bold;
  142. color: var(--color-primary);
  143. }
  144. }
  145. a {
  146. display: block;
  147. color: var(--color-text);
  148. padding: 12px 10px;
  149. font-weight: 500;
  150. white-space: nowrap;
  151. transition: background-color 0.3s;
  152. &:hover, &:active {
  153. color: var(--color-primary);
  154. }
  155. }
  156. }
  157. .search-bar {
  158. position: relative;
  159. button {
  160. width: 60px;
  161. height: 60px;
  162. i,svg,.iconify {
  163. color: var(--color-text-light);
  164. }
  165. }
  166. input {
  167. position: absolute;
  168. right: 0;
  169. padding: 8px 15px;
  170. border: 1px solid var(--color-border);
  171. outline: none;
  172. width: 200px;
  173. height: 60px;
  174. transition: all 0.3s;
  175. opacity: 0;
  176. z-index: 20;
  177. &.show {
  178. width: 250px;
  179. opacity: 1;
  180. border-color: var(--color-primary);
  181. }
  182. }
  183. }
  184. /* 主要内容区域 */
  185. .main-content {
  186. position: relative;
  187. width: 100%;
  188. padding: 40px 0;
  189. }
  190. .main-box {
  191. background-color: var(--color-box);
  192. border-radius: 10px;
  193. padding: 26px;
  194. &.fill {
  195. height: 100%;
  196. }
  197. }
  198. .main-hr {
  199. border-color: var(--color-border);
  200. margin: 50px 0;
  201. }
  202. .main-header-image {
  203. width: 100%;
  204. height: 500px;
  205. object-fit: cover;
  206. }
  207. /* 标题样式 */
  208. .section-title {
  209. display: flex;
  210. flex-direction: row;
  211. align-items: center;
  212. justify-content: space-between;
  213. margin-bottom: 20px;
  214. padding-bottom: 10px;
  215. border-bottom: 2px solid var(--color-primary);
  216. &.center {
  217. justify-content: center;
  218. }
  219. &.large {
  220. border-bottom: none;
  221. h2 {
  222. font-size: 30px;
  223. &.icon {
  224. &::before, &::after {
  225. width: 28px;
  226. height: 28px;
  227. background-size: 28px 28px;
  228. }
  229. }
  230. }
  231. }
  232. h2 {
  233. position: relative;
  234. display: flex;
  235. flex-direction: row;
  236. align-items: center;
  237. font-family: "STSongtiSC";
  238. font-synthesis: none;
  239. font-size: 20px;
  240. color: var(--color-primary);
  241. margin-right: 15px;
  242. i,svg,.iconify {
  243. margin-right: 10px;
  244. }
  245. &.button {
  246. cursor: pointer;
  247. color: var(--color-text);
  248. &.icon {
  249. &::before, &::after {
  250. display: none;
  251. }
  252. }
  253. &.active {
  254. &.icon {
  255. &::before, &::after {
  256. display: inline-block;
  257. }
  258. }
  259. color: var(--color-primary);
  260. }
  261. }
  262. &.icon {
  263. &::before, &::after {
  264. display: inline-block;
  265. content: '';
  266. margin: 0 10px;
  267. width: 20px;
  268. height: 20px;
  269. background-size: 20px 20px;
  270. background-image: url('@/assets/images/badge.png');
  271. background-position: center;
  272. }
  273. }
  274. }
  275. .sub-title {
  276. color: #666;
  277. padding-left: 15px;
  278. border-left: 1px solid #ddd;
  279. }
  280. }
  281. .section-more {
  282. margin-left: auto;
  283. color: #666;
  284. &:hover {
  285. color: var(--color-primary);
  286. }
  287. }
  288. /* 通知公告区域 */
  289. .notices-section {
  290. display: flex;
  291. gap: 30px;
  292. margin-bottom: 40px;
  293. }
  294. .notice-item {
  295. position: relative;
  296. padding: 15px 0;
  297. border-bottom: 1px dashed #ddd;
  298. display: flex;
  299. justify-content: space-between;
  300. align-items: center;
  301. > div {
  302. max-width: 86%;
  303. flex: 1;
  304. flex-direction: column;
  305. margin-right: 15px;
  306. overflow: hidden;
  307. }
  308. p {
  309. opacity: 0;
  310. height: 0px;
  311. margin-bottom: 0;
  312. transition: all ease-in-out 0.25s;
  313. }
  314. &:last-child {
  315. border-bottom: none;
  316. }
  317. &:hover {
  318. /* .notice-title {
  319. font-size: 20px;
  320. opacity: 1;
  321. } */
  322. /* p {
  323. opacity: 1;
  324. height: 85px;
  325. } */
  326. }
  327. }
  328. .notice-title {
  329. display: block;
  330. width: 100%;
  331. white-space: nowrap;
  332. overflow: hidden;
  333. text-overflow: ellipsis;
  334. transition: all 0.3s;
  335. }
  336. .notice-date {
  337. color: #999;
  338. font-size: 14px;
  339. }
  340. .featured-image {
  341. border-radius: 6px;
  342. overflow: hidden;
  343. position: relative;
  344. min-height: 400px;
  345. img {
  346. width: 100%;
  347. height: 100%;
  348. object-fit: cover;
  349. transition: transform 0.5s;
  350. }
  351. .caption {
  352. position: absolute;
  353. bottom: 0;
  354. left: 0;
  355. right: 0;
  356. background-color: var(--color-mask);
  357. color: var(--color-text-light);
  358. padding: 8px 20px;
  359. h3 {
  360. font-size: 18px;
  361. margin-bottom: 5px;
  362. }
  363. p {
  364. font-size: 14px;
  365. opacity: 0.9;
  366. }
  367. }
  368. &:hover img {
  369. transform: scale(1.05);
  370. }
  371. }
  372. .news-item {
  373. padding: 12px 0;
  374. border-bottom: 1px dashed #ddd;
  375. display: flex;
  376. justify-content: space-between;
  377. align-items: center;
  378. &:last-child {
  379. border-bottom: none;
  380. }
  381. &.dark {
  382. .title {
  383. color: var(--color-text-dark);
  384. }
  385. }
  386. .title {
  387. flex: 1;
  388. margin-right: 15px;
  389. white-space: nowrap;
  390. overflow: hidden;
  391. text-overflow: ellipsis;
  392. transition: color 0.3s;
  393. &:hover {
  394. color: var(--color-primary);
  395. }
  396. }
  397. .date {
  398. color: #999;
  399. font-size: 14px;
  400. }
  401. }
  402. /* 精彩推荐区域 */
  403. .featured-section {
  404. margin-bottom: 40px;
  405. }
  406. .featured-grid {
  407. display: grid;
  408. grid-template-columns: repeat(3, 1fr);
  409. gap: 20px;
  410. }
  411. .featured-card {
  412. position: relative;
  413. border: 1px solid #eee;
  414. border-radius: 5px;
  415. overflow: hidden;
  416. transition:
  417. transform 0.3s,
  418. box-shadow 0.3s;
  419. cursor: pointer;
  420. p {
  421. position: absolute;
  422. bottom: 0;
  423. left: 0;
  424. right: 0;
  425. background-color: var(--color-mask);
  426. color: var(--color-text-light);
  427. padding: 15px;
  428. z-index: 1;
  429. margin-bottom: 0;
  430. }
  431. img {
  432. width: 100%;
  433. height: 200px;
  434. object-fit: cover;
  435. }
  436. &:hover {
  437. transform: translateY(-5px);
  438. box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
  439. }
  440. }
  441. /* 公共服务区域 */
  442. .services-section {
  443. margin-bottom: 40px;
  444. display: flex;
  445. flex-direction: row;
  446. align-items: center;
  447. .title {
  448. width: 220px;
  449. height: 220px;
  450. z-index: 10;
  451. }
  452. }
  453. .services-grid {
  454. flex: 1;
  455. display: grid;
  456. grid-template-columns: repeat(3, 1fr);
  457. gap: 30px;
  458. margin-top: 60px;
  459. background-color: #fff1ee;
  460. padding: 0px 30px 40px 230px;
  461. border-radius: 15px;
  462. margin-left: -180px;
  463. z-index: 0;
  464. z-index: 0;
  465. }
  466. .service-card {
  467. background-color: #fff;
  468. border-radius: 8px;
  469. padding: 30px 20px;
  470. padding-bottom: 10px;
  471. margin-top: -15px;
  472. box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
  473. transition:
  474. transform 0.3s,
  475. box-shadow 0.3s;
  476. cursor: pointer;
  477. h3 {
  478. font-size: 15px;
  479. }
  480. .icon {
  481. width: 40px;
  482. height: 40px;
  483. margin-bottom: 10px;
  484. }
  485. &:hover {
  486. transform: translateY(-5px);
  487. box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
  488. }
  489. a .iconify {
  490. width: 30px;
  491. height: 30px;
  492. }
  493. }
  494. /* 底部区域 */
  495. footer {
  496. color: #fff;
  497. background-color: #f5f5f5;
  498. background-image: url('@/assets/images/footer-bg.png');
  499. background-position: center;
  500. background-size: cover;
  501. padding: 40px 0 20px;
  502. a {
  503. color: #ddd;
  504. &:hover, &:active {
  505. color: #fff;
  506. }
  507. }
  508. }
  509. .footer-links {
  510. display: flex;
  511. justify-content: center;
  512. margin-bottom: 20px;
  513. flex-wrap: wrap;
  514. }
  515. .footer-link {
  516. margin: 0 15px;
  517. color: #eee;
  518. &:hover {
  519. color: #fcacb9;
  520. }
  521. }
  522. .footer-info {
  523. text-align: center;
  524. color: #eee;
  525. font-size: 14px;
  526. line-height: 1.8;
  527. }
  528. .footer-select {
  529. text-align: center;
  530. margin-bottom: 20px;
  531. color: var(--color-text-light);
  532. select {
  533. color: #666;
  534. padding: 8px 45px 8px 15px;
  535. border: 1px solid rgba(221, 221, 221, 0.6);
  536. border-radius: 6px;
  537. background-color: rgba(255, 255, 255, 0.25);
  538. cursor: pointer;
  539. }
  540. }
  541. .sidebar {
  542. .title {
  543. position: relative;
  544. padding: 20px;
  545. background-color: var(--color-primary);
  546. color: var(--color-text-light);
  547. text-align: center;
  548. border-radius: 4px 4px 0 0;
  549. background-image: url('@/assets/images/tab-active.png');
  550. background-size: 100% 100%;
  551. background-repeat: no-repeat;
  552. height: 100px;
  553. margin-bottom: 20px;
  554. border: 1px solid var(--color-border);
  555. border-radius: 4px;
  556. h2 {
  557. position: relative;
  558. margin: 0;
  559. font-size: 30px;
  560. font-weight: bold;
  561. font-family: "STSongtiSC";
  562. line-height: 50px;
  563. z-index: 2;
  564. }
  565. }
  566. }
  567. .sidebar-menu {
  568. list-style: none;
  569. padding: 0;
  570. margin: 0;
  571. li {
  572. border-bottom: 1px solid var(--color-border);
  573. &.active a {
  574. color: var(--color-primary);
  575. }
  576. a {
  577. display: flex;
  578. flex-direction: row;
  579. justify-content: space-between;
  580. align-items: center;
  581. padding: 15px 20px;
  582. color: var(--color-text);
  583. text-decoration: none;
  584. transition: all 0.3s;
  585. i,svg,.iconify {
  586. color: var(--color-primary);
  587. }
  588. &:hover {
  589. color: var(--color-primary);
  590. }
  591. }
  592. &:last-child {
  593. border-bottom: none;
  594. }
  595. }
  596. .no-content {
  597. padding: 15px 20px;
  598. color: var(--color-text-secondary);
  599. }
  600. }
  601. .pagination {
  602. display: flex;
  603. justify-content: center;
  604. align-items: center;
  605. margin-top: 20px;
  606. li {
  607. margin: 0 5px;
  608. //border-radius: 6px;
  609. a {
  610. padding: 6px 10px;
  611. color: var(--color-text-secondary)!important;
  612. }
  613. &.active {
  614. a {
  615. border-color: var(--color-primary)!important;
  616. background-color: var(--color-primary)!important;
  617. color: var(--color-text-light)!important;
  618. }
  619. }
  620. }
  621. }
  622. .news-detail {
  623. position: relative;
  624. h1 {
  625. text-align: center;
  626. font-size: 30px;
  627. }
  628. .times {
  629. display: flex;
  630. flex-direction: row;
  631. justify-content: space-around;
  632. align-items: center;
  633. color: var(--color-text-secondary);
  634. padding: 20px 0;
  635. margin-bottom: 20px;
  636. border-bottom: 1px solid var(--color-border);
  637. p {
  638. margin-bottom: 0;
  639. font-size: 15px;
  640. }
  641. }
  642. .head-image {
  643. width: 100%;
  644. height: auto;
  645. min-height: 300px;
  646. border-radius: 8px;
  647. margin-bottom: 20px;
  648. }
  649. .content {
  650. position: relative;
  651. img, video {
  652. max-width: 100%;
  653. }
  654. }
  655. video {
  656. max-width: 100%;
  657. }
  658. }
  659. /* 联系我们页面样式 */
  660. .contact-info {
  661. padding-right: 30px;
  662. }
  663. .info-list {
  664. padding-left: 0;
  665. }
  666. .info-item {
  667. display: flex;
  668. flex-direction: row;
  669. padding: 10px 0;
  670. align-items: center;
  671. transition: transform 0.3s, box-shadow 0.3s;
  672. &:hover {
  673. transform: translateY(-3px);
  674. box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  675. }
  676. i,svg,.iconify {
  677. color: var(--color-primary);
  678. font-size: 20px;
  679. margin-right: 15px;
  680. width: 30px;
  681. text-align: center;
  682. }
  683. }
  684. .map-section {
  685. position: relative;
  686. height: 100%;
  687. }
  688. #map-container {
  689. border-radius: 8px;
  690. overflow: hidden;
  691. margin-bottom: 20px;
  692. }
  693. .no-news {
  694. text-align: center;
  695. font-size: 18px;
  696. color: var(--color-text-secondary);
  697. margin: 30px 0;
  698. }
  699. @media (max-width: 992px) {
  700. .featured-image {
  701. width: 100%;
  702. height: 300px;
  703. }
  704. .featured-grid {
  705. grid-template-columns: repeat(2, 1fr);
  706. }
  707. header {
  708. .inner {
  709. padding: 0 30px;
  710. }
  711. .logo {
  712. font-size: 20px;
  713. }
  714. }
  715. nav.main-nav .nav-item {
  716. padding: 0;
  717. a {
  718. padding: 10px 5px;
  719. }
  720. }
  721. }
  722. .swiper-slide {
  723. img {
  724. object-fit: cover;
  725. }
  726. }
  727. @media (max-width: 768px) {
  728. header {
  729. .inner {
  730. padding: 0 30px;
  731. }
  732. .logo {
  733. font-size: 20px;
  734. }
  735. .mobile-menu-toggle {
  736. display: unset;
  737. width: 40px;
  738. height: 40px;
  739. }
  740. .search-bar button {
  741. width: 40px;
  742. height: 40px;
  743. }
  744. }
  745. nav.main-nav {
  746. position: absolute;
  747. top: 0;
  748. opacity: 0;
  749. left: 0;
  750. right: 0;
  751. padding: 20px;
  752. background-color: var(--color-box);
  753. box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  754. transition: all 0.3s;
  755. transform: translateY(-100%);
  756. z-index: 100;
  757. &.show {
  758. display: block;
  759. opacity: 1;
  760. transform: translateY(0%);
  761. }
  762. .nav-list {
  763. flex-direction: column;
  764. }
  765. .nav-item {
  766. margin-bottom: 10px;
  767. }
  768. }
  769. .services-grid {
  770. grid-template-columns: 1fr;
  771. }
  772. }
  773. @media (max-width: 576px) {
  774. .featured-grid {
  775. grid-template-columns: 1fr;
  776. }
  777. .main-box {
  778. padding: 15px;
  779. }
  780. .services-section {
  781. align-items: flex-start;
  782. }
  783. .services-grid {
  784. padding: 210px 30px 40px 30px;
  785. }
  786. header {
  787. .inner {
  788. padding: 0 20px;
  789. }
  790. .logo {
  791. font-size: 18px;
  792. }
  793. }
  794. }