🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
1 / 20
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio
50% OFF

🔥360° Rotation Auto Irrigation System Garden Lawn Sprinkler Patio

$19.90 $39.99
0 sold
Style
Qty
Qty 995 in stock
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);
Durable Material: Our sprinklers are made of high quality ABS plastic. This durable lawn sprinkler is corrosion resistant, will not rust, and will provide long-lasting, worry-free performance.
 
360° Adjustable Sprinkler
 
 
360° Scattering Sprinkler
 
 
  • 360° Rotation: You can adjust the angle at will to spray irrigation to every corner of your garden. (Spray diameter is related to water pressure; the higher the water pressure, the larger the irrigation area).
  • Easy to install & Save time: This sprinkler is super easy to use and can be installed in just a few seconds.
  • 3 gears adjustment & Save water: It also uses water-saving technology, 90°-180°-360°, adjustable at will, which provides an even layer of water without over-spraying and fine water droplets to protect your flowers and plants from harm.
  • Warm consideration: with a tandem nipple, do not worry about your yard is very large, you can directly multiple tandem to meet the needs. At the same time, the product can be inserted into the ground, simple, convenient and beautiful.
  • Multiple uses: Super sprinkler, lawn irrigation, garden watering, 360 degree rotation. These lawn sprinkler heads can be used as a fun sprinkler set for kids to play and cool down on hot and sunny days.
Package includes:
  •  360° Auto Irrigation System
You may also like Don't Like These?
const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);