{"id":39660,"date":"2025-11-06T07:48:34","date_gmt":"2025-11-05T23:48:34","guid":{"rendered":"https:\/\/smartairfilters.com\/?page_id=39660"},"modified":"2025-12-05T09:19:27","modified_gmt":"2025-12-05T01:19:27","slug":"jobs","status":"publish","type":"page","link":"https:\/\/smartairfilters.com\/zh\/jobs\/","title":{"rendered":"\u52a0\u5165Smart Air\uff01"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"39660\" class=\"elementor elementor-39660\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4262681b e-con-full banner-clouds e-flex elementor-invisible e-con e-parent\" data-id=\"4262681b\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2b9ce240 newh1-banner elementor-widget elementor-widget-heading\" data-id=\"2b9ce240\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Join Smart Air<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-73414272 elementor-widget__width-initial newh2-banner elementor-widget elementor-widget-heading\" data-id=\"73414272\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Build a future with us, creating innovative solutions for cleaner, healthier air<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8e1407b e-con-full e-flex e-con e-parent\" data-id=\"8e1407b\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-18f2686b elementor-widget__width-initial new-subheader elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"18f2686b\" data-element_type=\"widget\" data-settings=\"{&quot;_animation_mobile&quot;:&quot;fadeInDown&quot;,&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Open Positions<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6f92198 elementor-widget__width-initial new-subheader elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"6f92198\" data-element_type=\"widget\" data-settings=\"{&quot;_animation_mobile&quot;:&quot;fadeInDown&quot;,&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Product Development Engineer<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fe7fc95 elementor-widget__width-initial animated-slow elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"fe7fc95\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Design and develop advanced air purification technologies to enhance indoor air quality<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43125a6 elementor-align-left elementor-widget__width-initial elementor-mobile-align-center elementor-invisible elementor-widget elementor-widget-button\" data-id=\"43125a6\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/hive.smartairfilters.com\/jobs\/detail\/product-engineer-30\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Apply<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a1286ec elementor-widget__width-initial elementor-invisible elementor-widget elementor-widget-image\" data-id=\"6a1286ec\" data-element_type=\"widget\" data-settings=\"{&quot;_animation_mobile&quot;:&quot;fadeInDown&quot;,&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-12-1024x585.png\" class=\"attachment-large size-large wp-image-39665\" alt=\"\" srcset=\"https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-12-1024x585.png 1024w, https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-12-600x343.png 600w, https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-12-300x171.png 300w, https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-12-768x439.png 768w, https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-12.png 1400w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-33af624d e-con-full e-flex elementor-invisible e-con e-parent\" data-id=\"33af624d\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ce273ba elementor-widget__width-initial new-subheader elementor-widget elementor-widget-heading\" data-id=\"ce273ba\" data-element_type=\"widget\" data-settings=\"{&quot;_animation_mobile&quot;:&quot;fadeInDown&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Volunteer Opportunities<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-19947bb elementor-widget__width-initial animated-slow elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"19947bb\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Eager to help more people breathe clean air? Join our volunteer team today! We work with a gladder future in mind<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-71fa6b3 elementor-align-left elementor-widget__width-initial elementor-mobile-align-center elementor-invisible elementor-widget elementor-widget-button\" data-id=\"71fa6b3\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/smartairfilters.com\/en\/volunteer-at-smart-air\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Join Us<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-83724a0 elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"83724a0\" data-element_type=\"widget\" data-settings=\"{&quot;_animation_mobile&quot;:&quot;fadeInDown&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-11-1024x512.png\" class=\"attachment-large size-large wp-image-39666\" alt=\"\" srcset=\"https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-11-1024x512.png 1024w, https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-11-600x300.png 600w, https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-11-300x150.png 300w, https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-11-768x384.png 768w, https:\/\/smartairfilters.com\/wordpress\/wp-content\/uploads\/2025\/11\/SCAQMD-South-Coast-Air-Quality-Management-District-11.png 1400w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2a20d6a5 e-con-full quick-links-homepage e-flex elementor-invisible e-con e-parent\" data-id=\"2a20d6a5\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3793981f elementor-widget__width-initial new-subheader elementor-widget elementor-widget-heading\" data-id=\"3793981f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Quick Links<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3a5e0e6c e-grid e-con-boxed e-con e-child\" data-id=\"3a5e0e6c\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-22bec73e elementor-align-justify elementor-widget__width-inherit elementor-widget elementor-widget-button\" data-id=\"22bec73e\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/smartairfilters.com\/en\/about\/meet-the-clean-air-team\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Smart Air Team<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7d78065e elementor-align-justify elementor-widget__width-inherit elementor-widget elementor-widget-button\" data-id=\"7d78065e\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/smartairfilters.com\/en\/about\/our-impact\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Our Impact<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-70998249 e-con-full scroll-bg e-flex e-con e-parent\" data-id=\"70998249\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-72809b71 e-flex e-con-boxed e-con e-parent\" data-id=\"72809b71\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7177fc10 elementor-widget elementor-widget-html\" data-id=\"7177fc10\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n .homepage-textgradient {\r\n  background: linear-gradient(\r\n    175deg,\r\n    #8CA6DB 0%,\r\n    #8CA6DB 40%,\r\n    #111111 70%,\r\n    #333333 100%\r\n  );\r\n  -webkit-background-clip: text;\r\n  -webkit-text-fill-color: transparent;\r\n  display: inline-block;\r\n}\r\n\r\n\r\n.scroll-bg {\r\n  \r\n  background-repeat: repeat-x;\r\n  background-position: 0 0;\r\n  background-size: cover; \/* or contain, depending on your image *\/\r\n  animation: scrollBackground 30s linear infinite;\r\n  height: 300px; \/* adjust as needed *\/\r\n  width: 100%;\r\n}\r\n\r\n\/* Animation keyframes *\/\r\n@keyframes scrollBackground {\r\n  0% {\r\n    background-position: 0 0;\r\n  }\r\n  100% {\r\n    background-position: -1000px 0; \r\n  }\r\n}\r\n\r\n#homepage-tab1,\r\n#homepage-tab2,\r\n#homepage-tab3 {\r\n  border: none;\r\n \r\n  padding: 5px 40px;\r\n  border-radius: 30px;\r\n  font-size: 16px;\r\n  cursor: pointer;\r\n  transition: background 0.3s, color 0.3s;\r\n  color: black;\r\n}\r\n\r\n\/* Active tab style *\/\r\n#homepage-tab1[aria-selected=\"true\"],\r\n#homepage-tab2[aria-selected=\"true\"],\r\n#homepage-tab3[aria-selected=\"true\"] {\r\n  background-color: #5dade2; \r\n  color: white;\r\n}\r\n.e-n-tabs-heading {\r\n  display: flex;\r\n  background-color: #e0e0e0; \r\n  padding: 0px;\r\n  border-radius: 30px;\r\n  width: fit-content;\r\n}\r\n.homepage-cards-singlecard{\r\n    height:200px;\r\n}\r\n.homepage-hoverclass {\r\n  position: relative; \/* Needed for ::before to align properly *\/\r\n  background-repeat: no-repeat !important;\r\n  background-position: bottom center !important;\r\n  transition: background-size 1.3s ease !important;\r\n  will-change: background-size;\r\n  overflow: hidden; \/* Optional: hide any overflows *\/\r\n}\r\n\r\n.homepage-hoverclass.zoom-small,.homepage-hoverclass.zoom-small-3{\r\n    justify-self: self-end !important;\r\n}\r\n\/* Zoom on hover *\/\r\n.zoom-small {\r\n  background-size: 100% !important;\r\n  transition: background-size 0.4s ease-in-out;\r\n  background-position: center 10px !important;\r\n  background-repeat: no-repeat;\r\n  \r\n}\r\n\r\n\r\n\r\n.homepage-hoverclass.zoom-small, .homepage-hoverclass.zoom-large,.homepage-hoverclass.zoom-large-4{\r\n    height:413px !important;\r\n}\r\n\r\n@media (min-width: 768px) {.banner-clouds {\r\n  position: relative;\r\n}\r\n.zoom-small:hover {\r\n  background-size: 103% !important;\r\n   background-position: center 10px !important;\r\n}\r\n.zoom-small-3 {\r\n  background-size: 100% auto !important;\r\n}\r\n.zoom-small-3:hover {\r\n  background-size: 105% auto !important;\r\n}\r\n.zoom-large {\r\n  background-size: 110% auto !important;\r\n}\r\n.zoom-large:hover {\r\n  background-size: 115% auto !important;\r\n}\r\n.zoom-large-4{\r\n  background-size: 103% auto !important;\r\n}\r\n.zoom-large-4:hover {\r\n  background-size: 108% auto !important;\r\n}\r\n\r\n.fixed-b-corp {\r\n  transition: opacity 0.4s ease;\r\n  opacity: 1;\r\n}\r\n.fixed-b-corp.fade-out {\r\n  opacity: 0;\r\n  pointer-events: none; \/* optional, disables hover\/click when invisible *\/\r\n}\r\n\r\n.fixed-b-corp {\r\n  position: absolute;\r\n  bottom: 20px;\r\n  right: 20px;\r\n  z-index: 999;\r\n  transition: none;\r\n}\r\n\r\n.fixed-b-corp.sticking {\r\n  position: fixed !important;\r\n  bottom: 20px;\r\n  right: 20px;\r\n}\r\n\r\n.fixed-b-corp.stopped {\r\n  position: absolute !important;\r\n  bottom: unset !important;\r\n  top: auto !important;\r\n}\r\n}\r\n\r\n\r\n@media (max-width: 768px) {\r\n \r\n .elementor-widget-container{\r\n     text-wrap-mode: wrap; \r\n }\r\n\/* .horiz-scrol-homepage-mobile {\r\n  overflow-x: auto;\r\n  -webkit-overflow-scrolling: touch; \/* enables momentum scroll & dots on iOS \r\n  white-space: nowrap;\r\n}*\/\r\n\r\n\r\n\/* Container should behave normally *\/\r\n\/*.elementor-element-7c63c65 {\r\n  display: block !important;\r\n  overflow: hidden;\r\n}\r\n\r\n\r\n.elementor-element-1ad7031 {\r\n  float: right;\r\n}\r\n\r\n\r\n.elementor-element-958df5e {\r\n  float: left;\r\n}\r\n\r\n\r\n.elementor-button {\r\n  width: auto !important;\r\n  padding: 10px 20px;\r\n  white-space: nowrap;\r\n}*\/\r\n\r\n  .homepage-hoverclass{\r\n      box-shadow:none !important;\r\n  }\r\n  .scroll-left.disabled,\r\n.scroll-right.disabled {\r\n  opacity: 0.3;\r\n  pointer-events: none;\r\n}\r\n\r\n  .scroll-arrows {\r\n    display: none;\r\n    justify-content: center;\r\n    gap: 20px;\r\n    margin: 10px 0;\r\n  }\r\n\r\n  .scroll-arrows img {\r\n      \r\n    width: 24px;\r\n    height: 24px;\r\n    cursor: pointer;\r\n    transition: transform 0.2s ease;\r\n  }\r\n\r\n  .scroll-arrows img:hover {\r\n    transform: scale(1.1);\r\n  }\r\n\r\n  .horiz-scrol-homepage-mobile {\r\n    display: flex;\r\n    overflow-x: auto;\r\n    scroll-snap-type: x mandatory;\r\n    -webkit-overflow-scrolling: touch;\r\n    scroll-behavior: smooth;\r\n    gap: 20px;\r\n    width: 100%;\r\n     -ms-overflow-style: none;  \/* IE and Edge *\/\r\n  scrollbar-width: none;     \/* Firefox *\/\r\n  }\r\n.horiz-scrol-homepage-mobile::-webkit-scrollbar {\r\n  display: none;             \/* Chrome, Safari, Opera *\/\r\n}\r\n  .horiz-scrol-homepage-mobile > .e-con {\r\n    flex: 0 0 100%;\r\n    scroll-snap-align: center;\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .scroll-dots {\r\n    display: flex;\r\n    justify-content: center;\r\n    gap: 8px;\r\n    margin-top: 10px;\r\n  }\r\n\r\n  .scroll-dots .dot {\r\n    width: 5px;\r\n    height: 5px;\r\n    background: #ccc;\r\n    border-radius: 50%;\r\n    cursor: pointer;\r\n    transition: background 0.3s;\r\n  }\r\n\r\n  .scroll-dots .dot.active {\r\n    background: #333;\r\n  }\r\n  \/* === Generic Button Container Centering === *\/\r\n.homepage-button-group-mobile {\r\n  display: flex !important;\r\n  justify-content: center !important;\r\n  align-items: center;\r\n  \/\/gap: 16px; \/* spacing between buttons *\/\r\n  row-gap:10px;\r\n  flex-wrap: wrap;\r\n  text-align: center;\r\n}\r\n\r\n\/* === Button Styling for all groups === *\/\r\n\/*.homepage-button-single-mobile {\r\n  width: auto !important;\r\n  min-width: auto !important;\r\n  padding: 10px 20px;\r\n  display: inline-flex;\r\n  justify-content: center;\r\n  align-items: center;\r\n  border-radius: 100px; \/* keeps pill shape *\/\r\n}*\/\r\n\r\n\/* Ensure button wrappers don\u2019t interfere *\/\r\n.elementor-button-wrapper {\r\n  display: inline-flex !important;\r\n}\r\n.site-content{\r\n        overflow-x: hidden;\r\n\r\n}\r\n}\r\n\r\n\r\n<\/style>\r\n\r\n<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n    if (window.innerWidth >= 768) return;\r\n  const scrollSections = document.querySelectorAll(\".scroll-block-homepage-1, .scroll-block-homepage-2\");\r\n\r\n  scrollSections.forEach(section => {\r\n    const scrollWrapper = section.querySelector(\".horiz-scrol-homepage-mobile\");\r\n    const dotsContainer = section.querySelector(\".scroll-dots\");\r\n    const leftArrow = section.querySelector(\".scroll-left\");\r\n    const rightArrow = section.querySelector(\".scroll-right\");\r\n\r\n    if (!scrollWrapper || !leftArrow || !rightArrow || !dotsContainer) return;\r\n\r\n    const cards = Array.from(scrollWrapper.children).filter(el => el.classList.contains(\"e-con\"));\r\n    const scrollStep = scrollWrapper.offsetWidth;\r\n\r\n    \/\/ Create dots\r\n    dotsContainer.innerHTML = \"\";\r\n    cards.forEach((_, i) => {\r\n      const dot = document.createElement(\"span\");\r\n      dot.classList.add(\"dot\");\r\n      if (i === 0) dot.classList.add(\"active\");\r\n      dot.addEventListener(\"click\", () => {\r\n        scrollWrapper.scrollTo({ left: scrollStep * i, behavior: \"smooth\" });\r\n      });\r\n      dotsContainer.appendChild(dot);\r\n    });\r\n\r\n    \/\/ Sync dot and arrows\r\n    function updateState() {\r\n      const scrollLeft = scrollWrapper.scrollLeft;\r\n      const maxScrollLeft = scrollWrapper.scrollWidth - scrollWrapper.clientWidth;\r\n      const index = Math.round(scrollLeft \/ scrollStep);\r\n\r\n      \/\/ Highlight active dot\r\n      dotsContainer.querySelectorAll(\".dot\").forEach((dot, i) => {\r\n        dot.classList.toggle(\"active\", i === index);\r\n      });\r\n\r\n      \/\/ Enable\/disable arrows\r\n      if (scrollLeft <= 0) {\r\n        leftArrow.classList.add(\"disabled\");\r\n      } else {\r\n        leftArrow.classList.remove(\"disabled\");\r\n      }\r\n\r\n      if (scrollLeft >= maxScrollLeft - 1) {\r\n        rightArrow.classList.add(\"disabled\");\r\n      } else {\r\n        rightArrow.classList.remove(\"disabled\");\r\n      }\r\n    }\r\n\r\n    scrollWrapper.addEventListener(\"scroll\", updateState);\r\n\r\n    leftArrow.addEventListener(\"click\", () => {\r\n      scrollWrapper.scrollBy({ left: -scrollStep, behavior: \"smooth\" });\r\n    });\r\n\r\n    rightArrow.addEventListener(\"click\", () => {\r\n      scrollWrapper.scrollBy({ left: scrollStep, behavior: \"smooth\" });\r\n    });\r\n\r\n    \/\/ Initial state\r\n    updateState();\r\n  });\r\n});\r\n<\/script>\r\n\r\n<script>\/*\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n  const sticky = document.querySelector(\".fixed-b-corp\");\r\n  const banner = document.querySelector(\".banner-clouds\");\r\n  const stopTarget = document.querySelector(\".quick-links-homepage\");\r\n\r\n  if (!sticky || !banner || !stopTarget) return;\r\n\r\n  const bottomOffset = 20; \/\/ px from bottom of viewport\r\n  const rightOffset = 20;\r\n\r\n  function updatePosition() {\r\n    const scrollY = window.scrollY;\r\n    const viewportHeight = window.innerHeight;\r\n    const stickyHeight = sticky.offsetHeight;\r\n\r\n    const bannerTop = banner.offsetTop;\r\n    const bannerBottom = bannerTop + banner.offsetHeight;\r\n\r\n    const stopTop = stopTarget.offsetTop;\r\n    const stopHeight = stopTarget.offsetHeight;\r\n    const stopBottom = stopTop + stopHeight;\r\n\r\n    const stickyBottomIfFixed = scrollY + viewportHeight - bottomOffset;\r\n\r\n    \/\/ Case 1: Still in banner \u2014 start position\r\n    if (scrollY + viewportHeight < bannerBottom + stickyHeight) {\r\n      sticky.style.position = \"absolute\";\r\n      sticky.style.bottom = `${bottomOffset}px`;\r\n      sticky.style.top = \"auto\";\r\n      sticky.style.right = `${rightOffset}px`;\r\n    }\r\n    \/\/ Case 2: Sticky bottom would pass stop section's end \u2014 pin it at the bottom of stop section\r\n    else if (stickyBottomIfFixed >= stopBottom) {\r\n      sticky.style.position = \"absolute\";\r\n      sticky.style.top = `${stopBottom - stickyHeight - bannerTop - bottomOffset}px`;\r\n      sticky.style.bottom = \"auto\";\r\n      sticky.style.right = `${rightOffset}px`;\r\n    }\r\n    \/\/ Case 3: Normal scroll \u2014 fixed to screen\r\n    else {\r\n      sticky.style.position = \"fixed\";\r\n      sticky.style.bottom = `${bottomOffset}px`;\r\n      sticky.style.top = \"auto\";\r\n      sticky.style.right = `${rightOffset}px`;\r\n    }\r\n  }\r\n\r\n  window.addEventListener(\"scroll\", updatePosition);\r\n  window.addEventListener(\"resize\", updatePosition);\r\n  updatePosition();\r\n});\r\n*\/\r\n\r\n\/*document.addEventListener(\"DOMContentLoaded\", function () {\r\n  const sticky = document.querySelector(\".fixed-b-corp\");\r\n  const banner = document.querySelector(\".banner-clouds\");\r\n  const stopTarget = document.querySelector(\".quick-links-homepage\");\r\n\r\n  if (!sticky || !banner || !stopTarget) return;\r\n\r\n  const bottomOffset = 20; \/\/ distance from bottom of screen when fixed\r\n  const rightOffset = 20;  \/\/ distance from right of screen\r\n  const fadeOutDistance = 200; \/\/ fade-out starts this many px before stop section ends\r\n\r\n  function updatePosition() {\r\n    const scrollY = window.scrollY;\r\n    const viewportHeight = window.innerHeight;\r\n    const stickyHeight = sticky.offsetHeight;\r\n\r\n    const bannerTop = banner.offsetTop;\r\n    const bannerBottom = bannerTop + banner.offsetHeight;\r\n\r\n    const stopTop = stopTarget.offsetTop;\r\n    const stopBottom = stopTop + stopTarget.offsetHeight;\r\n\r\n    const stickyBottomIfFixed = scrollY + viewportHeight - bottomOffset;\r\n\r\n    \/\/ 1. If still within banner \u2014 absolute positioning\r\n    if (scrollY + viewportHeight < bannerBottom + stickyHeight) {\r\n      sticky.style.position = \"absolute\";\r\n      sticky.style.bottom = `${bottomOffset}px`;\r\n      sticky.style.top = \"auto\";\r\n      sticky.style.right = `${rightOffset}px`;\r\n    }\r\n    \/\/ 2. Scrolling normally \u2014 fixed position\r\n    else {\r\n      sticky.style.position = \"fixed\";\r\n      sticky.style.bottom = `${bottomOffset}px`;\r\n      sticky.style.top = \"auto\";\r\n      sticky.style.right = `${rightOffset}px`;\r\n    }\r\n\r\n    \/\/ 3. Fade out as we near the bottom of stopTarget\r\n    const fadeOutStart = stopBottom - fadeOutDistance;\r\n    const fadeOutEnd = stopBottom;\r\n\r\n    if (stickyBottomIfFixed >= fadeOutStart) {\r\n      const progress = Math.min(1, (stickyBottomIfFixed - fadeOutStart) \/ (fadeOutEnd - fadeOutStart));\r\n      sticky.style.opacity = `${1 - progress}`;\r\n      sticky.style.pointerEvents = 'none'; \/\/ optional: disables clicks while fading\r\n    } else {\r\n      sticky.style.opacity = \"1\";\r\n      sticky.style.pointerEvents = 'auto';\r\n    }\r\n  }\r\n\r\n  window.addEventListener(\"scroll\", updatePosition);\r\n  window.addEventListener(\"resize\", updatePosition);\r\n  updatePosition(); \/\/ run on load\r\n});*\/\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n  if (window.innerWidth < 768) return; \/\/ <-- prevent running on mobile\r\n\r\n  const sticky = document.querySelector(\".fixed-b-corp\");\r\n  const banner = document.querySelector(\".banner-clouds\");\r\n  const stopTarget = document.querySelector(\".quick-links-homepage\");\r\n\r\n  if (!sticky || !banner || !stopTarget) return;\r\n\r\n  const bottomOffset = 20; \/\/ distance from bottom of screen when fixed\r\n  const rightOffset = 20;\r\n  const fadeOutDistance = 200; \/\/ fade-out starts this many px before stop section ends\r\n\r\n  function updatePosition() {\r\n    const scrollY = window.scrollY;\r\n    const viewportHeight = window.innerHeight;\r\n    const stickyHeight = sticky.offsetHeight;\r\n\r\n    const bannerTop = banner.offsetTop;\r\n    const bannerBottom = bannerTop + banner.offsetHeight;\r\n\r\n    const stopTop = stopTarget.offsetTop;\r\n    const stopBottom = stopTop + stopTarget.offsetHeight;\r\n\r\n    const stickyBottomIfFixed = scrollY + viewportHeight - bottomOffset;\r\n\r\n    \/\/ Case 1: Still within banner\r\n    if (scrollY + viewportHeight < bannerBottom + stickyHeight) {\r\n      sticky.style.position = \"absolute\";\r\n      sticky.style.bottom = `${bottomOffset}px`;\r\n      sticky.style.top = \"auto\";\r\n      sticky.style.right = `${rightOffset}px`;\r\n    }\r\n    \/\/ Case 2: Normal scroll\r\n    else {\r\n      sticky.style.position = \"fixed\";\r\n      sticky.style.bottom = `${bottomOffset}px`;\r\n      sticky.style.top = \"auto\";\r\n      sticky.style.right = `${rightOffset}px`;\r\n    }\r\n\r\n    \/\/ Case 3: Fade out near stop section\r\n    const fadeOutStart = stopBottom - fadeOutDistance;\r\n    const fadeOutEnd = stopBottom;\r\n\r\n    if (stickyBottomIfFixed >= fadeOutStart) {\r\n      const progress = Math.min(1, (stickyBottomIfFixed - fadeOutStart) \/ (fadeOutEnd - fadeOutStart));\r\n      sticky.style.opacity = `${1 - progress}`;\r\n      sticky.style.pointerEvents = 'none';\r\n    } else {\r\n      sticky.style.opacity = \"1\";\r\n      sticky.style.pointerEvents = 'auto';\r\n    }\r\n  }\r\n\r\n  window.addEventListener(\"scroll\", updatePosition);\r\n  window.addEventListener(\"resize\", updatePosition);\r\n  updatePosition(); \/\/ Run on load\r\n});\r\n\r\n\r\n<\/script>\r\n\r\n\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Join Smart Air Build a future with us, creating in &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"\u52a0\u5165Smart Air\uff01\" class=\"read-more button\" href=\"https:\/\/smartairfilters.com\/zh\/jobs\/#more-39660\" aria-label=\"\u9605\u8bfb \u52a0\u5165Smart Air\uff01\">Read more<\/a><\/p>\n","protected":false},"author":11231,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"23549,7928,6797,26470,19043,11621","_relevanssi_noindex_reason":"","footnotes":""},"class_list":["post-39660","page","type-page","status-publish"],"acf":[],"_links":{"self":[{"href":"https:\/\/smartairfilters.com\/zh\/wp-json\/wp\/v2\/pages\/39660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smartairfilters.com\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/smartairfilters.com\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/smartairfilters.com\/zh\/wp-json\/wp\/v2\/users\/11231"}],"replies":[{"embeddable":true,"href":"https:\/\/smartairfilters.com\/zh\/wp-json\/wp\/v2\/comments?post=39660"}],"version-history":[{"count":47,"href":"https:\/\/smartairfilters.com\/zh\/wp-json\/wp\/v2\/pages\/39660\/revisions"}],"predecessor-version":[{"id":40005,"href":"https:\/\/smartairfilters.com\/zh\/wp-json\/wp\/v2\/pages\/39660\/revisions\/40005"}],"wp:attachment":[{"href":"https:\/\/smartairfilters.com\/zh\/wp-json\/wp\/v2\/media?parent=39660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}