Was ist ein SEO-Titel in WordPress? Ein Leitfaden für Anfänger

Was ist ein SEO-Titel in WordPress? Ein Leitfaden für Anfänger

Einführung

Viele WordPress users spend hours writing blog posts, designing pages, uploading images, and adjusting layouts, but they often overlook one small line of text that can strongly affect search visibility: the SEO title.

So, what is SEO title in WordPress? In simple terms, an SEO title is the title that appears in Google search results when someone finds your page, blog post, product page, or category page. It is not always the same as the title visitors see after clicking into your website. Instead, it is a search-focused title created to help search engines understand your page and encourage users to click.

Ein Beispiel für den Titel Ihres WordPress-Beitrags könnte lauten:

How to Improve Your Website

Ihr SEO-Titel könnte aber lauten:

How to Improve Your Website SEO in 2026

The second version is more specific, keyword-focused, and attractive for people searching online.

The reference article explains that an SEO title is also commonly called a meta title or the HTML <title> tag. It appears inside the <head> area of a webpage and gives search engines a clear signal about the topic of that page.

This guide will explain what an SEO title is, why it matters, how it works in WordPress, how to edit it, and how to write better titles for both search engines and real readers.

What Is SEO Title in WordPress?

What Is SEO Title in WordPress? A Beginner-Friendly Guide-What Is SEO Title in WordPress?

An SEO title in WordPress is the search engine title assigned to a page or post. It is the clickable headline that users usually see on Google, Bing, and other search engines.

In WordPress, every post or page has a regular title. This is the title displayed on the page itself, often as the main H1 heading. However, the SEO title is different. It is designed mainly for search results.

Here is the easiest way to understand the difference:

The page title is for people who are already on your website.

The SEO title is for people who are still deciding whether to click your result in search engines.

Zum Beispiel:

Page title:
Beginner’s Guide to WordPress SEO

SEO title:
WordPress SEO Guide for Beginners: Simple Steps to Rank Better

The page title can be clean and simple. The SEO title can include stronger keywords, benefits, and a clearer promise.

WordPress can automatically generate an SEO title from your page title. However, automatic titles are not always the best choice. They may be too short, too vague, too long, or not optimized for the keyword you want to rank for.

That is why many WordPress site owners use SEO plugins such as Yoast SEO, Rank Math, or All in One SEO to manually customize their SEO titles.

Why SEO Titles Matter

SEO titles matter because they influence both search engines and human behavior.

Search engines use the SEO title to understand what your page is about. If your title clearly matches the topic of your content, search engines can more easily connect your page with relevant search queries.

Users also rely on SEO titles when choosing which result to click. On a search results page, people often scan titles quickly. If your title looks clear, useful, and relevant, it has a better chance of earning clicks.

A strong SEO title can help with:

1. Search Relevance

When someone searches for “what is seo title in wordpress,” Google wants to show pages that directly answer that question. If your SEO title includes the phrase naturally, it tells search engines that your page is highly relevant to that query.

This does not mean you should stuff the keyword unnaturally. Instead, you should place the keyword in a clear and readable way.

Good example:

What Is SEO Title in WordPress? A Complete Beginner Guide

Bad example:

What Is SEO Title in WordPress SEO Title WordPress SEO Guide

The first title is natural. The second title feels forced and spammy.

2. Click-Through Rate

Click-through rate, often called CTR, means the percentage of people who click your page after seeing it in search results.

If 1,000 people see your page in Google and 80 people click it, your CTR is 8%.

A better SEO title can increase your CTR because it gives users a stronger reason to choose your page. A title that is specific, helpful, and easy to understand usually performs better than a vague title.

Compare these two examples:

SEO Title Guide

What Is SEO Title in WordPress? Simple Guide for Beginners

The second title is stronger because it tells users exactly what they will learn and who the guide is for.

3. User Expectations

An SEO title sets expectations before someone visits your website. If the title promises a beginner guide, the content should actually be beginner-friendly. If the title says “step-by-step,” the article should include clear steps.

When the title and content match, visitors are more likely to stay, read, and trust the page.

When the title feels misleading, users may leave quickly. That can hurt the overall user experience.

4. Social Sharing

SEO titles can also affect how your page appears when shared on social media platforms, messaging apps, or other websites. Many platforms pull the page title into the preview card.

A clear title can make shared links look more professional and clickable.

SEO Title vs WordPress Post Title

What Is SEO Title in WordPress? A Beginner-Friendly Guide-SEO Title vs WordPress Post Title

One common mistake is thinking the WordPress post title and SEO title must always be identical. They can be the same, but they do not have to be.

Your WordPress post title is usually shown at the top of the article. It is part of the visible page design. It may be shorter, more creative, or more brand-focused.

Your SEO title is written for search engines and search users. It may include the primary keyword, a benefit, a year, a number, or a clearer explanation.

Zum Beispiel:

WordPress post title:
Understanding SEO Titles

SEO title:
What Is SEO Title in WordPress? A Simple Explanation

The SEO title is better for search because it matches the exact question people may type into Google.

Where Does the SEO Title Appear?

The SEO title can appear in several places:

First, it appears in search engine results as the clickable headline.

Second, it appears in the browser tab when someone opens your page.

Third, it may appear in social media previews when your link is shared.

Fourth, it appears in the HTML source code inside the </code> tag.</p> <p class="wp-block-paragraph">Most visitors will not look at the HTML code, but search engines read it carefully.</p> <h2 class="wp-block-heading">How WordPress Creates SEO Titles by Default</h2> <p class="wp-block-paragraph">By default, WordPress usually uses your page or post title as the SEO title. Depending on your theme and settings, it may also add your site name.</p> <p class="wp-block-paragraph">Zum Beispiel:</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress – My Website Name</p> <p class="wp-block-paragraph">This is convenient, but it is not always ideal.</p> <p class="wp-block-paragraph">Sometimes the title becomes too long. Sometimes the site name takes up valuable space. Sometimes the title does not include the right keyword. Sometimes it does not sound attractive enough to earn clicks.</p> <p class="wp-block-paragraph">That is why manually editing your SEO title is often better.</p> <h2 class="wp-block-heading">How to Edit an SEO Title in WordPress</h2> <figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://www.airsang.com/wp-content/uploads/2026/05/image-108-1024x576.png" alt="What Is SEO Title in WordPress? A Beginner-Friendly Guide-How to Edit an SEO Title in WordPress" class="wp-image-9860" srcset="https://www.airsang.com/wp-content/uploads/2026/05/image-108-1024x576.png 1024w, https://www.airsang.com/wp-content/uploads/2026/05/image-108-300x169.png 300w, https://www.airsang.com/wp-content/uploads/2026/05/image-108-768x432.png 768w, https://www.airsang.com/wp-content/uploads/2026/05/image-108-1536x864.png 1536w, https://www.airsang.com/wp-content/uploads/2026/05/image-108-18x10.png 18w, https://www.airsang.com/wp-content/uploads/2026/05/image-108-1000x563.png 1000w, https://www.airsang.com/wp-content/uploads/2026/05/image-108-1x1.png 1w, https://www.airsang.com/wp-content/uploads/2026/05/image-108-10x6.png 10w, https://www.airsang.com/wp-content/uploads/2026/05/image-108.png 1672w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> <p class="wp-block-paragraph">The easiest way to edit an SEO title in WordPress is by using an SEO plugin. Most popular SEO plugins add an SEO settings box inside the page or post editor.</p> <h2 class="wp-block-heading">Using Yoast SEO</h2> <p class="wp-block-paragraph">Yoast SEO is one of the most well-known WordPress SEO plugins. After installing it, you can open a page or post and find the Yoast SEO section.</p> <p class="wp-block-paragraph">There, you can enter a custom SEO title. Yoast also shows a preview of how your title may appear in search results.</p> <p class="wp-block-paragraph">This makes it easier to see whether the title is too long, too short, or missing important keywords.</p> <h2 class="wp-block-heading">Using Rank Math</h2> <p class="wp-block-paragraph">Rank Math is another popular SEO plugin. It also lets you edit the SEO title directly inside the WordPress editor.</p> <p class="wp-block-paragraph">Rank Math provides a preview and scoring system to help you understand whether your title is optimized. You can include your focus keyword and adjust the title length.</p> <h2 class="wp-block-heading">Using All in One SEO</h2> <p class="wp-block-paragraph">All in One SEO, often called AIOSEO, is useful for blogs, business websites, and larger sites with many pages.</p> <p class="wp-block-paragraph">It lets you customize SEO titles for posts, pages, categories, products, and other content types. This can be especially helpful for eCommerce websites or large content websites.</p> <h2 class="wp-block-heading">Wie lang sollte ein SEO-Titel sein?</h2> <p class="wp-block-paragraph">A good SEO title is usually short enough to display properly in search results but long enough to explain the page clearly.</p> <p class="wp-block-paragraph">Many SEO professionals recommend keeping titles around 50 to 60 characters. The reference article also mentions this common range because longer titles may be cut off in search results.</p> <p class="wp-block-paragraph">However, character count is not the only thing that matters. Google displays titles based on pixel width, not just the number of characters. Some letters take up more space than others.</p> <p class="wp-block-paragraph">For example, “W” is wider than “i.”</p> <p class="wp-block-paragraph">That means a 58-character title may display fully, while another 55-character title may still get cut off.</p> <p class="wp-block-paragraph">A good rule is to keep the title clear, focused, and not overloaded.</p> <h2 class="wp-block-heading">How to Write a Good SEO Title</h2> <p class="wp-block-paragraph">Writing a strong SEO title is not about adding as many keywords as possible. It is about balancing search intent, clarity, and click appeal.</p> <p class="wp-block-paragraph">Here are practical tips.</p> <h2 class="wp-block-heading">1. Put the Main Keyword Near the Beginning</h2> <p class="wp-block-paragraph">If your target keyword is “what is seo title in wordpress,” try to place it close to the beginning of the title.</p> <p class="wp-block-paragraph">Beispiel:</p> <p class="wp-block-paragraph"><strong>What Is SEO Title in WordPress? Beginner SEO Guide</strong></p> <p class="wp-block-paragraph">This helps both users and search engines quickly understand the topic.</p> <h2 class="wp-block-heading">2. Make the Title Match the Content</h2> <p class="wp-block-paragraph">Do not promise something the article does not deliver.</p> <p class="wp-block-paragraph">If your title says “Complete Guide,” the content should be detailed. If your title says “Quick Explanation,” the content should be simple and brief.</p> <p class="wp-block-paragraph">A mismatch between title and content can disappoint readers.</p> <h2 class="wp-block-heading">3. Use Clear Language</h2> <p class="wp-block-paragraph">Avoid confusing or overly clever titles. Search users want fast answers. If they cannot understand your title immediately, they may skip it.</p> <p class="wp-block-paragraph">Good:</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress? Easy Guide for Beginners</p> <p class="wp-block-paragraph">Less effective:</p> <p class="wp-block-paragraph">The Hidden Title Strategy Behind WordPress Visibility</p> <p class="wp-block-paragraph">The second title sounds interesting, but it is less direct.</p> <h2 class="wp-block-heading">4. Include a Benefit</h2> <p class="wp-block-paragraph">A benefit tells users why they should click.</p> <p class="wp-block-paragraph">Beispiele:</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress? Learn How to Rank Better</p> <p class="wp-block-paragraph">SEO Title in WordPress Explained: Improve Your Search Clicks</p> <p class="wp-block-paragraph">These titles suggest a useful outcome.</p> <h2 class="wp-block-heading">5. Avoid Keyword Stuffing</h2> <p class="wp-block-paragraph">Keyword stuffing means repeating the same keyword too many times.</p> <p class="wp-block-paragraph">Bad example:</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress: WordPress SEO Title Tips</p> <p class="wp-block-paragraph">This sounds unnatural.</p> <p class="wp-block-paragraph">Better example:</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress? Simple Tips for Better Rankings</p> <p class="wp-block-paragraph">The keyword appears once, and the title still reads smoothly.</p> <h2 class="wp-block-heading">6. Use Numbers When Helpful</h2> <p class="wp-block-paragraph">Numbers can make titles feel more specific.</p> <p class="wp-block-paragraph">Beispiele:</p> <p class="wp-block-paragraph">7 SEO Title Tips for WordPress Beginners</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress? 9 Things to Know</p> <p class="wp-block-paragraph">Numbers are not required, but they can help when the article has a list-based structure.</p> <h2 class="wp-block-heading">7. Add the Year Only When Relevant</h2> <p class="wp-block-paragraph">Adding a year can make a title feel fresh.</p> <p class="wp-block-paragraph">Beispiel:</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress? 2026 Beginner Guide</p> <p class="wp-block-paragraph">However, only use the year if you plan to update the content. An outdated year can make your article look old.</p> <h2 class="wp-block-heading">Should You Add Your Brand Name?</h2> <p class="wp-block-paragraph">Many websites add the brand name at the end of the SEO title.</p> <p class="wp-block-paragraph">Beispiel:</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress? Beginner Guide | Site Name</p> <p class="wp-block-paragraph">This can be useful if your brand is known or if you want consistent branding across search results.</p> <p class="wp-block-paragraph">However, adding a brand name also takes up title space. For smaller websites, it may be better to focus on the keyword and benefit first.</p> <p class="wp-block-paragraph">For important pages like the homepage, service pages, and product pages, brand names can be useful. For blog posts, they are optional.</p> <h2 class="wp-block-heading">Why Google May Rewrite Your SEO Title</h2> <p class="wp-block-paragraph">Sometimes you write a custom SEO title, but Google shows a different title in search results.</p> <p class="wp-block-paragraph">This can be frustrating, but it is common.</p> <p class="wp-block-paragraph">Google may rewrite your title if it thinks your title does not match the search query, does not describe the page well, is too long, is too short, or includes too much repeated wording.</p> <p class="wp-block-paragraph">For example, if your SEO title is:</p> <p class="wp-block-paragraph">Best WordPress Tips</p> <p class="wp-block-paragraph">But your article is mainly about SEO titles, Google may rewrite it to better match the page content.</p> <p class="wp-block-paragraph">To reduce the chance of title rewriting, make sure your SEO title accurately reflects the page, includes the main topic, and matches the visible content.</p> <h2 class="wp-block-heading">Common SEO Title Mistakes</h2> <p class="wp-block-paragraph">Many WordPress users make the same SEO title mistakes. Avoiding these can quickly improve your site’s search presentation.</p> <h2 class="wp-block-heading">Mistake 1: Using the Same Title on Multiple Pages</h2> <p class="wp-block-paragraph">Every important page should have a unique SEO title.</p> <p class="wp-block-paragraph">If several pages use the same title, search engines may struggle to understand which page is most relevant.</p> <h2 class="wp-block-heading">Mistake 2: Making the Title Too Generic</h2> <p class="wp-block-paragraph">A title like “Home” or “Blog Post” does not explain anything.</p> <p class="wp-block-paragraph">Better titles are specific.</p> <p class="wp-block-paragraph">Anstatt:</p> <p class="wp-block-paragraph">Dienstleistungen</p> <p class="wp-block-paragraph">Verwenden:</p> <p class="wp-block-paragraph">WordPress SEO Services for Small Business Websites</p> <h2 class="wp-block-heading">Mistake 3: Writing Only for Search Engines</h2> <p class="wp-block-paragraph">SEO titles should include keywords, but they still need to attract real people.</p> <p class="wp-block-paragraph">A title that sounds robotic may rank poorly because users do not want to click it.</p> <h2 class="wp-block-heading">Mistake 4: Making the Title Too Long</h2> <p class="wp-block-paragraph">Long titles can be cut off in search results. When that happens, users may not see the most important part.</p> <p class="wp-block-paragraph">Try to place the most valuable words near the beginning.</p> <h2 class="wp-block-heading">Mistake 5: Forgetting Search Intent</h2> <p class="wp-block-paragraph">Search intent means what the user wants to find.</p> <p class="wp-block-paragraph">Someone searching “what is seo title in wordpress” likely wants a simple explanation. They may not be ready for advanced technical SEO.</p> <p class="wp-block-paragraph">Your title should match that beginner-friendly intent.</p> <h2 class="wp-block-heading">SEO Title Examples for WordPress</h2> <p class="wp-block-paragraph">Here are some examples of better SEO titles:</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress? Beginner Guide</p> <p class="wp-block-paragraph">SEO Title in WordPress Explained for Website Owners</p> <p class="wp-block-paragraph">How to Write Better SEO Titles in WordPress</p> <p class="wp-block-paragraph">WordPress SEO Title Tips to Improve Search Clicks</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress and Why It Matters</p> <p class="wp-block-paragraph">Each title is clear, keyword-focused, and easy to understand.</p> <h2 class="wp-block-heading">A Simple SEO Title Formula</h2> <p class="wp-block-paragraph">You can use this simple formula:</p> <p class="wp-block-paragraph">Main Keyword + Clear Benefit + Optional Detail</p> <p class="wp-block-paragraph">Beispiel:</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress? Simple Guide for Beginners</p> <p class="wp-block-paragraph">Main keyword: What Is SEO Title in WordPress<br>Benefit: Simple Guide<br>Detail: For Beginners</p> <p class="wp-block-paragraph">Another formula is:</p> <p class="wp-block-paragraph">Question + Answer Style Benefit</p> <p class="wp-block-paragraph">Beispiel:</p> <p class="wp-block-paragraph">What Is SEO Title in WordPress? Learn How It Works</p> <p class="wp-block-paragraph">This works well for educational blog posts.</p> <h2 class="wp-block-heading">Final Checklist Before Publishing</h2> <p class="wp-block-paragraph">Before publishing a WordPress post or page, ask yourself these questions:</p> <p class="wp-block-paragraph">Does the SEO title include the main keyword?</p> <p class="wp-block-paragraph">Is the title easy to understand?</p> <p class="wp-block-paragraph">Does it match the actual content?</p> <p class="wp-block-paragraph">Is it likely to attract clicks?</p> <p class="wp-block-paragraph">Is it different from other page titles on the site?</p> <p class="wp-block-paragraph">Is it short enough to display well?</p> <p class="wp-block-paragraph">Does it avoid keyword stuffing?</p> <p class="wp-block-paragraph">If the answer is yes, your SEO title is probably in good shape.</p> <h2 class="wp-block-heading">Abschluss</h2> <p class="wp-block-paragraph">An SEO title in <strong><a href="https://www.WordPres.com" target="_blank" rel="noopener">WordPress</a></strong> is the title that search engines and users often see before visiting your page. It helps explain what your content is about, improves search relevance, and can influence whether people click your result.</p> <p class="wp-block-paragraph">The main difference between a WordPress post title and an SEO title is purpose. The post title is for people already reading your page, while the SEO title is for people discovering your page through search engines.</p> <p class="wp-block-paragraph">A strong SEO title should be clear, relevant, keyword-focused, and written for real users. It should include the main keyword naturally, match the page content, and stay concise enough to display properly in search results.</p> <p class="wp-block-paragraph">For the keyword “what is seo title in wordpress,” the best approach is to write a title that answers the question directly while giving readers a reason to click. When used correctly, SEO titles can make your WordPress content easier to understand, easier to find, and more appealing in search results.</p> <h2 class="wp-block-heading">Häufig gestellte Fragen </h2> <h3 class="wp-block-heading">1: What is SEO title in WordPress?</h3> <p class="wp-block-paragraph">An SEO title in WordPress is the title that appears in search engine results. It helps Google understand your page topic and helps users decide whether to click your page.</p> <h3 class="wp-block-heading">2: Is the SEO title the same as the WordPress post title?</h3> <p class="wp-block-paragraph">Not always. The WordPress post title appears on the page itself, while the SEO title is mainly written for search results. They can be the same, but the SEO title is often more keyword-focused.</p> <h3 class="wp-block-heading">3: Why is an SEO title important for WordPress SEO?</h3> <p class="wp-block-paragraph">An SEO title helps search engines understand your content and can improve click-through rate. A clear and relevant title may make your page more attractive in search results.</p> <h3 class="wp-block-heading">4: How long should a WordPress SEO title be?</h3> <p class="wp-block-paragraph">A good WordPress SEO title is usually around 50–60 characters. This helps prevent the title from being cut off in search results while still giving enough space for the main keyword.</p> <h3 class="wp-block-heading">5: How do I edit an SEO title in WordPress?</h3> <p class="wp-block-paragraph">You can edit an SEO title by using SEO plugins such as Yoast SEO, Rank Math, or All in One SEO. These plugins usually add an SEO title field inside the WordPress editor.</p> <h3 class="wp-block-heading">6: What makes a good SEO title in WordPress?</h3> <p class="wp-block-paragraph">A good SEO title should include the main keyword, clearly describe the page content, attract clicks, and avoid keyword stuffing. It should sound natural and match what users are searching for.</p> </div> </div> <div class="elementor-element elementor-element-2a3b559 e-con-full e-flex e-con e-child" data-id="2a3b559" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic","sticky":"top","sticky_on":["desktop","tablet"],"sticky_offset":80,"sticky_parent":"yes","sticky_effects_offset":0,"sticky_anchor_link_offset":0}"> <div class="elementor-element elementor-element-10b5122 e-con-full e-flex e-con e-child" data-id="10b5122" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="elementor-element elementor-element-37a42c8 elementor-widget elementor-widget-heading" data-id="37a42c8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <h2 class="elementor-heading-title elementor-size-default">Creative Solutions for Global Brands</h2> </div> <div class="elementor-element elementor-element-243687b elementor-widget elementor-widget-text-editor" data-id="243687b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <p><strong>AIRSANG</strong> delivers cost-effective website design and development, brand visuals, and cross-border ecommerce solutions for brands worldwide.</p> </div> <div class="elementor-element elementor-element-f7b7de6 e-transform elementor-align-justify elementor-mobile-align-justify elementor-widget__width-inherit elementor-widget elementor-widget-button" data-id="f7b7de6" data-element_type="widget" data-e-type="widget" data-settings="{"_animation":"none","_transform_translateX_effect_hover":{"unit":"px","size":0,"sizes":[]},"_transform_translateY_effect_hover":{"unit":"px","size":-5,"sizes":[]},"_transform_translateX_effect_hover_tablet":{"unit":"px","size":"","sizes":[]},"_transform_translateX_effect_hover_mobile":{"unit":"px","size":"","sizes":[]},"_transform_translateY_effect_hover_tablet":{"unit":"px","size":"","sizes":[]},"_transform_translateY_effect_hover_mobile":{"unit":"px","size":"","sizes":[]}}" data-widget_type="button.default"> <a class="elementor-button elementor-button-link elementor-size-sm" href="#"> <span class="elementor-button-content-wrapper"> <span class="elementor-button-text">Let's Talk</span> </span> </a> </div> </div> <div class="elementor-element elementor-element-3567646 e-con-full e-flex e-con e-child" data-id="3567646" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="elementor-element elementor-element-75a62a1 elementor-position-left elementor-position-top elementor-vertical-align-middle elementor-widget elementor-widget-image-box" data-id="75a62a1" data-element_type="widget" data-e-type="widget" data-widget_type="image-box.default"> <div class="elementor-image-box-wrapper"><figure class="elementor-image-box-img"><a href="https://www.airsang.com/de/kontaktieren-sie-uns/" tabindex="-1"><img src="https://www.airsang.com/wp-content/uploads/airsang-post-templates/ab5497183e7ee4cdddffdd47.webp" title="" alt="" loading="lazy" /></a></figure><div class="elementor-image-box-content"><p class="elementor-image-box-description">Shopify Development</p></div></div> </div> </div> <div class="elementor-element elementor-element-b6eabb7 e-con-full e-flex e-con e-child" data-id="b6eabb7" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="elementor-element elementor-element-7759e1f elementor-position-left elementor-position-top elementor-vertical-align-middle elementor-widget elementor-widget-image-box" data-id="7759e1f" data-element_type="widget" data-e-type="widget" data-widget_type="image-box.default"> <div class="elementor-image-box-wrapper"><figure class="elementor-image-box-img"><a href="https://www.airsang.com/de/dienstleistungen/" tabindex="-1"><img src="https://www.airsang.com/wp-content/uploads/airsang-post-templates/8a5f758291ed3fd452fd6dfc.webp" title="" alt="" loading="lazy" /></a></figure><div class="elementor-image-box-content"><p class="elementor-image-box-description">WordPress Development</p></div></div> </div> </div> <div class="elementor-element elementor-element-4611ee9 e-con-full e-flex e-con e-child" data-id="4611ee9" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="elementor-element elementor-element-f933a1d elementor-position-left elementor-position-top elementor-vertical-align-middle elementor-widget elementor-widget-image-box" data-id="f933a1d" data-element_type="widget" data-e-type="widget" data-widget_type="image-box.default"> <div class="elementor-image-box-wrapper"><figure class="elementor-image-box-img"><a href="https://www.airsang.com/de/kontaktieren-sie-uns/" tabindex="-1"><img src="https://www.airsang.com/wp-content/uploads/airsang-post-templates/1b7f53749b4c0e4e73b6f338.webp" title="" alt="" loading="lazy" /></a></figure><div class="elementor-image-box-content"><p class="elementor-image-box-description">Web-UI-Design</p></div></div> </div> </div> <div class="elementor-element elementor-element-3f1d36f e-con-full e-flex e-con e-child" data-id="3f1d36f" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="elementor-element elementor-element-348e8d2 elementor-position-left elementor-position-top elementor-vertical-align-middle elementor-widget elementor-widget-image-box" data-id="348e8d2" data-element_type="widget" data-e-type="widget" data-widget_type="image-box.default"> <div class="elementor-image-box-wrapper"><figure class="elementor-image-box-img"><a href="https://www.airsang.com/de/kontaktieren-sie-uns/" tabindex="-1"><img src="https://www.airsang.com/wp-content/uploads/airsang-post-templates/8b45613bad7af14204e628d2.webp" title="" alt="" loading="lazy" /></a></figure><div class="elementor-image-box-content"><p class="elementor-image-box-description">Amazon Design</p></div></div> </div> </div> </div> </div> </div> <div class="elementor-element elementor-element-205fc06 e-flex e-con-boxed e-con e-parent" data-id="205fc06" data-element_type="container" data-e-type="container"> <div class="e-con-inner"> <div class="elementor-element elementor-element-69ba58a elementor-widget__width-inherit elementor-widget elementor-widget-airsang_related_articles_posts_carousel" data-id="69ba58a" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_related_articles_posts_carousel.default"> <div class="elementor-widget-container"> <section class="airsang-related-posts-carousel-wrap"> <div id="airsang-related-posts-carousel-69ba58a" class="airsang-related-posts-carousel" data-desktop="4" data-tablet="2" data-mobile="1" data-autoplay="no" data-delay="4200" > <div class="airsang-related-posts-carousel__header"> <h2 class="airsang-related-posts-carousel__title"> <span class="airsang-related-posts-carousel__title-main">More</span> <span class="airsang-related-posts-carousel__title-highlight">Fallstudien</span> </h2> </div> <div class="airsang-related-posts-carousel__shell"> <button class="airsang-related-posts-carousel__arrow airsang-related-posts-carousel__arrow--prev" type="button" aria-label="Previous" data-no-translation-aria-label="">‹</button> <button class="airsang-related-posts-carousel__arrow airsang-related-posts-carousel__arrow--next" type="button" aria-label="Next" data-no-translation-aria-label="">›</button> <div class="airsang-related-posts-carousel__viewport"> <div class="airsang-related-posts-carousel__track"> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/de/high-conversion-alibaba-homepage-for-oems/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/2026/01/6ff4a25213f9728ab53b27b317f6507a-1024x420.jpg" alt="High-Conversion Alibaba Homepage for OEMs"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">High-Conversion Alibaba Homepage for OEMs</span> <span class="airsang-related-posts-carousel__excerpt">Introduction For OEM and ODM manufacturers competing on Alibaba International, the homepage is far more than a digital storefront. It is a credibility checkpoint, a trust builder, and often the deciding factor that determines whether a global buyer stays, scrolls, or leaves. In this project, our task was to design a homepage…</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/de/designing-a-high-converting-shopify-hardware-experience/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/2026/06/f373b9e5-568b-4c75-b2ef-770d8eb59753-1024x576.png" alt="Designing a High-Converting Shopify Hardware Experience"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">Designing a High-Converting Shopify Hardware Experience</span> <span class="airsang-related-posts-carousel__excerpt">Introduction Stone Harbor Hardware’s Shopify website is designed as a complete conversion ecosystem where visual storytelling, structured information, and trust-building elements work together seamlessly. As designers, we approached this project with one core goal: transform a traditionally technical product category—door hardware—into an emotionally engaging, highly intuitive, and conversion-driven digital experience. Instead of…</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/de/shopify-drone-brand-website-homepage-design-case/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/airsang-posts/e610aba5a2aa203fa4ffc1a0.webp" alt="Shopify drone brand website homepage design case"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">Shopify drone brand website homepage design case</span> <span class="airsang-related-posts-carousel__excerpt">Project overview GetFPV is a professional e-commerce brand focusing on FPV drones, aerial photography equipment and related accessories. Its products cover multiple categories such as drone sets, FPV glasses, motors, propellers, batteries, racks and electronic accessories. As the number of products continues to increase, the original pages are gradually unable to meet…</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/de/designing-a-modern-shopify-pet-brand-experience/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/2026/04/53d99723-f114-490b-8096-51d97d6e1239-1024x683.png" alt="Designing a Modern Shopify Pet Brand Experience"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">Designing a Modern Shopify Pet Brand Experience</span> <span class="airsang-related-posts-carousel__excerpt">Introduction In today’s competitive eCommerce landscape, design plays a defining role in how customers perceive a brand and make purchasing decisions. A well-crafted Shopify website does more than display products—it tells a story, builds trust, and creates an emotional connection. For lifestyle-driven brands in particular, design becomes the bridge between product functionality…</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/de/rosemorning-shopify-website-design-case-study/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/2026/03/47.jpg" alt="RoseMorning Shopify Website Design Case Study"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">RoseMorning Shopify Website Design Case Study</span> <span class="airsang-related-posts-carousel__excerpt">Introduction In the wedding industry, visual storytelling matters as much as the products themselves. Couples planning their special day are drawn to elegance, emotion, and atmosphere. A website that sells wedding décor must therefore do more than display products—it must create an immersive experience that helps customers imagine their perfect moment. The…</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/de/shoplazza-women-s-clothing-selection-website-design-case-leahgotti-s-skirt-classification-and-single-product-browsing/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/airsang-posts/016472a0afd1fe600f3f945f.webp" alt="Shoplazza women’s clothing selection website design case: LEAHGOTTI’s skirt classification and single product browsing"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">Shoplazza women’s clothing selection website design case: LEAHGOTTI’s skirt classification and single product browsing</span> <span class="airsang-related-posts-carousel__excerpt">We sorted out the visual and page structure of the Shoplazza women's clothing selection website for LEAHGOTTI, combined black and white hierarchy, clothing photography, and clear product display, and introduced the information level, browsing path, and interaction arrangement of the homepage, categories, and actual main pages.</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/de/main-image-design-for-ozon-leveling-instruments/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/2026/01/7d8a0818-fd4b-48a2-a7f9-796e83a219ca-1024x683.png" alt="Main Image Design for Ozon Leveling Instruments"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">Main Image Design for Ozon Leveling Instruments</span> <span class="airsang-related-posts-carousel__excerpt">Introduction In highly competitive marketplaces like Ozon, customers make decisions within seconds. For professional tools such as leveling instruments, the main image must do far more than display the product — it must instantly communicate precision, durability, and real-world usability. Our design approach focuses on transforming complex technical features into clear, visually…</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/de/coupang-remote-control-and-mobile-phone-shape-teether-primary-and-secondary-product-images-design-case-double-shape-and-tactile-details/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/airsang-posts/a62a4b63217a46738842cce9.webp" alt="Coupang remote control and mobile phone shape teether primary and secondary product images design case: double shape and tactile details"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">Coupang remote control and mobile phone shape teether primary and secondary product images design case: double shape and tactile details</span> <span class="airsang-related-posts-carousel__excerpt">Focusing on the dual shapes and tactile details, we organize the Coupang primary and secondary product images design of the remote control and mobile phone-shaped teether with a black body, colored buttons, white background and close-up shots of characters. We use real works to explain the picture and text hierarchy, detailed instructions…</span> </span> </a> </article> </div> </div> </div> <div class="airsang-related-posts-carousel__dots" aria-label="Carousel pagination" data-no-translation-aria-label=""></div> </div> </section> </div> </div> </div> </div> </div> <footer data-elementor-type="footer" data-elementor-id="1804" class="elementor elementor-1804 elementor-location-footer" data-elementor-post-type="elementor_library"> <div class="elementor-element elementor-element-c51c87a e-flex e-con-boxed e-con e-parent" data-id="c51c87a" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="e-con-inner"> <div class="elementor-element elementor-element-e05edcd e-flex e-con-boxed e-con e-child" data-id="e05edcd" data-element_type="container" data-e-type="container"> <div class="e-con-inner"> <div class="elementor-element elementor-element-a47fb91 e-con-full e-flex e-con e-child" data-id="a47fb91" data-element_type="container" data-e-type="container"> <div class="elementor-element elementor-element-e80b80b elementor-widget__width-initial elementor-widget elementor-widget-image" data-id="e80b80b" data-element_type="widget" data-e-type="widget" data-widget_type="image.default"> <img loading="lazy" width="800" height="240" src="https://www.airsang.com/wp-content/uploads/airsang-pages/c71991f8bec8809971badeef.png" class="attachment-large size-large wp-image-15854" alt="" /> </div> <div class="elementor-element elementor-element-a1de5f0 elementor-shape-rounded elementor-grid-0 e-grid-align-center elementor-widget elementor-widget-social-icons" data-id="a1de5f0" data-element_type="widget" data-e-type="widget" data-widget_type="social-icons.default"> <div class="elementor-social-icons-wrapper elementor-grid" role="list"> <span class="elementor-grid-item" role="listitem"> <a class="elementor-icon elementor-social-icon elementor-social-icon-facebook elementor-repeater-item-3d53d9a" target="_blank"> <span class="elementor-screen-only">Facebook</span> <svg aria-hidden="true" class="e-font-icon-svg e-fab-facebook" viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg> </a> </span> <span class="elementor-grid-item" role="listitem"> <a class="elementor-icon elementor-social-icon elementor-social-icon-x-twitter elementor-repeater-item-bbda424" target="_blank"> <span class="elementor-screen-only">X-twitter</span> <svg aria-hidden="true" class="e-font-icon-svg e-fab-x-twitter" viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"></path></svg> </a> </span> <span class="elementor-grid-item" role="listitem"> <a class="elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-032d630" target="_blank"> <span class="elementor-screen-only">Youtube</span> <svg aria-hidden="true" class="e-font-icon-svg e-fab-youtube" viewbox="0 0 576 512" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg> </a> </span> <span class="elementor-grid-item" role="listitem"> <a class="elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-b7e347f" target="_blank"> <span class="elementor-screen-only">Youtube</span> <svg aria-hidden="true" class="e-font-icon-svg e-fab-youtube" viewbox="0 0 576 512" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg> </a> </span> <span class="elementor-grid-item" role="listitem"> <a class="elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-19b9288" target="_blank"> <span class="elementor-screen-only">Youtube</span> <svg aria-hidden="true" class="e-font-icon-svg e-fab-youtube" viewbox="0 0 576 512" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg> </a> </span> </div> </div> <div class="elementor-element elementor-element-e50dfcd elementor-widget elementor-widget-text-editor" data-id="e50dfcd" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <p>AIRSANG provides cost-effective creative design and high-performance ecommerce websites to help your brand increase its influence on a global scale.</p> </div> </div> <div class="elementor-element elementor-element-f993ab4 e-con-full e-flex e-con e-child" data-id="f993ab4" data-element_type="container" data-e-type="container"> <div class="elementor-element elementor-element-cf22ba8 elementor-widget-mobile__width-initial elementor-widget elementor-widget-airsang_footer_list" data-id="cf22ba8" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_footer_list.default"> <div class="elementor-widget-container"> <section class="airsang-footer-list-wrap"> <div class="airsang-footer-list"> <h3 class="airsang-footer-list__title">Gestaltung</h3> <ul class="airsang-footer-list__items"> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/website-design/">Website Design</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/shopify-website-design/">Ecommerce Store Design</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/amazon-design/">Amazon Design</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/shein-design/">SHEIN Design</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/markendesign-fallstudien/">Markendesign</a> </li> </ul> </div> </section> </div> </div> <div class="elementor-element elementor-element-d88f8e4 elementor-widget-mobile__width-initial elementor-widget elementor-widget-airsang_footer_list" data-id="d88f8e4" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_footer_list.default"> <div class="elementor-widget-container"> <section class="airsang-footer-list-wrap"> <div class="airsang-footer-list"> <h3 class="airsang-footer-list__title">Technology and Operations</h3> <ul class="airsang-footer-list__items"> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/wordpress-website-design/">Webseitenentwicklung</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/custom-theme-development/">Custom Development</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/product-listing-services/">Product Listings</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/kontaktieren-sie-uns/">Social Media Management</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/seo-services/">Search Engine Optimization</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/kontaktieren-sie-uns/">Website Migration</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/kontaktieren-sie-uns/">Website Security</a> </li> </ul> </div> </section> </div> </div> <div class="elementor-element elementor-element-9df297f elementor-widget-mobile__width-initial elementor-widget elementor-widget-airsang_footer_list" data-id="9df297f" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_footer_list.default"> <div class="elementor-widget-container"> <section class="airsang-footer-list-wrap"> <div class="airsang-footer-list"> <h3 class="airsang-footer-list__title">Über uns</h3> <ul class="airsang-footer-list__items"> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/portfolio/">Our Work</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/uber-uns/">Company Profile</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/blog/">Blog & Insights</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/kontaktieren-sie-uns/">Careers</a> </li> </ul> </div> </section> </div> </div> <div class="elementor-element elementor-element-78fcdc2 elementor-widget-mobile__width-initial elementor-widget elementor-widget-airsang_footer_list" data-id="78fcdc2" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_footer_list.default"> <div class="elementor-widget-container"> <section class="airsang-footer-list-wrap"> <div class="airsang-footer-list"> <h3 class="airsang-footer-list__title">Unterstützung</h3> <ul class="airsang-footer-list__items"> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/nutzungsbedingungen/">Nutzungsbedingungen</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/kontaktieren-sie-uns/">Kontakt</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/blog/">Knowledge Base</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/kontaktieren-sie-uns/">Frequently Asked Questions</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/de/datenschutzrichtlinie/">Datenschutzbestimmungen</a> </li> </ul> </div> </section> </div> </div> </div> <div class="elementor-element elementor-element-e3ea2b4 e-con-full e-flex e-con e-child" data-id="e3ea2b4" data-element_type="container" data-e-type="container"> <div class="elementor-element elementor-element-6353444 elementor-widget elementor-widget-heading" data-id="6353444" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <h2 class="elementor-heading-title elementor-size-default">Kontakt</h2> </div> <div class="elementor-element elementor-element-1596b74 elementor-position-inline-start elementor-mobile-position-inline-start elementor-view-default elementor-widget elementor-widget-icon-box" data-id="1596b74" data-element_type="widget" data-e-type="widget" data-widget_type="icon-box.default"> <div class="elementor-icon-box-wrapper"> <div class="elementor-icon-box-icon"> <span class="elementor-icon"> <svg aria-hidden="true" class="e-font-icon-svg e-fas-map-marker-alt" viewbox="0 0 384 512" xmlns="http://www.w3.org/2000/svg"><path d="M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"></path></svg> </span> </div> <div class="elementor-icon-box-content"> <p class="elementor-icon-box-description"> Building 4, West Lake YOHO, Quanzhou City, Fujian Province 510-513 </p> </div> </div> </div> <div class="elementor-element elementor-element-0fbecf0 elementor-position-inline-start elementor-mobile-position-inline-start elementor-view-default elementor-widget elementor-widget-icon-box" data-id="0fbecf0" data-element_type="widget" data-e-type="widget" data-widget_type="icon-box.default"> <div class="elementor-icon-box-wrapper"> <div class="elementor-icon-box-icon"> <span class="elementor-icon"> <svg aria-hidden="true" class="e-font-icon-svg e-fas-phone-alt" viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"></path></svg> </span> </div> <div class="elementor-icon-box-content"> <p class="elementor-icon-box-description"> +86 17759522770 </p> </div> </div> </div> <div class="elementor-element elementor-element-618b284 elementor-position-inline-start elementor-mobile-position-inline-start elementor-view-default elementor-widget elementor-widget-icon-box" data-id="618b284" data-element_type="widget" data-e-type="widget" data-widget_type="icon-box.default"> <div class="elementor-icon-box-wrapper"> <div class="elementor-icon-box-icon"> <span class="elementor-icon"> <svg aria-hidden="true" class="e-font-icon-svg e-fas-envelope" viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path></svg> </span> </div> <div class="elementor-icon-box-content"> <p class="elementor-icon-box-description"> support@airsang.com </p> </div> </div> </div> </div> </div> </div> <div class="elementor-element elementor-element-11af021 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="11af021" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default"> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> <div class="elementor-element elementor-element-fa5b0e8 e-con-full e-flex e-con e-child" data-id="fa5b0e8" data-element_type="container" data-e-type="container"> <div class="elementor-element elementor-element-04ccc0d elementor-widget-tablet__width-inherit elementor-widget-mobile__width-initial elementor-widget elementor-widget-airsang_platform_logo_marquee" data-id="04ccc0d" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_platform_logo_marquee.default"> <div class="elementor-widget-container"> <div class="as-platform-marquee as-platform-marquee--pause as-platform-marquee--white" data-as-platform-marquee style="--as-duration: 40s;" role="region" aria-label="Platform logos"> <div class="as-platform-marquee__viewport"> <div class="as-platform-marquee__track"> <div class="as-platform-marquee__group"> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/25ffd4d933335a20abff31e0.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/25ffd4d933335a20abff31e0.webp" alt="Amazon" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/78aeef07b3a97110df832c29.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/78aeef07b3a97110df832c29.webp" alt="Shopify" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/3a611edcae0b6a2b97d5660a.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/3a611edcae0b6a2b97d5660a.webp" alt="WordPress" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/f38a30980bf6bbb12a330871.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/f38a30980bf6bbb12a330871.webp" alt="Magento" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/2cba7fa096de5c8dec6b76f0.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/2cba7fa096de5c8dec6b76f0.webp" alt="TEMU" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/cd108f5b5c34d881a3b7271d.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/cd108f5b5c34d881a3b7271d.webp" alt="Shoplazza" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/6e9a9fa95ef9142e928c296f.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/6e9a9fa95ef9142e928c296f.webp" alt="Wix" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/3d9c9b95e762a33e75a0146a.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/3d9c9b95e762a33e75a0146a.webp" alt="SHEIN" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/05bcf41dd353b901610f36ae.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/05bcf41dd353b901610f36ae.webp" alt="SHOPLINE" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/19f5094cdc56831d94c10b3e.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/19f5094cdc56831d94c10b3e.webp" alt="AliExpress" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/d3fb409967191fca0af8f028.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/d3fb409967191fca0af8f028.webp" alt="eBay" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/bb1cc6a8c648222b1b119429.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/bb1cc6a8c648222b1b119429.webp" alt="Coupang" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/a35070236019b220fc3e5188.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/a35070236019b220fc3e5188.webp" alt="Shopee" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/ba04a7777bfcc9c1b5eb70af.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/ba04a7777bfcc9c1b5eb70af.webp" alt="Taobao" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/141886635ec8271e87206dae.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/141886635ec8271e87206dae.webp" alt="Alibaba" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/77d139fc46e5487e333a7190.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/77d139fc46e5487e333a7190.webp" alt="Ozon" loading="eager" decoding="async"> </span> </div> </div> </div> </div> </div> </div> <div class="elementor-element elementor-element-1ae1824 elementor-widget elementor-widget-heading" data-id="1ae1824" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <h2 class="elementor-heading-title elementor-size-default"><a href="https://www.airsang.com/de/nutzungsbedingungen/">© 2026 AIRSANG. All rights reserved.</a></h2> </div> </div> </div> </div> </footer> <template id="tp-language" data-tp-language="de_DE"></template><script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/de/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/hello-elementor/*","/de/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script> ( () => { const lazyloadRunObserver = () => { const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { entries.forEach( ( entry ) => { if ( entry.isIntersecting ) { let lazyloadBackground = entry.target; if( lazyloadBackground ) { lazyloadBackground.classList.add( 'e-lazyloaded' ); } lazyloadBackgroundObserver.unobserve( entry.target ); } }); }, { rootMargin: '200px 0px 200px 0px' } ); lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { lazyloadBackgroundObserver.observe( lazyloadBackground ); } ); }; const events = [ 'DOMContentLoaded', 'elementor/lazyload/observe', ]; events.forEach( ( event ) => { document.addEventListener( event, lazyloadRunObserver ); } ); } )(); </script> <script> (function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })(); </script> <link rel='stylesheet' id='wc-blocks-style-css' href='https://www.airsang.com/wp-content/plugins/woocommerce/assets/client/blocks/wc-blocks.css?ver=wc-10.4.4' media='all' /> <script id="burst-js" defer src="https://www.airsang.com/wp-content/uploads/burst/js/burst.min.js?ver=1793521247"></script> <script id="trp-dynamic-translator-js-extra"> var trp_data = {"trp_custom_ajax_url":"https://www.airsang.com/wp-content/plugins/translatepress-multilingual/includes/trp-ajax.php","trp_wp_ajax_url":"https://www.airsang.com/wp-admin/admin-ajax.php","trp_language_to_query":"de_DE","trp_original_language":"en_US","trp_current_language":"de_DE","trp_skip_selectors":["[data-no-translation]","[data-no-dynamic-translation]","[data-trp-translate-id-innertext]","script","style","head","trp-span","translate-press","#billing_country","#shipping_country","#billing_state","#shipping_state","#select2-billing_country-results","#select2-billing_state-results","#select2-shipping_country-results","#select2-shipping_state-results","[data-trp-translate-id]","[data-trpgettextoriginal]","[data-trp-post-slug]"],"trp_base_selectors":["data-trp-translate-id","data-trpgettextoriginal","data-trp-post-slug"],"trp_attributes_selectors":{"text":{"accessor":"outertext","attribute":false},"block":{"accessor":"innertext","attribute":false},"image_src":{"selector":"img[src]","accessor":"src","attribute":true},"submit":{"selector":"input[type='submit'],input[type='button'], input[type='reset']","accessor":"value","attribute":true},"placeholder":{"selector":"input[placeholder],textarea[placeholder]","accessor":"placeholder","attribute":true},"title":{"selector":"[title]","accessor":"title","attribute":true},"a_href":{"selector":"a[href]","accessor":"href","attribute":true},"button":{"accessor":"outertext","attribute":false},"option":{"accessor":"innertext","attribute":false},"aria_label":{"selector":"[aria-label]","accessor":"aria-label","attribute":true},"video_src":{"selector":"video[src]","accessor":"src","attribute":true},"video_poster":{"selector":"video[poster]","accessor":"poster","attribute":true},"video_source_src":{"selector":"video source[src]","accessor":"src","attribute":true},"audio_src":{"selector":"audio[src]","accessor":"src","attribute":true},"audio_source_src":{"selector":"audio source[src]","accessor":"src","attribute":true},"picture_image_src":{"selector":"picture image[src]","accessor":"src","attribute":true},"picture_source_srcset":{"selector":"picture source[srcset]","accessor":"srcset","attribute":true},"image_alt":{"selector":"img[alt]","accessor":"alt","attribute":true},"meta_desc":{"selector":"meta[name=\"description\"],meta[property=\"og:title\"],meta[property=\"og:description\"],meta[property=\"og:site_name\"],meta[property=\"og:image:alt\"],meta[name=\"twitter:title\"],meta[name=\"twitter:description\"],meta[name=\"twitter:image:alt\"],meta[name=\"DC.Title\"],meta[name=\"DC.Description\"],meta[property=\"article:section\"],meta[property=\"article:tag\"]","accessor":"content","attribute":true},"page_title":{"selector":"title","accessor":"innertext","attribute":false},"meta_desc_img":{"selector":"meta[property=\"og:image\"],meta[property=\"og:image:secure_url\"],meta[name=\"twitter:image\"]","accessor":"content","attribute":true}},"trp_attributes_accessors":["outertext","innertext","src","value","placeholder","title","href","aria-label","poster","srcset","alt","content"],"gettranslationsnonceregular":"d2ac8abcc8","showdynamiccontentbeforetranslation":"","skip_strings_from_dynamic_translation":[],"skip_strings_from_dynamic_translation_for_substrings":{"href":["amazon-adsystem","googleads","g.doubleclick"]},"duplicate_detections_allowed":"100","trp_translate_numerals_opt":"no","trp_no_auto_translation_selectors":["[data-no-auto-translation]","ol.commentlist"]}; //# sourceURL=trp-dynamic-translator-js-extra </script> <script id="trp-dynamic-translator-js" src="https://www.airsang.com/wp-content/plugins/translatepress-multilingual/assets/js/trp-translate-dom-changes.js?ver=3.0.6"></script> <script id="airsang-elementor-ajax-tax-post-list-widget-js-after"> (function () { function getAjaxUrl(results) { if (results && results.getAttribute("data-ajax-url")) { return results.getAttribute("data-ajax-url"); } if (window.ajaxurl) { return window.ajaxurl; } return "https://www.airsang.com/wp-admin/admin-ajax.php"; } function init(root) { if (!root || root.dataset.atplReady === "yes") { return; } root.dataset.atplReady = "yes"; var results = root.querySelector(".airsang-ajax-tax-post-list__results"); var items = root.querySelector(".airsang-ajax-tax-post-list__items"); var status = root.querySelector("[data-atpl-status]"); var sentinel = root.querySelector("[data-atpl-sentinel]"); var viewport = root.querySelector(".airsang-ajax-tax-post-list__tabs-viewport"); if (!results || !items) { return; } var state = { termId: results.getAttribute("data-current-term") || "0", page: parseInt(results.getAttribute("data-current-page") || "1", 10) || 1, hasMore: results.getAttribute("data-has-more") === "yes", loading: false, infinite: results.getAttribute("data-enable-infinite") === "yes" }; function setStatus(text, loading) { if (!status) { return; } status.textContent = text || ""; status.classList.toggle("is-loading", !!loading); } function appendHtml(html) { if (!html) { return; } var temp = document.createElement("div"); temp.innerHTML = html; Array.prototype.slice.call(temp.children).forEach(function (node) { items.appendChild(node); }); } function requestPage(page, append) { if (state.loading) { return; } state.loading = true; results.classList.add("is-loading"); setStatus(results.getAttribute("data-loading-text") || "Loading...", true); var form = new FormData(); form.append("action", results.getAttribute("data-action") || "airsang_ajax_tax_post_list"); form.append("nonce", results.getAttribute("data-nonce") || ""); form.append("settings", results.getAttribute("data-settings") || "{}"); form.append("term_id", state.termId || "0"); form.append("page", String(page || 1)); fetch(getAjaxUrl(results), { method: "POST", credentials: "same-origin", body: form }) .then(function (response) { return response.json(); }) .then(function (payload) { if (!payload || !payload.success || !payload.data) { return; } if (append) { appendHtml(payload.data.html || ""); } else { items.innerHTML = payload.data.html || ""; } state.page = parseInt(payload.data.page || page, 10) || page; state.hasMore = !!payload.data.has_more; results.setAttribute("data-current-page", String(state.page)); results.setAttribute("data-has-more", state.hasMore ? "yes" : "no"); if (!state.hasMore) { setStatus(results.getAttribute("data-end-text") || "", false); } else { setStatus("", false); } }) .catch(function () { setStatus("", false); }) .finally(function () { state.loading = false; results.classList.remove("is-loading"); }); } function loadMore() { if (!state.infinite || !state.hasMore || state.loading) { return; } requestPage(state.page + 1, true); } root.addEventListener("click", function (event) { var tab = event.target.closest("[data-atpl-tab]"); var scroller = event.target.closest("[data-atpl-scroll]"); if (tab && root.contains(tab)) { event.preventDefault(); root.querySelectorAll("[data-atpl-tab]").forEach(function (item) { item.classList.remove("is-active"); }); tab.classList.add("is-active"); state.termId = tab.getAttribute("data-term-id") || "0"; state.page = 1; state.hasMore = true; results.setAttribute("data-current-term", state.termId); requestPage(1, false); return; } if (scroller && viewport && root.contains(scroller)) { event.preventDefault(); var dir = parseInt(scroller.getAttribute("data-atpl-scroll") || "1", 10) || 1; viewport.scrollBy({ left: dir * Math.max(160, Math.round(viewport.clientWidth * 0.7)), behavior: "smooth" }); } }); if (state.infinite && sentinel && "IntersectionObserver" in window) { var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { loadMore(); } }); }, { rootMargin: "420px 0px 420px 0px", threshold: 0 }); observer.observe(sentinel); } else if (state.infinite) { window.addEventListener("scroll", function () { var rect = root.getBoundingClientRect(); if (rect.bottom < window.innerHeight + 420) { loadMore(); } }, { passive: true }); } } function initAll(scope) { var root = scope || document; if (root.matches && root.matches("[data-airsang-ajax-tax-post-list]")) { init(root); } root.querySelectorAll && root.querySelectorAll("[data-airsang-ajax-tax-post-list]").forEach(init); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initAll(document); }); } else { initAll(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangAtplHooksBound) { return; } window.__airsangAtplHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_ajax_tax_post_list.default", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } })(); //# sourceURL=airsang-elementor-ajax-tax-post-list-widget-js-after </script> <script id="airsang-elementor-ajax-post-search-widget-js-after"> (function () { function init(root) { if (!root || root.dataset.apsReady === "yes") { return; } root.dataset.apsReady = "yes"; var form = root.querySelector(".airsang-ajax-post-search__form"); var input = root.querySelector(".airsang-ajax-post-search__input"); var button = root.querySelector(".airsang-ajax-post-search__button"); var clearButton = root.querySelector("[data-aps-clear]"); var results = root.querySelector(".airsang-ajax-post-search__results"); if (!form || !input || !results) { return; } var collapseTimer = null; function setContent(html, loading) { results.innerHTML = html || ""; results.classList.toggle("has-content", !!html); results.classList.toggle("is-loading", !!loading); } function updateValueState() { root.classList.toggle("has-value", !!(input.value || "").trim()); } function collapseResults() { if (results.classList.contains("is-loading")) { return; } setContent("", false); } function search() { var keyword = (input.value || "").trim(); var loadingText = results.getAttribute("data-loading-text") || "Loading..."; updateValueState(); setContent("<div class=\"airsang-ajax-post-search__loading\">" + loadingText + "</div>", true); if (button) { button.disabled = true; } var formData = new FormData(); formData.append("action", results.getAttribute("data-action") || "airsang_ajax_post_search"); formData.append("nonce", results.getAttribute("data-nonce") || ""); formData.append("keyword", keyword); formData.append("settings", results.getAttribute("data-settings") || "{}"); fetch(results.getAttribute("data-ajax-url") || "https://www.airsang.com/wp-admin/admin-ajax.php", { method: "POST", credentials: "same-origin", body: formData }) .then(function (response) { return response.json(); }) .then(function (payload) { if (payload && payload.success && payload.data && typeof payload.data.html === "string") { setContent(payload.data.html, false); } else { setContent("", false); } }) .catch(function () { setContent("", false); }) .finally(function () { if (button) { button.disabled = false; } }); } form.addEventListener("submit", function (event) { event.preventDefault(); search(); }); input.addEventListener("input", updateValueState); if (clearButton) { clearButton.addEventListener("click", function (event) { event.preventDefault(); input.value = ""; updateValueState(); collapseResults(); input.focus(); }); } root.addEventListener("mouseenter", function () { if (collapseTimer) { window.clearTimeout(collapseTimer); collapseTimer = null; } }); root.addEventListener("mouseleave", function () { collapseTimer = window.setTimeout(collapseResults, 260); }); document.addEventListener("click", function (event) { if (!root.contains(event.target)) { collapseResults(); } }); updateValueState(); } function initAll(scope) { var root = scope || document; if (root.matches && root.matches("[data-airsang-ajax-post-search]")) { init(root); } root.querySelectorAll && root.querySelectorAll("[data-airsang-ajax-post-search]").forEach(init); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initAll(document); }); } else { initAll(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangApsHooksBound) { return; } window.__airsangApsHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_ajax_post_search.default", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } })(); //# sourceURL=airsang-elementor-ajax-post-search-widget-js-after </script> <script id="airsang-elementor-app-data-ecosystem-widget-js-after"> (function () { function reveal(section) { if (section) { section.classList.add("is-visible"); } } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-app-data-ecosystem.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.16 }); sections.forEach(function (section) { if (!section.classList.contains("is-visible")) { observer.observe(section); } }); } function initAll(scope) { init(scope || document); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initAll(document); }); } else { initAll(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangAdeHooksBound) { return; } window.__airsangAdeHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_app_data_ecosystem.default", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } })(); //# sourceURL=airsang-elementor-app-data-ecosystem-widget-js-after </script> <script id="airsang-elementor-shopify-build-services-cards-widget-js-after"> (function () { function reveal(section) { if (section) { section.classList.add("is-visible"); } } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-shopify-build-services.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.16 }); sections.forEach(function (section) { if (!section.classList.contains("is-visible")) { observer.observe(section); } }); } function initAll(scope) { init(scope || document); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initAll(document); }); } else { initAll(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangSbsHooksBound) { return; } window.__airsangSbsHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_shopify_build_services_cards.default", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } })(); //# sourceURL=airsang-elementor-shopify-build-services-cards-widget-js-after </script> <script id="airsang-elementor-checkout-customer-journey-widget-js-after"> (function () { function reveal(section) { if (section) { section.classList.add("is-visible"); } } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-checkout-customer-journey.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.16 }); sections.forEach(function (section) { if (!section.classList.contains("is-visible")) { observer.observe(section); } }); } function initAll(scope) { init(scope || document); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initAll(document); }); } else { initAll(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangCcjHooksBound) { return; } window.__airsangCcjHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_checkout_customer_journey.default", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } })(); //# sourceURL=airsang-elementor-checkout-customer-journey-widget-js-after </script> <script id="airsang-elementor-seo-traffic-hero-widget-js-after"> (function () { function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-seo-traffic-hero.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.2 }); sections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangSthHooksBound) { return; } window.__airsangSthHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_seo_traffic_hero.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-seo-traffic-hero-widget-js-after </script> <script id="airsang-elementor-service-capability-cards-widget-js-after"> (function () { function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-service-capability-cards.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.16 }); sections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangSccHooksBound) { return; } window.__airsangSccHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_service_capability_cards.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-service-capability-cards-widget-js-after </script> <script id="airsang-elementor-why-seo-cards-widget-js-after"> (function () { function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-why-seo-cards.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.18 }); sections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangWscHooksBound) { return; } window.__airsangWscHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_why_seo_cards.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-why-seo-cards-widget-js-after </script> <script id="airsang-elementor-seo-step-image-tabs-widget-js-after"> (function () { function activate(section, index) { var buttons = section.querySelectorAll(".airsang-seo-step-tabs__step"); var panels = section.querySelectorAll(".airsang-seo-step-tabs__panel"); buttons.forEach(function (button, buttonIndex) { var active = buttonIndex === index; button.classList.toggle("is-active", active); button.setAttribute("aria-selected", active ? "true" : "false"); }); panels.forEach(function (panel, panelIndex) { var active = panelIndex === index; panel.classList.toggle("is-active", active); if (active) { panel.removeAttribute("hidden"); } else { window.setTimeout(function () { if (!panel.classList.contains("is-active")) { panel.setAttribute("hidden", "hidden"); } }, 430); } }); } function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function setupTabs(section) { if (!section || section.dataset.airsangSitReady === "yes") { return; } section.dataset.airsangSitReady = "yes"; var buttons = section.querySelectorAll(".airsang-seo-step-tabs__step"); buttons.forEach(function (button, index) { button.addEventListener("click", function () { activate(section, index); }); }); activate(section, 0); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-seo-step-tabs"); sections.forEach(setupTabs); var entranceSections = scope.querySelectorAll(".airsang-seo-step-tabs.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { entranceSections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { entranceSections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.18 }); entranceSections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangSitHooksBound) { return; } window.__airsangSitHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_seo_step_image_tabs.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-seo-step-image-tabs-widget-js-after </script> <script id="airsang-elementor-seo-process-workflow-widget-js-after"> (function () { function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-seo-process-workflow.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.18 }); sections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangSpwHooksBound) { return; } window.__airsangSpwHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_seo_process_workflow.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-seo-process-workflow-widget-js-after </script> <script id="airsang-elementor-service-tracks-cards-widget-js-after"> (function () { function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-service-tracks-cards.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.16 }); sections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangStcHooksBound) { return; } window.__airsangStcHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_service_tracks_cards.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-service-tracks-cards-widget-js-after </script> <script id="airsang-elementor-related-articles-posts-carousel-widget-js-after"> (function() { if (window.__airsangRelatedPostsCarouselReady) { return; } window.__airsangRelatedPostsCarouselReady = true; function getPerView(root) { if (window.innerWidth <= 767) { return parseInt(root.getAttribute("data-mobile") || "1", 10); } if (window.innerWidth <= 1024) { return parseInt(root.getAttribute("data-tablet") || "2", 10); } return parseInt(root.getAttribute("data-desktop") || "3", 10); } function setup(root) { if (root.dataset.airsangRelatedReady === "yes") { return; } root.dataset.airsangRelatedReady = "yes"; var viewport = root.querySelector(".airsang-related-posts-carousel__viewport"); var track = root.querySelector(".airsang-related-posts-carousel__track"); var slides = Array.prototype.slice.call(root.querySelectorAll(".airsang-related-posts-carousel__slide")); var prev = root.querySelector(".airsang-related-posts-carousel__arrow--prev"); var next = root.querySelector(".airsang-related-posts-carousel__arrow--next"); var dotsWrap = root.querySelector(".airsang-related-posts-carousel__dots"); var index = 0; var timer = null; var startX = 0; var currentX = 0; var dragging = false; if (!viewport || !track || !slides.length) { return; } function maxIndex() { return Math.max(0, slides.length - getPerView(root)); } function gapValue() { return parseFloat(getComputedStyle(track).gap || "0") || 0; } function stepSize() { var rect = slides[0].getBoundingClientRect(); return rect.width + gapValue(); } function buildDots() { if (!dotsWrap) { return; } dotsWrap.innerHTML = ""; for (var i = 0; i <= maxIndex(); i++) { var dot = document.createElement("button"); dot.type = "button"; dot.className = "airsang-related-posts-carousel__dot"; dot.setAttribute("aria-label", "Go to slide " + (i + 1)); (function(dotIndex) { dot.addEventListener("click", function() { index = dotIndex; update(); restart(); }); })(i); dotsWrap.appendChild(dot); } } function update() { var perView = getPerView(root); root.style.setProperty("--airsang-related-per-view", perView); index = Math.max(0, Math.min(index, maxIndex())); track.style.transform = "translate3d(" + (-index * stepSize()) + "px, 0, 0)"; if (dotsWrap) { Array.prototype.slice.call(dotsWrap.children).forEach(function(dot, dotIndex) { dot.classList.toggle("is-active", dotIndex === index); }); } } function go(direction) { index += direction; if (index > maxIndex()) { index = 0; } if (index < 0) { index = maxIndex(); } update(); } function stop() { if (timer) { window.clearInterval(timer); timer = null; } } function start() { stop(); if (root.getAttribute("data-autoplay") !== "yes" || maxIndex() <= 0) { return; } timer = window.setInterval(function() { go(1); }, parseInt(root.getAttribute("data-delay") || "4200", 10)); } function restart() { stop(); start(); } if (prev) { prev.addEventListener("click", function() { go(-1); restart(); }); } if (next) { next.addEventListener("click", function() { go(1); restart(); }); } viewport.addEventListener("pointerdown", function(event) { dragging = true; startX = event.clientX; currentX = startX; track.style.transition = "none"; stop(); }); window.addEventListener("pointermove", function(event) { if (!dragging) { return; } currentX = event.clientX; track.style.transform = "translate3d(" + ((-index * stepSize()) + currentX - startX) + "px, 0, 0)"; }); window.addEventListener("pointerup", function() { if (!dragging) { return; } dragging = false; track.style.transition = ""; if (Math.abs(currentX - startX) > 48) { go(currentX < startX ? 1 : -1); } else { update(); } start(); }); window.addEventListener("resize", function() { buildDots(); update(); restart(); }); buildDots(); update(); start(); } function init() { document.querySelectorAll(".airsang-related-posts-carousel").forEach(setup); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } window.addEventListener("load", init); if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_related_articles_posts_carousel.default", init); } })(); //# sourceURL=airsang-elementor-related-articles-posts-carousel-widget-js-after </script> <script id="wp-hooks-js" src="https://www.airsang.com/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script> <script id="wp-i18n-js" src="https://www.airsang.com/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script> <script id="wp-i18n-js-after"> wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); //# sourceURL=wp-i18n-js-after </script> <script id="swv-js" src="https://www.airsang.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.4"></script> <script id="contact-form-7-js-translations"> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "contact-form-7", {"translation-revision-date":"2025-10-26 03:28:49+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"de"},"This contact form is placed in the wrong place.":["Dieses Kontaktformular wurde an der falschen Stelle platziert."],"Error:":["Fehler:"]}},"comment":{"reference":"includes\/js\/index.js"}} ); //# sourceURL=contact-form-7-js-translations </script> <script id="contact-form-7-js-before"> var wpcf7 = { "api": { "root": "https:\/\/www.airsang.com\/de\/wp-json\/", "namespace": "contact-form-7\/v1" }, "cached": 1 }; //# sourceURL=contact-form-7-js-before </script> <script id="contact-form-7-js" src="https://www.airsang.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.4"></script> <script id="airsang-elementor-flip-case-stats-widget-js-after"> (function() { function formatValue(value, decimals) { var fixed = Number(value).toFixed(decimals); return decimals > 0 ? fixed : String(Math.round(Number(value))); } function animateCounter(counter) { if (!counter || counter.dataset.airsangFlipCounted === "yes") { return; } counter.dataset.airsangFlipCounted = "yes"; var target = parseFloat(counter.dataset.target || "0"); var decimals = parseInt(counter.dataset.decimals || "0", 10); var prefix = counter.dataset.prefix || ""; var suffix = counter.dataset.suffix || ""; var root = counter.closest(".airsang-flip-case-stats"); var duration = root ? parseInt(root.dataset.counterDuration || "1600", 10) : 1600; var start = null; if (!duration) { counter.textContent = prefix + formatValue(target, decimals) + suffix; return; } function step(timestamp) { if (!start) { start = timestamp; } var progress = Math.min((timestamp - start) / duration, 1); var eased = 1 - Math.pow(1 - progress, 3); var current = target * eased; counter.textContent = prefix + formatValue(current, decimals) + suffix; if (progress < 1) { window.requestAnimationFrame(step); } else { counter.textContent = prefix + formatValue(target, decimals) + suffix; } } window.requestAnimationFrame(step); } function initCounters(scope) { var counters = Array.prototype.slice.call((scope || document).querySelectorAll(".js-airsang-flip-counter")); if (!("IntersectionObserver" in window)) { counters.forEach(animateCounter); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { animateCounter(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.35 }); counters.forEach(function(counter) { observer.observe(counter); }); } function initFlip(scope) { var cards = Array.prototype.slice.call((scope || document).querySelectorAll(".airsang-flip-case-stats__card")); cards.forEach(function(card) { if (card.dataset.airsangFlipReady === "yes") { return; } card.dataset.airsangFlipReady = "yes"; card.addEventListener("click", function(event) { if (event.target.closest("a")) { return; } if (window.innerWidth <= 1024) { card.classList.toggle("is-flipped"); } }); }); } function init(scope) { initCounters(scope || document); initFlip(scope || document); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function() { init(document); }); } else { init(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_flip_case_stats.default", function($scope) { init($scope[0]); }); } })(); //# sourceURL=airsang-elementor-flip-case-stats-widget-js-after </script> <script id="airsang-elementor-process-accordion-widget-js-after"> (function() { function setItem(item, open) { var button = item.querySelector(".airsang-process-accordion__button"); var content = item.querySelector(".airsang-process-accordion__content"); item.classList.toggle("is-open", open); if (button) { button.setAttribute("aria-expanded", open ? "true" : "false"); } if (content) { if (open) { content.removeAttribute("hidden"); } else { content.setAttribute("hidden", "hidden"); } } } function initOne(root) { if (!root || root.dataset.airsangProcessAccordionReady === "yes") { return; } root.dataset.airsangProcessAccordionReady = "yes"; root.addEventListener("click", function(event) { var button = event.target.closest(".airsang-process-accordion__button"); if (!button || !root.contains(button)) { return; } var item = button.closest(".airsang-process-accordion__item"); var isOpen = item.classList.contains("is-open"); var behavior = root.getAttribute("data-behavior") || "single"; var closeAll = root.getAttribute("data-close-all") === "yes"; if (isOpen && !closeAll) { return; } if (behavior === "single" && !isOpen) { root.querySelectorAll(".airsang-process-accordion__item.is-open").forEach(function(openItem) { if (openItem !== item) { setItem(openItem, false); } }); } setItem(item, !isOpen); }); } function init(scope) { Array.prototype.slice.call((scope || document).querySelectorAll(".airsang-process-accordion")).forEach(initOne); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function() { init(document); }); } else { init(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_process_accordion.default", function($scope) { init($scope[0]); }); } })(); //# sourceURL=airsang-elementor-process-accordion-widget-js-after </script> <script id="airsang-elementor-scroll-driven-animation-widget-js-after"> (function() { if (window.__airsangScrollDrivenAnimationReady) { return; } window.__airsangScrollDrivenAnimationReady = true; var scenes = []; var ticking = false; function clamp(value, min, max) { return Math.min(max, Math.max(min, value)); } function ease(value, type) { value = clamp(value, 0, 1); if ("linear" === type) { return value; } if ("easeInOut" === type) { return value < .5 ? 4 * value * value * value : 1 - Math.pow(-2 * value + 2, 3) / 2; } return 1 - Math.pow(1 - value, 3); } function cssSizeToPx(value, axis, scene) { value = String(value || "0px").trim(); var number = parseFloat(value); if (isNaN(number)) { return 0; } if (value.indexOf("vw") > -1) { return window.innerWidth * number / 100; } if (value.indexOf("vh") > -1) { return window.innerHeight * number / 100; } if (value.indexOf("%") > -1) { var box = scene.querySelector(".airsang-scroll-scene__cluster") || scene; var size = "y" === axis ? box.offsetHeight : box.offsetWidth; return size * number / 100; } if (value.indexOf("rem") > -1) { return number * parseFloat(getComputedStyle(document.documentElement).fontSize || 16); } if (value.indexOf("em") > -1) { return number * 16; } return number; } function getCssNumber(element, name, fallback) { var value = getComputedStyle(element).getPropertyValue(name); var number = parseFloat(value); return isNaN(number) ? fallback : number; } function getProgress(scene) { var rect = scene.getBoundingClientRect(); var stickyTop = cssSizeToPx(getComputedStyle(scene).getPropertyValue("--airsang-scroll-sticky-top"), "y", scene); var range = Math.max(1, rect.height - window.innerHeight); var raw = (-rect.top + stickyTop) / range; var startOffset = parseFloat(scene.getAttribute("data-start-offset") || "0"); var endOffset = parseFloat(scene.getAttribute("data-end-offset") || "0"); var start = startOffset; var end = 1 + endOffset; if (Math.abs(end - start) < .001) { return raw >= end ? 1 : 0; } return clamp((raw - start) / (end - start), 0, 1); } function updateScene(scene) { var eased = ease(getProgress(scene), scene.getAttribute("data-easing") || "easeOut"); var media = scene.querySelectorAll(".airsang-scroll-scene__media"); var rings = scene.querySelectorAll(".airsang-scroll-scene__ring"); var corners = scene.querySelectorAll(".airsang-scroll-scene__corner"); var text = scene.querySelector(".airsang-scroll-scene__text"); var reducedMotion = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches; if (reducedMotion) { eased = 1; } if (rings.length) { var ringStartScale = getCssNumber(scene, "--airsang-ring-start-scale", .72); var ringEndScale = getCssNumber(scene, "--airsang-ring-end-scale", 1); var ringStartOpacity = getCssNumber(scene, "--airsang-ring-start-opacity", .35); var ringEndOpacity = getCssNumber(scene, "--airsang-ring-end-opacity", 1); var ringScale = ringStartScale + (ringEndScale - ringStartScale) * eased; var ringOpacity = ringStartOpacity + (ringEndOpacity - ringStartOpacity) * eased; rings.forEach(function(ring, index) { var depthScale = ringScale + (rings.length - index - 1) * .035 * (1 - eased); ring.style.opacity = ringOpacity; ring.style.transform = "translate3d(-50%, -50%, 0) scale(" + depthScale + ")"; }); } if (corners.length) { var cornerStyle = getComputedStyle(scene); var cornerMoveX = cssSizeToPx(cornerStyle.getPropertyValue("--airsang-corner-move-x"), "x", scene); var cornerMoveY = cssSizeToPx(cornerStyle.getPropertyValue("--airsang-corner-move-y"), "y", scene); var cornerStartScale = getCssNumber(scene, "--airsang-corner-start-scale", .75); var cornerEndScale = getCssNumber(scene, "--airsang-corner-end-scale", 1); var cornerStartOpacity = getCssNumber(scene, "--airsang-corner-start-opacity", .35); var cornerEndOpacity = getCssNumber(scene, "--airsang-corner-end-opacity", 1); var cornerScale = cornerStartScale + (cornerEndScale - cornerStartScale) * eased; var cornerOpacity = cornerStartOpacity + (cornerEndOpacity - cornerStartOpacity) * eased; corners.forEach(function(corner) { var isRight = corner.classList.contains("airsang-scroll-scene__corner--right"); var dirX = isRight ? 1 : -1; var dirY = isRight ? -1 : 1; var x = dirX * cornerMoveX * (1 - eased); var y = dirY * cornerMoveY * (1 - eased); corner.style.opacity = cornerOpacity; corner.style.transform = "translate3d(" + x + "px, " + y + "px, 0) scale(" + cornerScale + ")"; }); } media.forEach(function(item) { var style = getComputedStyle(item); var startX = cssSizeToPx(style.getPropertyValue("--as-start-x"), "x", scene); var startY = cssSizeToPx(style.getPropertyValue("--as-start-y"), "y", scene); var endX = cssSizeToPx(style.getPropertyValue("--as-end-x"), "x", scene); var endY = cssSizeToPx(style.getPropertyValue("--as-end-y"), "y", scene); var startScale = getCssNumber(item, "--as-start-scale", .65); var endScale = getCssNumber(item, "--as-end-scale", 1); var startRotate = getCssNumber(item, "--as-start-rotate", 0); var endRotate = getCssNumber(item, "--as-end-rotate", 0); var startOpacity = getCssNumber(item, "--as-start-opacity", 0); var endOpacity = getCssNumber(item, "--as-end-opacity", 1); var x = startX + (endX - startX) * eased; var y = startY + (endY - startY) * eased; var scale = startScale + (endScale - startScale) * eased; var rotate = startRotate + (endRotate - startRotate) * eased; var opacity = startOpacity + (endOpacity - startOpacity) * eased; item.style.opacity = opacity; item.style.transform = "translate3d(-50%, -50%, 0) translate3d(" + x + "px, " + y + "px, 0) scale(" + scale + ") rotate(" + rotate + "deg)"; }); if (text) { var textOpacity = clamp((eased - .38) / .35, 0, 1); var textLift = (1 - textOpacity) * 34; text.style.opacity = textOpacity; text.style.transform = "translate3d(-50%, calc(-50% + var(--airsang-scroll-text-y, 0px) + " + textLift + "px), 0) scale(" + (.96 + textOpacity * .04) + ")"; } } function requestUpdate() { if (ticking) { return; } ticking = true; window.requestAnimationFrame(function() { scenes.forEach(updateScene); ticking = false; }); } function init() { scenes = Array.prototype.slice.call(document.querySelectorAll(".airsang-scroll-scene")); requestUpdate(); } document.addEventListener("DOMContentLoaded", init); window.addEventListener("load", init); window.addEventListener("scroll", requestUpdate, { passive: true }); window.addEventListener("resize", requestUpdate); if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_scroll_driven_animation.default", function() { init(); }); } init(); })(); //# sourceURL=airsang-elementor-scroll-driven-animation-widget-js-after </script> <script id="airsang-elementor-dynamic-hashtag-headline-widget-js-after"> (function() { if (window.__airsangDynamicHashtagHeadlineReady) { return; } window.__airsangDynamicHashtagHeadlineReady = true; function setup(root) { if (root.dataset.airsangDynamicHashtagReady === "yes") { return; } root.dataset.airsangDynamicHashtagReady = "yes"; var viewport = root.querySelector(".airsang-dynamic-hashtag-headline__word-viewport"); var track = root.querySelector(".airsang-dynamic-hashtag-headline__word-track"); var items = track ? Array.prototype.slice.call(track.querySelectorAll(".airsang-dynamic-hashtag-headline__word")) : []; if (!viewport || !track || items.length <= 1) { return; } var interval = parseInt(root.getAttribute("data-interval") || "1800", 10); var pauseOnHover = root.getAttribute("data-pause-hover") === "yes"; var index = 0; var timer = null; function measure() { var maxHeight = 0; items.forEach(function(item) { item.style.height = "auto"; maxHeight = Math.max(maxHeight, item.offsetHeight); }); if (maxHeight > 0) { viewport.style.height = maxHeight + "px"; items.forEach(function(item) { item.style.height = maxHeight + "px"; }); } } function update() { measure(); var itemHeight = viewport.offsetHeight || items[index].offsetHeight || 0; track.style.transform = "translate3d(0," + (-index * itemHeight) + "px,0)"; items.forEach(function(item, itemIndex) { item.classList.toggle("is-active", itemIndex === index); }); } function changeWord() { index = (index + 1) % items.length; update(); } function start() { stop(); timer = window.setInterval(changeWord, Math.max(interval, 600)); } function stop() { if (timer) { window.clearInterval(timer); timer = null; } } if (pauseOnHover) { root.addEventListener("mouseenter", stop); root.addEventListener("mouseleave", start); } update(); window.addEventListener("resize", update); start(); } function init() { document.querySelectorAll(".airsang-dynamic-hashtag-headline").forEach(setup); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } window.addEventListener("load", init); if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_dynamic_hashtag_headline.default", init); } })(); //# sourceURL=airsang-elementor-dynamic-hashtag-headline-widget-js-after </script> <script id="airsang-elementor-sticky-tabs-image-carousel-widget-js-after"> (function() { function init(root) { if (!root || root.dataset.airsangStickyCarouselReady === "1") { return; } root.dataset.airsangStickyCarouselReady = "1"; var buttons = Array.prototype.slice.call(root.querySelectorAll(".airsang-sticky-tabs-carousel__tab")); var panels = Array.prototype.slice.call(root.querySelectorAll(".airsang-sticky-tabs-carousel__panel")); var ticking = false; var autoplayTimer = null; function setActiveImage(panel) { var items = Array.prototype.slice.call(panel.querySelectorAll(".airsang-sticky-tabs-carousel__item")); var images = Array.prototype.slice.call(panel.querySelectorAll(".airsang-sticky-tabs-carousel__image")); var visualCard = panel.querySelector(".airsang-sticky-tabs-carousel__visual-card"); var trigger = window.innerHeight * 0.46; var activeIndex = 0; var closest = Infinity; if (visualCard) { var visualRect = visualCard.getBoundingClientRect(); trigger = visualRect.top + visualRect.height / 2; } items.forEach(function(item, index) { var rect = item.getBoundingClientRect(); var center = rect.top + rect.height / 2; var distance = Math.abs(center - trigger); if (distance < closest) { closest = distance; activeIndex = index; } }); items.forEach(function(item, index) { item.classList.toggle("is-active", index === activeIndex); }); images.forEach(function(image, index) { image.classList.toggle("is-active", index === activeIndex); image.classList.toggle("is-before", index < activeIndex); image.classList.toggle("is-after", index > activeIndex); }); } function update() { ticking = false; panels.forEach(function(panel) { if (panel.classList.contains("is-active")) { setActiveImage(panel); } }); } function requestUpdate() { if (ticking) { return; } ticking = true; window.requestAnimationFrame(update); } function updateMobileDots(panel) { var track = panel.querySelector(".airsang-sticky-tabs-carousel__mobile-track"); var dots = Array.prototype.slice.call(panel.querySelectorAll("[data-mobile-dot]")); var slides = Array.prototype.slice.call(panel.querySelectorAll("[data-mobile-slide]")); if (!track || !dots.length || !slides.length) { return; } var active = 0; var trackRect = track.getBoundingClientRect(); var trackCenter = trackRect.left + trackRect.width / 2; var closest = Infinity; slides.forEach(function(slide, index) { var rect = slide.getBoundingClientRect(); var center = rect.left + rect.width / 2; var distance = Math.abs(center - trackCenter); if (distance < closest) { closest = distance; active = index; } }); dots.forEach(function(dot, index) { dot.classList.toggle("is-active", index === active); }); } function bindMobileCarousel(panel) { var track = panel.querySelector(".airsang-sticky-tabs-carousel__mobile-track"); var dots = Array.prototype.slice.call(panel.querySelectorAll("[data-mobile-dot]")); if (!track || track.dataset.bound === "1") { return; } track.dataset.bound = "1"; track.addEventListener("scroll", function() { window.requestAnimationFrame(function() { updateMobileDots(panel); }); }, { passive: true }); dots.forEach(function(dot) { dot.addEventListener("click", function() { var index = parseInt(dot.dataset.mobileDot || "0", 10); scrollMobileTo(panel, index, "smooth"); }); }); } function scrollMobileTo(panel, index, behavior) { var track = panel.querySelector(".airsang-sticky-tabs-carousel__mobile-track"); var slides = Array.prototype.slice.call(panel.querySelectorAll("[data-mobile-slide]")); if (!track || !slides[index]) { return; } track.scrollTo({ left: slides[index].offsetLeft, behavior: behavior || "smooth" }); } function activate(index) { buttons.forEach(function(button, buttonIndex) { var active = buttonIndex === index; button.classList.toggle("is-active", active); button.setAttribute("aria-selected", active ? "true" : "false"); button.tabIndex = active ? 0 : -1; }); panels.forEach(function(panel, panelIndex) { var active = panelIndex === index; panel.classList.toggle("is-active", active); if (active) { panel.removeAttribute("hidden"); bindMobileCarousel(panel); updateMobileDots(panel); } else { panel.setAttribute("hidden", "hidden"); } }); root.dataset.active = String(index); requestUpdate(); } function startAutoplay() { if (root.dataset.mobileAutoplay !== "1") { return; } var delay = parseInt(root.dataset.mobileDelay || "3000", 10); window.clearInterval(autoplayTimer); autoplayTimer = window.setInterval(function() { if (window.innerWidth > 767) { return; } var panel = root.querySelector(".airsang-sticky-tabs-carousel__panel.is-active"); var track = panel ? panel.querySelector(".airsang-sticky-tabs-carousel__mobile-track") : null; var slides = panel ? Array.prototype.slice.call(panel.querySelectorAll("[data-mobile-slide]")) : []; if (!track || slides.length < 2) { return; } var activeDot = panel.querySelector("[data-mobile-dot].is-active"); var current = activeDot ? parseInt(activeDot.dataset.mobileDot || "0", 10) : 0; var next = (current + 1) % slides.length; scrollMobileTo(panel, next, "smooth"); }, delay); } buttons.forEach(function(button, index) { button.addEventListener("click", function() { activate(index); }); }); activate(parseInt(root.dataset.active || "0", 10)); startAutoplay(); window.addEventListener("scroll", requestUpdate, { passive: true }); window.addEventListener("resize", requestUpdate); window.addEventListener("load", requestUpdate); } function boot(scope) { (scope || document).querySelectorAll(".airsang-sticky-tabs-carousel").forEach(init); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function() { boot(document); }); } else { boot(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_sticky_tabs_image_carousel.default", function($scope) { boot($scope && $scope[0] ? $scope[0] : document); }); } })(); //# sourceURL=airsang-elementor-sticky-tabs-image-carousel-widget-js-after </script> <script id="airsang-elementor-industry-experience-brand-wall-widget-js-after"> (function () { function formatNumber(value, separator) { var rounded = Math.round(value); if (separator !== "yes") { return String(rounded); } return String(rounded).replace(/\B(?=(\d{3})+(?!\d))/g, ","); } function animateCounter(counter) { if (!counter || counter.dataset.airsangAnimated === "yes") { return; } counter.dataset.airsangAnimated = "yes"; var target = parseFloat(counter.dataset.target || "0"); var suffix = counter.dataset.suffix || ""; var duration = parseInt(counter.dataset.duration || "1800", 10); var separator = counter.dataset.separator || "no"; var startTime = null; function tick(timestamp) { if (!startTime) { startTime = timestamp; } var progress = Math.min((timestamp - startTime) / duration, 1); var eased = 1 - Math.pow(1 - progress, 3); var current = target * eased; counter.textContent = formatNumber(current, separator) + suffix; if (progress < 1) { window.requestAnimationFrame(tick); } else { counter.textContent = formatNumber(target, separator) + suffix; } } window.requestAnimationFrame(tick); } function initCounters(root) { var scope = root || document; var counters = scope.querySelectorAll(".airsang-industry-brand-wall__counter"); if (!("IntersectionObserver" in window)) { counters.forEach(animateCounter); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { animateCounter(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.35 }); counters.forEach(function (counter) { observer.observe(counter); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initCounters(document); }); } else { initCounters(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_industry_experience_brand_wall.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; initCounters(node); }); } })(); //# sourceURL=airsang-elementor-industry-experience-brand-wall-widget-js-after </script> <script id="airsang-elementor-website-case-scroll-showcase-widget-js-after"> (function () { function setStackState(cards, activeIndex) { var total = cards.length; cards.forEach(function (card) { card.classList.remove("is-active", "is-prev", "is-next", "is-hidden"); card.classList.add("is-hidden"); }); if (!total) { return; } var prevIndex = (activeIndex - 1 + total) % total; var nextIndex = (activeIndex + 1) % total; cards[activeIndex].classList.remove("is-hidden"); cards[activeIndex].classList.add("is-active"); if (total > 1) { cards[nextIndex].classList.remove("is-hidden"); cards[nextIndex].classList.add("is-next"); } if (total > 2) { cards[prevIndex].classList.remove("is-hidden"); cards[prevIndex].classList.add("is-prev"); } } function initViewport(viewport) { if (!viewport || viewport.dataset.airsangWcssReady === "yes") { return; } var cards = Array.prototype.slice.call(viewport.querySelectorAll(".airsang-website-case-scroll__case-card")); if (!cards.length) { return; } viewport.dataset.airsangWcssReady = "yes"; var activeIndex = cards.findIndex(function (card) { return card.classList.contains("is-active"); }); if (activeIndex < 0) { activeIndex = 0; } setStackState(cards, activeIndex); if (cards.length < 2 || window.matchMedia("(prefers-reduced-motion: reduce)").matches) { return; } var interval = parseInt(viewport.dataset.interval || "3000", 10); var direction = viewport.dataset.direction === "down" ? -1 : 1; var paused = false; var root = viewport.closest(".airsang-website-case-scroll"); interval = Math.max(800, Math.min(interval, 20000)); function step() { if (paused) { return; } activeIndex = (activeIndex + direction + cards.length) % cards.length; setStackState(cards, activeIndex); } if (root && root.classList.contains("is-pause-on-hover")) { viewport.addEventListener("mouseenter", function () { paused = true; }); viewport.addEventListener("mouseleave", function () { paused = false; }); } viewport._airsangWcssTimer = window.setInterval(step, interval); } function init(root) { var scope = root || document; var viewports = scope.querySelectorAll(".airsang-website-case-scroll__case-viewport"); viewports.forEach(function (viewport) { if (viewport._airsangWcssTimer) { window.clearInterval(viewport._airsangWcssTimer); viewport.dataset.airsangWcssReady = ""; } initViewport(viewport); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_website_case_scroll_showcase.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } })(); //# sourceURL=airsang-elementor-website-case-scroll-showcase-widget-js-after </script> <script id="airsang-elementor-platform-logo-marquee-js-after"> (function () { function init(root) { if (root.dataset.asMarqueeReady) return; root.dataset.asMarqueeReady = '1'; var viewport = root.querySelector('.as-platform-marquee__viewport'); var track = root.querySelector('.as-platform-marquee__track'); var group = root.querySelector('.as-platform-marquee__group'); if (!viewport || !track || !group) return; function rebuild() { track.querySelectorAll('[data-as-marquee-clone]').forEach(function (clone) { clone.remove(); }); var width = group.getBoundingClientRect().width; if (!width) return; var copies = Math.max(2, Math.ceil(viewport.clientWidth / width) + 2); for (var i = 1; i < copies; i++) { var clone = group.cloneNode(true); clone.setAttribute('data-as-marquee-clone', ''); clone.setAttribute('aria-hidden', 'true'); clone.querySelectorAll('a').forEach(function (link) { link.tabIndex = -1; }); clone.querySelectorAll('img').forEach(function (image) { image.alt = ''; image.loading = 'lazy'; }); track.appendChild(clone); } root.style.setProperty('--as-group-width', width + 'px'); root.classList.add('is-ready'); } rebuild(); if (window.ResizeObserver) { var observer = new ResizeObserver(rebuild); observer.observe(group); observer.observe(viewport); } else { window.addEventListener('resize', rebuild); } } function scan(scope) { if (scope.matches && scope.matches('[data-as-platform-marquee]')) init(scope); scope.querySelectorAll('[data-as-platform-marquee]').forEach(init); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { scan(document); }); } else { scan(document); } if (window.jQuery) { window.jQuery(window).on('elementor/frontend/init', function () { elementorFrontend.hooks.addAction('frontend/element_ready/airsang_platform_logo_marquee.default', function ($scope) { scan($scope[0]); }); }); } })(); //# sourceURL=airsang-elementor-platform-logo-marquee-js-after </script> <script id="airsang-why-video-mask-widget-js-after"> (function () { function init(root) { if (root.dataset.asWhyMaskReady) return; root.dataset.asWhyMaskReady = '1'; var video = root.querySelector('.as-why-mask__video'); var media = root.querySelector('.as-why-mask__media'); if (!video) return; var reduced = window.matchMedia('(prefers-reduced-motion: reduce)'); video.muted = true; function pause() { video.pause(); root.classList.remove('is-playing'); } function play() { if (reduced.matches || document.hidden) return; if (!video.src) { video.src = video.dataset.src; video.load(); } var result = video.play(); if (result && result.catch) result.catch(pause); } video.addEventListener('playing', function () { root.classList.add('is-playing'); }); video.addEventListener('pause', function () { root.classList.remove('is-playing'); }); if ('IntersectionObserver' in window) { var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { root.dataset.asWhyMaskVisible = entry.isIntersecting ? '1' : '0'; if (entry.isIntersecting) play(); else pause(); }); }, { threshold: 0.2 }); observer.observe(media || root); } else { play(); } document.addEventListener('visibilitychange', function () { if (document.hidden) pause(); else if (root.dataset.asWhyMaskVisible === '1') play(); }); if (reduced.addEventListener) reduced.addEventListener('change', function () { if (reduced.matches) pause(); else if (root.dataset.asWhyMaskVisible === '1') play(); }); } function scan(scope) { if (scope.matches && scope.matches('[data-as-why-mask]')) init(scope); scope.querySelectorAll('[data-as-why-mask]').forEach(init); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { scan(document); }); } else { scan(document); } function bindElementor() { elementorFrontend.hooks.addAction('frontend/element_ready/airsang_why_video_mask.default', function ($scope) { scan($scope[0]); }); } if (window.elementorFrontend && elementorFrontend.hooks) bindElementor(); else if (window.jQuery) window.jQuery(window).on('elementor/frontend/init', bindElementor); })(); //# sourceURL=airsang-why-video-mask-widget-js-after </script> <script id="elementor-webpack-runtime-js" src="https://www.airsang.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=4.2.3"></script> <script id="elementor-frontend-modules-js" src="https://www.airsang.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=4.2.3"></script> <script id="jquery-ui-core-js-before"> jQuery.uiBackCompat = true; //# sourceURL=jquery-ui-core-js-before </script> <script id="jquery-ui-core-js" src="https://www.airsang.com/wp-includes/js/jquery/ui/core.min.js?ver=1.14.2"></script> <script id="elementor-frontend-js-before"> var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Auf Facebook teilen","shareOnX":"Auf X teilen","pinIt":"Anpinnen","download":"Herunterladen","downloadImage":"Bild herunterladen","fullscreen":"Vollbild","zoom":"Zoom","share":"Aktie","playVideo":"Video abspielen","previous":"Vorherige","next":"N\u00e4chste","close":"Schlie\u00dfen","a11yCarouselPrevSlideMessage":"Vorherige Folie","a11yCarouselNextSlideMessage":"N\u00e4chste Folie","a11yCarouselFirstSlideMessage":"Dies ist die erste Folie","a11yCarouselLastSlideMessage":"Dies ist die letzte Folie.","a11yCarouselPaginationBulletMessage":"Zur Folie gehen"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobil Hochformat","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobil Querformat","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Hochformat","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Querformat","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Breitbild","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":false},"version":"4.2.3","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"container":true,"e_optimized_markup":true,"e_panel_promotions":true,"theme_builder_v2":true,"hello-theme-header-footer":true,"e_pro_free_trial_popup":true,"nested-elements":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"e_opt_in_v4_page":true,"e_components":true,"e_interactions":true,"e_widget_creation":true,"import-export-customization":true,"e_pro_atomic_form":true,"e_pro_collection_loop":true,"mega-menu":true,"e_pro_variables":true,"e_pro_interactions":true},"urls":{"assets":"https:\/\/www.airsang.com\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/www.airsang.com\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/www.airsang.com\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"6f96742e21","atomicFormsSendForm":"96751177e0"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","woocommerce_notices_elements":[]},"post":{"id":9854,"title":"What%20Is%20SEO%20Title%20in%20WordPress%3F%20A%20Beginner-Friendly%20Guide","excerpt":"","featuredImage":"https:\/\/www.airsang.com\/wp-content\/uploads\/2026\/05\/image-105-1024x576.png"}}; //# sourceURL=elementor-frontend-js-before </script> <script id="elementor-frontend-js" src="https://www.airsang.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=4.2.3"></script> <script id="e-sticky-js" src="https://www.airsang.com/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=4.2.2"></script> <script id="sourcebuster-js-js" src="https://www.airsang.com/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=10.4.4"></script> <script id="wc-order-attribution-js-extra"> var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https://www.airsang.com/wp-admin/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}}; //# sourceURL=wc-order-attribution-js-extra </script> <script id="wc-order-attribution-js" src="https://www.airsang.com/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=10.4.4"></script> <script id="google-recaptcha-js" src="https://www.google.com/recaptcha/api.js?render=6LddcCosAAAAAO2XsAPM-YS98Y8FSxZDeKfsJjyc&ver=3.0"></script> <script id="wp-polyfill-js" src="https://www.airsang.com/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0"></script> <script id="wpcf7-recaptcha-js-before"> var wpcf7_recaptcha = { "sitekey": "6LddcCosAAAAAO2XsAPM-YS98Y8FSxZDeKfsJjyc", "actions": { "homepage": "homepage", "contactform": "contactform" } }; //# sourceURL=wpcf7-recaptcha-js-before </script> <script id="wpcf7-recaptcha-js" src="https://www.airsang.com/wp-content/plugins/contact-form-7/modules/recaptcha/index.js?ver=6.1.4"></script> <script id="elementor-pro-webpack-runtime-js" src="https://www.airsang.com/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=4.2.2"></script> <script id="elementor-pro-frontend-js-before"> var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/www.airsang.com\/wp-admin\/admin-ajax.php","nonce":"e4c83ce6e8","urls":{"assets":"https:\/\/www.airsang.com\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/www.airsang.com\/de\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":true},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},"woocommerce":{"menu_cart":{"cart_page_url":"https:\/\/www.airsang.com\/de\/wagen-2\/","checkout_page_url":"https:\/\/www.airsang.com\/de\/checkout-2\/","fragments_nonce":"b224913668"}},"facebook_sdk":{"lang":"de_DE","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/www.airsang.com\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}}; //# sourceURL=elementor-pro-frontend-js-before </script> <script id="elementor-pro-frontend-js" src="https://www.airsang.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=4.2.2"></script> <script id="pro-elements-handlers-js" src="https://www.airsang.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=4.2.2"></script> <script id="wp-emoji-settings" type="application/json"> {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.airsang.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.4"}} </script> <script type="module"> /*! This file is auto-generated */ var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); //# sourceURL=https://www.airsang.com/wp-includes/js/wp-emoji-loader.min.js </script> <script> (function() { function initCaseCenter(root) { if (!root || root.dataset.airsangCaseCenterReady === 'yes') { return; } root.dataset.airsangCaseCenterReady = 'yes'; var results = root.querySelector('.airsang-case-center__results'); var clearButton = root.querySelector('[data-clear-filter]'); var selected = {}; if (!results) { return; } var loadMoreButton = root.querySelector('[data-load-more]'); var currentPage = parseInt(results.getAttribute('data-current-page') || '1', 10) || 1; function resetDropdownPosition(dropdown) { var menu = dropdown ? dropdown.querySelector('.airsang-case-center__dropdown-menu') : null; if (!menu) { return; } menu.style.top = ''; menu.style.left = ''; menu.style.right = ''; menu.style.bottom = ''; menu.style.maxHeight = ''; } function positionDropdownMenu(dropdown) { var menu = dropdown ? dropdown.querySelector('.airsang-case-center__dropdown-menu') : null; var toggle = dropdown ? dropdown.querySelector('[data-dropdown-toggle]') : null; if (!menu || !toggle) { return; } if (!window.matchMedia('(max-width: 767px)').matches) { resetDropdownPosition(dropdown); return; } var filters = root.querySelector('.airsang-case-center__filters'); var rect = toggle.getBoundingClientRect(); var filtersRect = filters ? filters.getBoundingClientRect() : rect; var side = 16; var gap = 10; var top = Math.max(side, Math.max(rect.bottom, filtersRect.bottom) + gap); var maxHeight = Math.max(180, window.innerHeight - top - side); menu.style.top = top + 'px'; menu.style.left = side + 'px'; menu.style.right = side + 'px'; menu.style.bottom = 'auto'; menu.style.maxHeight = maxHeight + 'px'; } function closeDropdowns(except) { root.querySelectorAll('.airsang-case-center__dropdown.is-open').forEach(function(dropdown) { if (except !== dropdown) { dropdown.classList.remove('is-open'); resetDropdownPosition(dropdown); var button = dropdown.querySelector('[data-dropdown-toggle]'); if (button) { button.setAttribute('aria-expanded', 'false'); } } }); } function repositionOpenDropdowns() { root.querySelectorAll('.airsang-case-center__dropdown.is-open').forEach(positionDropdownMenu); } var repositionFrame = null; function queueRepositionOpenDropdowns() { if (repositionFrame) { return; } repositionFrame = window.requestAnimationFrame(function() { repositionFrame = null; repositionOpenDropdowns(); }); } window.addEventListener('resize', queueRepositionOpenDropdowns); window.addEventListener('scroll', queueRepositionOpenDropdowns, true); function getSelectedTerms() { return Object.keys(selected).map(function(key) { return selected[key]; }).filter(function(value) { return parseInt(value, 10) > 0; }); } function updateAllState() { var hasFilters = getSelectedTerms().length > 0; if (clearButton) { clearButton.classList.toggle('is-active', !hasFilters); } } function setLoadMoreState(hasMore) { if (!loadMoreButton) { return; } loadMoreButton.hidden = !hasMore; loadMoreButton.disabled = false; } function appendCards(html) { var grid = results.querySelector('.airsang-case-center__grid'); if (!grid) { results.insertAdjacentHTML('beforeend', html); return; } var temp = document.createElement('div'); temp.innerHTML = html; var incomingGrid = temp.querySelector('.airsang-case-center__grid'); if (!incomingGrid) { results.insertAdjacentHTML('beforeend', html); return; } Array.prototype.slice.call(incomingGrid.children).forEach(function(card) { grid.appendChild(card); }); } function applyFilters(append) { append = append === true; var settings = results.getAttribute('data-settings') || '{}'; var data = new FormData(); var nextPage = append ? currentPage + 1 : 1; data.append('action', 'airsang_case_center_filter'); data.append('nonce', results.getAttribute('data-nonce') || ''); data.append('settings', settings); data.append('terms', JSON.stringify(getSelectedTerms())); data.append('page', String(nextPage)); results.classList.add('is-loading'); if (loadMoreButton) { loadMoreButton.disabled = true; } fetch(results.getAttribute('data-ajax-url'), { method: 'POST', credentials: 'same-origin', body: data }) .then(function(response) { return response.json(); }) .then(function(payload) { if (payload && payload.success && payload.data && typeof payload.data.html === 'string') { if (append) { appendCards(payload.data.html); } else { results.innerHTML = payload.data.html; } currentPage = parseInt(payload.data.page || nextPage, 10) || nextPage; results.setAttribute('data-current-page', String(currentPage)); results.setAttribute('data-has-more', payload.data.has_more ? 'yes' : 'no'); setLoadMoreState(!!payload.data.has_more); } }) .catch(function() {}) .finally(function() { results.classList.remove('is-loading'); if (loadMoreButton) { loadMoreButton.disabled = false; } }); } root.addEventListener('click', function(event) { var toggle = event.target.closest('[data-dropdown-toggle]'); var item = event.target.closest('[data-filter-term]'); var clear = event.target.closest('[data-clear-filter]'); var more = event.target.closest('[data-load-more]'); if (toggle && root.contains(toggle)) { event.preventDefault(); var dropdown = toggle.closest('.airsang-case-center__dropdown'); if (!dropdown) { return; } var isOpen = dropdown.classList.contains('is-open'); closeDropdowns(dropdown); if (isOpen) { dropdown.classList.remove('is-open'); resetDropdownPosition(dropdown); toggle.setAttribute('aria-expanded', 'false'); } else { dropdown.classList.add('is-open'); positionDropdownMenu(dropdown); toggle.setAttribute('aria-expanded', 'true'); } return; } if (more && root.contains(more)) { event.preventDefault(); applyFilters(true); return; } if (item && root.contains(item)) { var group = item.closest('[data-filter-group]'); var groupKey = group ? group.getAttribute('data-filter-group') : ''; var term = parseInt(item.getAttribute('data-filter-term') || '0', 10); var label = group ? group.querySelector('[data-filter-label]') : null; group.querySelectorAll('[data-filter-term]').forEach(function(other) { other.classList.remove('is-active'); }); item.classList.add('is-active'); if (term > 0) { selected[groupKey] = term; if (label) { label.textContent = item.getAttribute('data-filter-term-name') || item.textContent; } } else { delete selected[groupKey]; if (label) { label.textContent = item.getAttribute('data-filter-term-name') || item.textContent; } } var activeToggle = group.querySelector('[data-dropdown-toggle]'); if (activeToggle) { activeToggle.classList.toggle('is-active', term > 0); activeToggle.setAttribute('aria-expanded', 'false'); } closeDropdowns(); updateAllState(); applyFilters(false); return; } if (clear && root.contains(clear)) { selected = {}; root.querySelectorAll('.airsang-case-center__dropdown').forEach(function(dropdown) { var first = dropdown.querySelector('[data-filter-term="0"]'); var label = dropdown.querySelector('[data-filter-label]'); dropdown.querySelectorAll('[data-filter-term]').forEach(function(other) { other.classList.remove('is-active'); }); if (first) { first.classList.add('is-active'); if (label) { label.textContent = first.getAttribute('data-filter-term-name') || first.textContent; } } var button = dropdown.querySelector('[data-dropdown-toggle]'); if (button) { button.classList.remove('is-active'); } }); closeDropdowns(); updateAllState(); applyFilters(false); } }); document.addEventListener('click', function(event) { if (!root.contains(event.target)) { closeDropdowns(); } }); } function initAllCaseCenters(scope) { (scope || document).querySelectorAll('[data-airsang-case-center]').forEach(initCaseCenter); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initAllCaseCenters(document); }); } else { initAllCaseCenters(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_case_center_post_filter.default', function($scope) { var node = $scope && $scope[0] ? $scope[0] : document; initAllCaseCenters(node); }); } })(); </script> <script> (function () { if (window.__airsangPostShareLoaded) return; window.__airsangPostShareLoaded = true; function copyLink(url) { if (navigator.clipboard && navigator.clipboard.writeText) return navigator.clipboard.writeText(url); return new Promise(function (resolve, reject) { var input = document.createElement('textarea'); input.value = url; input.style.position = 'fixed'; input.style.opacity = '0'; document.body.appendChild(input); input.select(); try { if (document.execCommand('copy')) resolve(); else reject(new Error('copy failed')); } catch (error) { reject(error); } input.remove(); }); } function shareUrl(platform, url, title) { var page = encodeURIComponent(url); var text = encodeURIComponent(title); switch (platform) { case 'weibo': return 'https://service.weibo.com/share/share.php?url=' + page + '&title=' + text; case 'facebook': return 'https://www.facebook.com/sharer/sharer.php?u=' + page; case 'x': return 'https://twitter.com/intent/tweet?url=' + page + '&text=' + text; case 'linkedin': return 'https://www.linkedin.com/sharing/share-offsite/?url=' + page; case 'whatsapp': return 'https://api.whatsapp.com/send?text=' + encodeURIComponent(title + ' ' + url); case 'pinterest': return 'https://pinterest.com/pin/create/button/?url=' + page + '&description=' + text; case 'email': return 'mailto:?subject=' + text + '&body=' + page; default: return ''; } } function init(scope) { var root = scope && scope[0] ? scope[0] : scope; if (!root || !root.querySelectorAll) return; var widgets = root.matches && root.matches('[data-airsang-post-share]') ? [root] : root.querySelectorAll('[data-airsang-post-share]'); Array.prototype.forEach.call(widgets, function (widget) { if (widget.dataset.shareReady === 'yes') return; widget.dataset.shareReady = 'yes'; widget.addEventListener('click', function (event) { var button = event.target.closest('[data-platform]'); if (!button || !widget.contains(button)) return; var platform = button.dataset.platform; var url = widget.dataset.shareUrl || window.location.href.split('#')[0]; var title = widget.dataset.shareTitle || document.title; var status = widget.querySelector('.airsang-post-share__status'); var appNames = { tiktok: 'TikTok', douyin: 'Douyin', xiaohongshu: 'RedNote' }; var requestedApp = appNames[platform]; function report(message) { window.clearTimeout(widget.shareStatusTimer); status.textContent = message; if (message) widget.shareStatusTimer = window.setTimeout(function () { status.textContent = ''; }, 4000); } function copyFor(destination) { copyLink(url).then(function () { report(destination ? '链接已复制,可粘贴到' + destination : '链接已复制'); }).catch(function () { report('复制失败,请手动复制地址栏链接'); }); } if ((platform === 'native' || requestedApp) && navigator.share) { if (requestedApp) report('请在分享面板中选择' + requestedApp); navigator.share({ title: title, url: url }).then(function () { if (requestedApp) report('分享面板已关闭'); }).catch(function (error) { if (error.name === 'AbortError') { report(''); return; } copyLink(url).then(function () { report('无法打开系统分享,链接已复制'); }).catch(function () { report('分享失败,请手动复制地址栏链接'); }); }); return; } if (platform === 'native' || platform === 'copy' || platform === 'wechat' || requestedApp || platform === 'youtube') { var destination = requestedApp || (platform === 'wechat' ? 'WeChat' : platform === 'youtube' ? 'YouTube' : ''); copyFor(destination); return; } var target = shareUrl(platform, url, title); if (!target) return; if (platform === 'email') { window.location.href = target; return; } var popup = window.open(target, '_blank', 'width=720,height=560'); if (popup) popup.opener = null; else report('浏览器拦截了分享窗口'); }); }); } function initPage() { init(document); } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initPage); else initPage(); function registerElementor() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_post_share.default', init); } } registerElementor(); window.addEventListener('elementor/frontend/init', registerElementor); })(); </script> <script> (function() { if (window.__airsangThreeRowVideoMarqueeReady) { return; } window.__airsangThreeRowVideoMarqueeReady = true; var mobileQuery = window.matchMedia('(max-width: 1024px)'); var activeCard = null; var activeVideo = null; var viewportObserver = null; function configureVideo(video) { video.muted = true; video.defaultMuted = true; video.playsInline = true; video.loop = true; video.controls = false; video.preload = 'auto'; video.disablePictureInPicture = true; video.setAttribute('muted', ''); video.setAttribute('playsinline', ''); video.setAttribute('webkit-playsinline', ''); video.setAttribute('x5-playsinline', ''); video.setAttribute('x5-video-player-fullscreen', 'false'); video.setAttribute('loop', ''); video.setAttribute('disablepictureinpicture', ''); video.setAttribute('disableremoteplayback', ''); video.setAttribute('controlslist', 'nodownload noplaybackrate noremoteplayback nofullscreen'); video.removeAttribute('controls'); } function createVideo(card) { var url = card ? card.getAttribute('data-video-url') : ''; if (!card || !url) { return null; } var existing = card.querySelector('.airsang-three-video-marquee__dynamic-video'); if (existing) { return existing; } var video = document.createElement('video'); var content = card.querySelector('.airsang-three-video-marquee__content'); video.className = 'airsang-three-video-marquee__media airsang-three-video-marquee__dynamic-video'; configureVideo(video); video.src = url; video.addEventListener('playing', function() { card.classList.remove('is-video-loading'); card.classList.add('is-video-playing'); }, { once: true }); video.addEventListener('error', function() { if (activeCard === card) { stopActiveCard(); } }, { once: true }); card.insertBefore(video, content || null); return video; } function releaseVideo(video) { if (!video) { return; } video.pause(); video.removeAttribute('src'); video.load(); video.remove(); } function stopCard(card) { if (!card) { return; } var video = card.querySelector('.airsang-three-video-marquee__dynamic-video'); var row = card.closest('.airsang-three-video-marquee__row'); releaseVideo(video); card.classList.remove('is-video-loading', 'is-video-playing'); if (row) { row.classList.remove('is-interacting'); } if (activeCard === card) { activeCard = null; activeVideo = null; } } function stopActiveCard() { if (activeCard) { stopCard(activeCard); } } function playCard(card) { if (!card || !card.getAttribute('data-video-url')) { return; } if (activeCard && activeCard !== card) { stopActiveCard(); } var video = createVideo(card); var row = card.closest('.airsang-three-video-marquee__row'); if (!video) { return; } activeCard = card; activeVideo = video; card.classList.add('is-video-loading'); if (row) { row.classList.add('is-interacting'); } var promise = video.play(); if (promise && typeof promise.catch === 'function') { promise.catch(function() { if (activeCard === card) { stopActiveCard(); } }); } } function setWidgetVisibility(widget, isVisible) { widget.dataset.airsangInViewport = isVisible ? 'yes' : 'no'; widget.classList.toggle('is-in-view', isVisible && !document.hidden); if (!isVisible && activeCard && widget.contains(activeCard)) { stopActiveCard(); } } function setupWidgets(scope) { var root = scope && scope.nodeType ? scope : document; var widgets = []; if (root.matches && root.matches('.airsang-three-video-marquee')) { widgets.push(root); } if (root.querySelectorAll) { root.querySelectorAll('.airsang-three-video-marquee').forEach(function(widget) { widgets.push(widget); }); } widgets.forEach(function(widget) { if (widget.dataset.airsangViewportReady === 'yes') { return; } widget.dataset.airsangViewportReady = 'yes'; if (viewportObserver) { viewportObserver.observe(widget); } else { setWidgetVisibility(widget, true); } }); } function initWidgets(scope) { if (!viewportObserver && 'IntersectionObserver' in window) { viewportObserver = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { setWidgetVisibility(entry.target, entry.isIntersecting); }); }, { rootMargin: '120px 0px', threshold: 0.01 }); } setupWidgets(scope || document); } document.addEventListener('mouseover', function(event) { var card = event.target.closest('.airsang-three-video-marquee__card'); if (!card || card.contains(event.relatedTarget)) { return; } if (!mobileQuery.matches) { playCard(card); } }, true); document.addEventListener('mouseout', function(event) { var card = event.target.closest('.airsang-three-video-marquee__card'); if (!card || card.contains(event.relatedTarget)) { return; } if (!mobileQuery.matches) { stopCard(card); } }, true); document.addEventListener('click', function(event) { if (!mobileQuery.matches) { return; } var card = event.target.closest('.airsang-three-video-marquee__card'); if (!card || !card.getAttribute('data-video-url')) { return; } if (card === activeCard) { if ('A' === card.tagName && card.getAttribute('href')) { return; } event.preventDefault(); stopCard(card); return; } event.preventDefault(); playCard(card); }, true); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initWidgets(document); }); } else { initWidgets(document); } if (typeof mobileQuery.addEventListener === 'function') { mobileQuery.addEventListener('change', stopActiveCard); } else if (typeof mobileQuery.addListener === 'function') { mobileQuery.addListener(stopActiveCard); } document.addEventListener('visibilitychange', function() { if (document.hidden) { stopActiveCard(); } document.querySelectorAll('.airsang-three-video-marquee').forEach(function(widget) { widget.classList.toggle( 'is-in-view', !document.hidden && widget.dataset.airsangInViewport === 'yes' ); }); }); window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && elementorFrontend.hooks) { elementorFrontend.hooks.addAction('frontend/element_ready/airsang_three_row_video_marquee.default', function(scope) { initWidgets(scope && scope[0] ? scope[0] : scope); }); } }); })(); </script> <script> (function() { if (window.__airsangPricingComparisonReady) { return; } window.__airsangPricingComparisonReady = true; document.addEventListener('click', function(event) { var desktopToggle = event.target.closest('.airsang-pricing-table__group-toggle'); if (desktopToggle) { event.preventDefault(); var groupRow = desktopToggle.closest('.airsang-pricing-table__group-row'); var table = desktopToggle.closest('.airsang-pricing-table__desktop'); var group = groupRow ? groupRow.getAttribute('data-group') : ''; var collapsed = !groupRow.classList.contains('is-collapsed'); groupRow.classList.toggle('is-collapsed', collapsed); desktopToggle.setAttribute('aria-expanded', collapsed ? 'false' : 'true'); if (table && group) { table.querySelectorAll('.airsang-pricing-table__feature-row[data-group="' + group + '"]').forEach(function(row) { row.classList.toggle('is-hidden', collapsed); }); } return; } var mobileGroup = event.target.closest('.airsang-pricing-mobile-group'); if (mobileGroup) { event.preventDefault(); var card = mobileGroup.closest('.airsang-pricing-mobile-card'); var mobileGroupIndex = mobileGroup.getAttribute('data-group'); var mobileCollapsed = !mobileGroup.classList.contains('is-collapsed'); mobileGroup.classList.toggle('is-collapsed', mobileCollapsed); mobileGroup.setAttribute('aria-expanded', mobileCollapsed ? 'false' : 'true'); if (card && mobileGroupIndex) { card.querySelectorAll('.airsang-pricing-mobile-feature[data-group="' + mobileGroupIndex + '"]').forEach(function(row) { row.classList.toggle('is-hidden', mobileCollapsed); }); } return; } var tab = event.target.closest('.airsang-pricing-mobile-tab'); if (tab) { event.preventDefault(); var widget = tab.closest('.airsang-pricing-table'); var plan = tab.getAttribute('data-plan'); if (!widget || !plan) { return; } widget.querySelectorAll('.airsang-pricing-mobile-tab').forEach(function(item) { var isActive = item === tab; item.classList.toggle('is-active', isActive); item.setAttribute('aria-selected', isActive ? 'true' : 'false'); }); widget.querySelectorAll('.airsang-pricing-mobile-card').forEach(function(cardItem) { cardItem.classList.toggle('is-active', cardItem.getAttribute('data-plan') === plan); }); } }); document.addEventListener('mouseover', function(event) { var cell = event.target.closest('.airsang-pricing-table__desktop [data-plan]'); if (!cell) { return; } var table = cell.closest('.airsang-pricing-table__desktop'); var plan = cell.getAttribute('data-plan'); if (!table || !plan) { return; } table.querySelectorAll('[data-plan]').forEach(function(item) { item.classList.toggle('is-col-hover', item.getAttribute('data-plan') === plan); }); }); document.addEventListener('mouseout', function(event) { var table = event.target.closest('.airsang-pricing-table__desktop'); if (!table || table.contains(event.relatedTarget)) { return; } table.querySelectorAll('.is-col-hover').forEach(function(item) { item.classList.remove('is-col-hover'); }); }); })(); </script> <script> (function() { function activateTab(root, index) { var tabs = Array.prototype.slice.call(root.querySelectorAll('.airsang-overseas-tabs__tab')); var panels = Array.prototype.slice.call(root.querySelectorAll('.airsang-overseas-tabs__panel')); tabs.forEach(function(tab, tabIndex) { var active = tabIndex === index; tab.classList.toggle('is-active', active); tab.setAttribute('aria-selected', active ? 'true' : 'false'); }); panels.forEach(function(panel, panelIndex) { var active = panelIndex === index; panel.classList.toggle('is-active', active); if (active) { panel.removeAttribute('hidden'); } else { panel.setAttribute('hidden', ''); } }); } function initTabs(root) { if (!root || root.dataset.airsangOverseasTabsReady === 'yes') { return; } root.dataset.airsangOverseasTabsReady = 'yes'; root.querySelectorAll('.airsang-overseas-tabs__tab').forEach(function(tab) { tab.addEventListener('click', function() { var index = parseInt(tab.getAttribute('data-index'), 10); activateTab(root, Number.isNaN(index) ? 0 : index); }); }); } function initAll() { document.querySelectorAll('[data-airsang-overseas-tabs]').forEach(initTabs); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_overseas_case_tabs_showcase.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_overseas_case_tabs_showcase.default', initAll); } }); })(); </script> <script> (function() { function initDesignCards(root) { if (!root || root.dataset.airsangDesignCardsReady === 'yes') { return; } root.dataset.airsangDesignCardsReady = 'yes'; if (!root.classList.contains('is-entrance-enabled')) { return; } if (!('IntersectionObserver' in window)) { root.classList.add('is-in-view'); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { root.classList.add('is-in-view'); observer.unobserve(root); } }); }, { threshold: 0.18, rootMargin: '0px 0px -8% 0px' }); observer.observe(root); } function initAll() { document.querySelectorAll('[data-airsang-design-service-cards]').forEach(initDesignCards); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_design_service_cards.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_design_service_cards.default', initAll); } }); })(); </script> <script> (function() { function initCommerceFeatureSplit(root) { if (!root || root.dataset.airsangCommerceFeatureReady === 'yes') { return; } root.dataset.airsangCommerceFeatureReady = 'yes'; if (!root.classList.contains('is-entrance-enabled') && !root.classList.contains('is-image-float-enabled')) { return; } if (!('IntersectionObserver' in window)) { root.classList.add('is-in-view'); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { root.classList.add('is-in-view'); observer.unobserve(root); } }); }, { threshold: 0.16, rootMargin: '0px 0px -8% 0px' }); observer.observe(root); } function initAll() { document.querySelectorAll('[data-airsang-commerce-feature-split]').forEach(initCommerceFeatureSplit); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_commerce_feature_split.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_commerce_feature_split.default', initAll); } }); })(); </script> <script> (function() { function initBrandProcessCards(root) { if (!root || root.dataset.airsangBrandProcessReady === 'yes') { return; } root.dataset.airsangBrandProcessReady = 'yes'; if (!root.classList.contains('is-entrance-enabled')) { return; } if (!('IntersectionObserver' in window)) { root.classList.add('is-in-view'); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { root.classList.add('is-in-view'); observer.unobserve(root); } }); }, { threshold: 0.16, rootMargin: '0px 0px -8% 0px' }); observer.observe(root); } function initAll() { document.querySelectorAll('[data-airsang-brand-process-cards]').forEach(initBrandProcessCards); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_brand_process_cards.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_brand_process_cards.default', initAll); } }); })(); </script> <script> (function() { function initShoplineHero(root) { if (!root || root.dataset.airsangShoplineHeroReady === 'yes') { return; } root.dataset.airsangShoplineHeroReady = 'yes'; if (!root.classList.contains('is-entrance-enabled') && !root.classList.contains('is-float-enabled')) { return; } if (!('IntersectionObserver' in window)) { root.classList.add('is-in-view'); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { root.classList.add('is-in-view'); observer.unobserve(root); } }); }, { threshold: 0.16, rootMargin: '0px 0px -8% 0px' }); observer.observe(root); } function initAll() { document.querySelectorAll('[data-airsang-shopline-hero]').forEach(initShoplineHero); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_shopline_design_hero.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_shopline_design_hero.default', initAll); } }); })(); </script> <script> (function() { function clamp(value, min, max) { return Math.max(min, Math.min(max, value)); } function isMobile() { return window.matchMedia('(max-width: 767px)').matches; } function isStackedLayout(root) { return window.matchMedia('(max-width: 1180px)').matches && !(isMobile() && root.classList.contains('is-mobile-horizontal')); } function isNativeTrack(root) { return (!isStackedLayout(root) && root.classList.contains('is-native-horizontal')) || (isMobile() && root.classList.contains('is-mobile-horizontal')); } function initComparison(compare) { if (!compare || compare.dataset.airsangCompareReady === 'yes') { return; } compare.dataset.airsangCompareReady = 'yes'; var range = compare.querySelector('.airsang-horizontal-scroll__compare-range'); var dragging = false; function setValue(value) { var cleanValue = clamp(parseFloat(value) || 50, 0, 100); compare.style.setProperty('--airsang-compare-pos', cleanValue + '%'); if (range) { range.value = String(cleanValue); } } function setFromEvent(event) { var rect = compare.getBoundingClientRect(); var pointX = event.clientX; if (event.touches && event.touches.length) { pointX = event.touches[0].clientX; } setValue(((pointX - rect.left) / Math.max(1, rect.width)) * 100); } if (range) { range.addEventListener('input', function() { setValue(range.value); }); } compare.addEventListener('pointerdown', function(event) { dragging = true; setFromEvent(event); if (compare.setPointerCapture && event.pointerId) { compare.setPointerCapture(event.pointerId); } }); compare.addEventListener('pointermove', function(event) { if (!dragging) { return; } setFromEvent(event); }); compare.addEventListener('pointerup', function() { dragging = false; }); compare.addEventListener('pointercancel', function() { dragging = false; }); setValue(range ? range.value : 50); } function initHoverVideo(card) { if (!card || card.dataset.airsangVideoReady === 'yes') { return; } var video = card.querySelector('video[data-src]'); var panel = card.closest('[data-panel]'); if (!video || !panel) { return; } card.dataset.airsangVideoReady = 'yes'; video.muted = true; video.loop = true; video.playsInline = true; video.controls = false; function stop() { video.pause(); card.classList.remove('is-playing'); card.setAttribute('aria-label', 'play video'); } function start() { document.querySelectorAll('[data-airsang-hover-video]').forEach(function(other) { if (other !== card && other.__airsangStopVideo) { other.__airsangStopVideo(); } }); if (!video.getAttribute('src')) { video.src = video.dataset.src; } var playback = video.play(); if (playback && typeof playback.catch === 'function') { playback.catch(stop); } } card.__airsangStopVideo = stop; video.addEventListener('playing', function() { card.classList.add('is-playing'); card.setAttribute('aria-label', 'Pause video'); }); panel.addEventListener('pointerenter', function(event) { if (event.pointerType === 'mouse') { start(); } }); panel.addEventListener('pointerleave', function(event) { if (event.pointerType === 'mouse') { stop(); } }); card.addEventListener('click', function(event) { if (event.pointerType === 'mouse' && window.matchMedia('(hover: hover)').matches) { return; } if (video.paused) { start(); } else { stop(); } }); card.addEventListener('keydown', function(event) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); if (video.paused) { start(); } else { stop(); } } }); document.addEventListener('visibilitychange', function() { if (document.hidden) { stop(); } }); if ('IntersectionObserver' in window) { var observer = new IntersectionObserver(function(entries) { if (!entries[0].isIntersecting) { stop(); } }, { threshold: 0.05 }); observer.observe(panel); } } function initHorizontalScroll(root) { if (!root || root.dataset.airsangHorizontalReady === 'yes') { if (root && root.__airsangHorizontalUpdate) { root.__airsangHorizontalUpdate(); } return; } root.dataset.airsangHorizontalReady = 'yes'; var pin = root.querySelector('.airsang-horizontal-scroll__pin'); var track = root.querySelector('[data-track]'); var panels = Array.prototype.slice.call(root.querySelectorAll('[data-panel]')); var currentTitle = root.querySelector('[data-current-title]'); var currentIndex = root.querySelector('[data-current-index]'); var progressFill = root.querySelector('[data-progress-fill]'); var progressButton = root.querySelector('[data-progress-button]'); var frame = null; if (!pin || !track || !panels.length) { return; } function setActive(index, progress) { var cleanIndex = clamp(index, 0, panels.length - 1); var panel = panels[cleanIndex] || panels[0]; if (currentTitle && panel) { currentTitle.textContent = panel.getAttribute('data-nav-title') || ''; } if (currentIndex) { currentIndex.textContent = String(cleanIndex + 1); } if (progressFill) { var visualProgress = panels.length > 0 ? ((progress * Math.max(0, panels.length - 1)) + 1) / panels.length : 0; root.style.setProperty('--airsang-hs-progress', String(clamp(visualProgress, panels.length > 0 ? 1 / panels.length : 0, 1))); } } function updatePassiveMode() { track.style.transform = ''; if (isNativeTrack(root)) { var maxScroll = Math.max(1, track.scrollWidth - track.clientWidth); var horizontalProgress = clamp(track.scrollLeft / maxScroll, 0, 1); var horizontalIndex = clamp(Math.round(horizontalProgress * (panels.length - 1)), 0, panels.length - 1); setActive(horizontalIndex, horizontalProgress); return; } var stickyTopValue = parseFloat(getComputedStyle(root).getPropertyValue('--airsang-hs-sticky-top')) || 0; var guide = stickyTopValue + ((window.innerHeight - stickyTopValue) * 0.45); var activeIndex = 0; var bestDistance = Infinity; panels.forEach(function(panel, index) { var panelRect = panel.getBoundingClientRect(); if (panelRect.bottom < stickyTopValue || panelRect.top > window.innerHeight) { return; } var panelCenter = panelRect.top + (panelRect.height * 0.38); var distance = Math.abs(panelCenter - guide); if (distance < bestDistance) { bestDistance = distance; activeIndex = index; } }); setActive(activeIndex, panels.length > 1 ? activeIndex / (panels.length - 1) : 0); } function update() { frame = null; if (isStackedLayout(root) || isNativeTrack(root)) { updatePassiveMode(); return; } var rect = root.getBoundingClientRect(); var scrollTop = window.pageYOffset || document.documentElement.scrollTop; var rootTop = rect.top + scrollTop; var stickyTopValue = parseFloat(getComputedStyle(root).getPropertyValue('--airsang-hs-sticky-top')) || 0; var start = rootTop - stickyTopValue; var end = rootTop + root.offsetHeight - window.innerHeight; var distance = Math.max(1, end - start); var progress = clamp((scrollTop - start) / distance, 0, 1); var maxTranslate = Math.max(0, track.scrollWidth - pin.clientWidth); var translate = -maxTranslate * progress; var activeIndex = clamp(Math.round(progress * (panels.length - 1)), 0, panels.length - 1); track.style.transform = 'translate3d(' + translate + 'px, 0, 0)'; setActive(activeIndex, progress); } function requestUpdate() { if (frame) { return; } frame = window.requestAnimationFrame(update); } if (progressButton && root.classList.contains('is-progress-clickable')) { progressButton.addEventListener('click', function() { if (isNativeTrack(root)) { return; } if (isStackedLayout(root)) { var stackedCurrent = currentIndex ? (parseInt(currentIndex.textContent, 10) || 1) - 1 : 0; var stackedNext = clamp(stackedCurrent + 1, 0, panels.length - 1); panels[stackedNext].scrollIntoView({ block: 'start', behavior: 'smooth' }); return; } var scrollTop = window.pageYOffset || document.documentElement.scrollTop; var rect = root.getBoundingClientRect(); var rootTop = rect.top + scrollTop; var stickyTopValue = parseFloat(getComputedStyle(root).getPropertyValue('--airsang-hs-sticky-top')) || 0; var start = rootTop - stickyTopValue; var end = rootTop + root.offsetHeight - window.innerHeight; var currentProgress = clamp((scrollTop - start) / Math.max(1, end - start), 0, 1); var nextIndex = clamp(Math.floor(currentProgress * panels.length) + 1, 0, panels.length - 1); var target = start + ((end - start) * (nextIndex / Math.max(1, panels.length - 1))); window.scrollTo({ top: target, behavior: 'smooth' }); }); } window.addEventListener('scroll', requestUpdate, { passive: true }); window.addEventListener('resize', requestUpdate); track.addEventListener('scroll', requestUpdate, { passive: true }); root.__airsangHorizontalUpdate = update; update(); } function initAll() { document.querySelectorAll('[data-airsang-horizontal-scroll]').forEach(initHorizontalScroll); document.querySelectorAll('[data-airsang-compare]').forEach(initComparison); document.querySelectorAll('[data-airsang-hover-video]').forEach(initHoverVideo); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_scroll_horizontal_capabilities.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_scroll_horizontal_capabilities.default', initAll); } }); })(); </script> <script> (function() { if (window.__airsangGlobalVisualReady) { return; } window.__airsangGlobalVisualReady = true; function initWidget(root) { var widgets = []; if (root && root.matches && root.matches('[data-airsang-global-visual]')) { widgets.push(root); } if (root && root.querySelectorAll) { root.querySelectorAll('[data-airsang-global-visual]').forEach(function(widget) { widgets.push(widget); }); } widgets.forEach(function(widget) { if (widget.dataset.airsangGlobalVisualReady === 'yes') { return; } widget.dataset.airsangGlobalVisualReady = 'yes'; if (!('IntersectionObserver' in window)) { widget.classList.add('is-in-view'); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { entry.target.classList.add('is-in-view'); observer.unobserve(entry.target); } }); }, { threshold: 0.14 }); observer.observe(widget); }); } function initAll() { initWidget(document); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction( 'frontend/element_ready/airsang_global_ecommerce_visual_feature.default', function(scope) { initWidget(scope && scope[0] ? scope[0] : scope); } ); } }); })(); </script> </body> </html>