// tipsy, facebook style tooltips for jquery // version 1.0.0a // (c) 2008-2010 jason frame [jason@onehackoranother.com] // released under the MIT license (function($) { function maybeCall(thing, ctx) { return (typeof thing == 'function') ? (thing.call(ctx)) : thing; }; function isElementInDOM(ele) { while (ele = ele.parentNode) { if (ele == document) return true; } return false; }; function Tipsy(element, options) { this.$element = $(element); this.options = options; this.enabled = true; this.fixTitle(); }; Tipsy.prototype = { show: function() { var title = this.getTitle(); if (title && this.enabled) { var $tip = this.tip(); $tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title); $tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity $tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).prependTo(document.body); var pos = $.extend({}, this.$element.offset(), { width: this.$element[0].offsetWidth, height: this.$element[0].offsetHeight }); var actualWidth = $tip[0].offsetWidth, actualHeight = $tip[0].offsetHeight, gravity = maybeCall(this.options.gravity, this.$element[0]); var tp; switch (gravity.charAt(0)) { case 'n': tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}; break; case 's': tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}; break; case 'e': tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset}; break; case 'w': tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset}; break; } if (gravity.length == 2) { if (gravity.charAt(1) == 'w') { tp.left = pos.left + pos.width / 2 - 15; } else { tp.left = pos.left + pos.width / 2 - actualWidth + 15; } } $tip.css(tp).addClass('tipsy-' + gravity); $tip.find('.tipsy-arrow')[0].className = 'tipsy-arrow tipsy-arrow-' + gravity.charAt(0); if (this.options.className) { $tip.addClass(maybeCall(this.options.className, this.$element[0])); } if (this.options.fade) { $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity}); } else { $tip.css({visibility: 'visible', opacity: this.options.opacity}); } } }, hide: function() { if (this.options.fade) { this.tip().stop().fadeOut(function() { $(this).remove(); }); } else { this.tip().remove(); } }, fixTitle: function() { var $e = this.$element; if ($e.attr('title') || typeof($e.attr('original-title')) != 'string') { $e.attr('original-title', $e.attr('title') || '').removeAttr('title'); } }, getTitle: function() { var title, $e = this.$element, o = this.options; this.fixTitle(); var title, o = this.options; if (typeof o.title == 'string') { title = $e.attr(o.title == 'title' ? 'original-title' : o.title); } else if (typeof o.title == 'function') { title = o.title.call($e[0]); } title = ('' + title).replace(/(^\s*|\s*$)/, ""); return title || o.fallback; }, tip: function() { if (!this.$tip) { this.$tip = $('
').html('
'); this.$tip.data('tipsy-pointee', this.$element[0]); } return this.$tip; }, validate: function() { if (!this.$element[0].parentNode) { this.hide(); this.$element = null; this.options = null; } }, enable: function() { this.enabled = true; }, disable: function() { this.enabled = false; }, toggleEnabled: function() { this.enabled = !this.enabled; } }; $.fn.tipsy = function(options) { if (options === true) { return this.data('tipsy'); } else if (typeof options == 'string') { var tipsy = this.data('tipsy'); if (tipsy) tipsy[options](); return this; } options = $.extend({}, $.fn.tipsy.defaults, options); function get(ele) { var tipsy = $.data(ele, 'tipsy'); if (!tipsy) { tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options)); $.data(ele, 'tipsy', tipsy); } return tipsy; } function enter() { var tipsy = get(this); tipsy.hoverState = 'in'; if (options.delayIn == 0) { tipsy.show(); } else { tipsy.fixTitle(); setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn); } }; function leave() { var tipsy = get(this); tipsy.hoverState = 'out'; if (options.delayOut == 0) { tipsy.hide(); } else { setTimeout(function() { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut); } }; if (!options.live) this.each(function() { get(this); }); if (options.trigger != 'manual') { var binder = options.live ? 'live' : 'bind', eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; this[binder](eventIn, enter)[binder](eventOut, leave); } return this; }; $.fn.tipsy.defaults = { className: null, delayIn: 0, delayOut: 0, fade: false, fallback: '', gravity: 'n', html: false, live: false, offset: 0, opacity: 0.8, title: 'title', trigger: 'hover' }; $.fn.tipsy.revalidate = function() { $('.tipsy').each(function() { var pointee = $.data(this, 'tipsy-pointee'); if (!pointee || !isElementInDOM(pointee)) { $(this).remove(); } }); }; // Overwrite this method to provide options on a per-element basis. // For example, you could store the gravity in a 'tipsy-gravity' attribute: // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' }); // (remember - do not modify 'options' in place!) $.fn.tipsy.elementOptions = function(ele, options) { return $.metadata ? $.extend({}, options, $(ele).metadata()) : options; }; $.fn.tipsy.autoNS = function() { return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n'; }; $.fn.tipsy.autoWE = function() { return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w'; }; /** * yields a closure of the supplied parameters, producing a function that takes * no arguments and is suitable for use as an autogravity function like so: * * @param margin (int) - distance from the viewable region edge that an * element should be before setting its tooltip's gravity to be away * from that edge. * @param prefer (string, e.g. 'n', 'sw', 'w') - the direction to prefer * if there are no viewable region edges effecting the tooltip's * gravity. It will try to vary from this minimally, for example, * if 'sw' is preferred and an element is near the right viewable * region edge, but not the top edge, it will set the gravity for * that element's tooltip to be 'se', preserving the southern * component. */ $.fn.tipsy.autoBounds = function(margin, prefer) { return function() { var dir = {ns: prefer[0], ew: (prefer.length > 1 ? prefer[1] : false)}, boundTop = $(document).scrollTop() + margin, boundLeft = $(document).scrollLeft() + margin, $this = $(this); if ($this.offset().top < boundTop) dir.ns = 'n'; if ($this.offset().left < boundLeft) dir.ew = 'w'; if ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = 'e'; if ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = 's'; return dir.ns + (dir.ew ? dir.ew : ''); } }; })(jQuery); @keyframes rotate-forever{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}#toplevel_page_amp-options .amp-count-loading{animation-duration:.75s;animation-iteration-count:infinite;animation-name:rotate-forever;animation-timing-function:linear;height:4px;width:4px;border-color:transparent transparent #fff #fff;border-style:solid;border-width:2px;border-radius:50%;display:inline-block}body.no-js #new-error-index-count,body.no-js #new-validation-url-count{display:none}

Chương trình học

Tin mới nhất

The tips of Purchasing Good Bamboo SteamersBamboo Versatility: From Lampshades to Furniture and MoreGet ready for the Mid-Autumn Festival – 5 Gift Ideas for Businesses to Give to Partners, Customers, and Employees.| Family Picnic Ideas | What to Pack, What to Eat, & More!
{"id":1549,"date":"2023-06-10T11:04:17","date_gmt":"2023-06-10T04:04:17","guid":{"rendered":"http:\/\/donghacraft.com\/product\/bamboo-baskets-with-handle-bambk07\/"},"modified":"2023-06-10T12:35:55","modified_gmt":"2023-06-10T05:35:55","slug":"bamboo-baskets-with-handle-bambk07","status":"publish","type":"product","link":"https:\/\/donghacraft.com\/product\/bamboo-baskets-with-handle-bambk07\/","title":{"rendered":"Bamboo Baskets with Handle – BAMBK07"},"content":{"rendered":"

Commitment from Dong Ha Craft:<\/strong>
\n
\u2013 100% natural materials, meticulously processed and finished.
\n
\u2013 Streamlined, modern but still retains the soul of the countryside.
\n
\u2013 Aesthetic, sustainable, multi-application for daily life.
\n
\u2013 The product has been treated against mold and mildew, meeting export standards.
\n
\u2013 Product pictures are taken for real, 100% guaranteed as photos<\/p>\n

Dong Ha Craft, a renowned handmade crafts factory specializing in exporting exquisite handicrafts, proudly presents our exquisite collection of Bamboo Utility Baskets. These beautifully handcrafted baskets are specifically designed for international importers seeking unique and eco-friendly storage solutions.
\n
Our Bamboo Utility Baskets are meticulously woven by skilled artisans using the finest quality bamboo materials. Each basket showcases the intricate craftsmanship and attention to detail that Dong Ha Craft is renowned for. The natural elegance of the bamboo enhances the overall aesthetics of the basket, making it a visually appealing addition to any home or office decor.
\n
These utility baskets are not only visually appealing but also highly functional. With their generous size and sturdy construction, they offer ample storage space for various household or office items. From organizing essentials like magazines, books, and stationery to storing toys, accessories, or even indoor plants, our baskets provide versatile storage solutions for any setting.
\n
Dong Ha Craft’s Bamboo Utility Baskets are not only practical but also sustainable. Bamboo, known for its rapid growth and renewability, makes these baskets an eco-friendly choice. By choosing our products, importers contribute to the preservation of the environment while offering their customers a sustainable and aesthetically pleasing storage option.
\n
We understand the importance of meeting international standards and ensuring timely delivery. With Dong Ha Craft’s efficient production processes and rigorous quality control, we guarantee that our Bamboo Utility Baskets meet the highest quality standards. Our factory is equipped to handle large-scale orders, ensuring timely delivery to our valued international clients.
\n
Experience the exquisite craftsmanship and eco-friendly charm of Dong Ha Craft’s Bamboo Utility Baskets. Contact us today to explore our complete range of handmade craft products and place your order. Elevate your import offerings with our elegant and sustainable bamboo baskets, and delight your customers with unique and versatile storage solutions that reflect their taste for authentic craftsmanship
\n
\n***PLEASE CONTACT TO GET WHOLESALE PRICES***<\/strong>
\n <\/p>\n","protected":false},"excerpt":{"rendered":"

\n