Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
2/10
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
Caring for and Attracting Little Guests
2/10

Caring for and Attracting Little Guests

$23.99
$59.98
Save $35.99
ColorRed
Please select a color
Option
Please select a option
Quantity
/** @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);
SKU:
Weight: 0kg
Barcode:

Bring the magic of nature to your garden with our Hummingbird Feeder. for delighting bird watching scenarios!

[Designed for Hummingbirds] Research shows that hummingbirds are most attracted to red flowers. Our Hexagonal bird drinking artifact  are designed in red and shaped like flowers. Placing multiple red feeders throughout your garden can effectively attract these delightful birds. making your garden a paradise for hummingbirds.

[Upgraded Design] Our hummingbird feeder with 30 feeding ports can satisfy multiple hungry hummingbirds at the same time. 

[Keep ants. bees. and mosquitoes away from your feeders] Our upgraded hummingbird feeder features enhanced protection design. effectively preventing bees. mosquitoes. and ants from entering. It is exclusively accessible to hummingbirds. ensuring that the nectar remains uncontaminated. This allows your beloved hummingbirds to enjoy it worry-free.

[Sealed and Leak-Proof] This Hexagonal bird drinking artifact for outdoors leak-proof. Do not need to turn it upside down. no submerged joints to leak. The materials of the base are sturdy. it is advised to clean the feeder at least once a week. If the weather is warm. you can clean the feeder more frequently.


[Easy To Fill & Cleaning] NO tools required. easy to assemble. You can monitor the nectar level through the clear water reservoir to know when to refill it. 

[Wonderful Gift Ideas] A great gift for bird lovers and your friends! Watch colorful wild hummingbirds up close in your yard.

[Specification]

  • Material: ABS+PP
  • Size: 30*8*20CM
  • Weight:300g