Giỏ hàng
Những tiêu chí của đồng phục cho nhân viên.
    Tin tức

Những tiêu chí của đồng phục cho nhân viên.

29/10/2020

Tiêu chí bạn cần quan tâm khi thiết kế đồng phục, giúp bạn có thể tạo nên mẫu thiết kế phù hợp nhất.

Vải thun CARO THÁI - Giải pháp hoàn hảo cho áo thun đồng phục
    Tin tức

Vải thun CARO THÁI - Giải pháp hoàn hảo cho áo thun đồng phục

10/10/2020

Caro Thái là bền đẹp, không nhăn và xù lông trong quá trình sử dụng. Phù hơp cho việc may áo thun đồng phục công ty, nhân viên, quà tặng khách hàng...

BẢNG MÀU VẢI KAKI
    Tin tức

BẢNG MÀU VẢI KAKI

08/05/2020

Bảng màu vải kaki

ÁO ĐẸP CẦN LÀ CÓ DANA SPORT
    Tin tức

ÁO ĐẸP CẦN LÀ CÓ DANA SPORT

25/04/2020

Áo đủ size, bền đẹp, lấy nhanh siêu tốc trong ngày.

XU HƯỚNG ÁO ĐỒNG PHỤC NHÂN VIÊN QUÁN ĂN, CỬA HÀNG, SHOP 2020
    Tin tức

XU HƯỚNG ÁO ĐỒNG PHỤC NHÂN VIÊN QUÁN ĂN, CỬA HÀNG, SHOP 2020

21/06/2019

Đồng phục nhân bạn đã biết chọn lựa như thế nào cho phù hợp chưa? Nếu chưa thì hãy cùng với chúng tôi xem ngay bí quyết chọn nhé.

ÁO THUN GIA ĐÌNH IN HÌNH TÙY CHỌN THEO YÊU CẦU
    KHUYẾN MÃI

ÁO THUN GIA ĐÌNH IN HÌNH TÙY CHỌN THEO YÊU CẦU

04/01/2017

ÁO THUN GIA ĐÌNH IN HÌNH TÙY CHỌN THEO YÊU CẦU LẤY NHANH 15 PHÚT GIÁ KHUYẾN MÃI 20% CHO NĂM MỚI 2019

ÁO MÙA NOEL 2019
    KHUYẾN MÃI

ÁO MÙA NOEL 2019

12/12/2016

Chụp hình kỉ niệm đón giáng sinh với áo thun gia đình in hình giáng sinh cực đẹp... In áo gia đình, áo đôi theo yêu cầu nhé!!!!

<canvas id="c"></canvas>
canvas { display: block; width: 100vw; height: 100vh;
}
var c = document.getElementById("c");
var ctx = c.getContext("2d");
var cH;
var cW;
var bgColor = "#FF6138";
var animations = [];
var circles = [];
var colorPicker = (function() { var colors = ["#FF6138", "#FFBE53", "#2980B9", "#282741"]; var index = 0; function next() { index = index++ < colors.length-1 ? index : 0; return colors[index]; } function current() { return colors[index] } return { next: next, current: current }
})();
function removeAnimation(animation) { var index = animations.indexOf(animation); if (index > -1) animations.splice(index, 1);
}
function calcPageFillRadius(x, y) { var l = Math.max(x - 0, cW - x); var h = Math.max(y - 0, cH - y); return Math.sqrt(Math.pow(l, 2) + Math.pow(h, 2));
}
function addClickListeners() { document.addEventListener("touchstart", handleEvent); document.addEventListener("mousedown", handleEvent);
};
function handleEvent(e) { if (e.touches) { e.preventDefault(); e = e.touches[0]; } var currentColor = colorPicker.current(); var nextColor = colorPicker.next(); var targetR = calcPageFillRadius(e.pageX, e.pageY); var rippleSize = Math.min(200, (cW * .4)); var minCoverDuration = 750; var pageFill = new Circle({ x: e.pageX, y: e.pageY, r: 0, fill: nextColor }); var fillAnimation = anime({ targets: pageFill, r: targetR, duration: Math.max(targetR / 2 , minCoverDuration ), easing: "easeOutQuart", complete: function(){ bgColor = pageFill.fill; removeAnimation(fillAnimation); } }); var ripple = new Circle({ x: e.pageX, y: e.pageY, r: 0, fill: currentColor, stroke: { width: 3, color: currentColor }, opacity: 1 }); var rippleAnimation = anime({ targets: ripple, r: rippleSize, opacity: 0, easing: "easeOutExpo", duration: 900, complete: removeAnimation }); var particles = []; for (var i=0; i<32; i++) { var particle = new Circle({ x: e.pageX, y: e.pageY, fill: currentColor, r: anime.random(24, 48) }) particles.push(particle); } var particlesAnimation = anime({ targets: particles, x: function(particle){ return particle.x + anime.random(rippleSize, -rippleSize); }, y: function(particle){ return particle.y + anime.random(rippleSize * 1.15, -rippleSize * 1.15); }, r: 0, easing: "easeOutExpo", duration: anime.random(1000,1300), complete: removeAnimation }); animations.push(fillAnimation, rippleAnimation, particlesAnimation);
}
function extend(a, b){ for(var key in b) { if(b.hasOwnProperty(key)) { a[key] = b[key]; } } return a;
}
var Circle = function(opts) { extend(this, opts);
}
Circle.prototype.draw = function() { ctx.globalAlpha = this.opacity || 1; ctx.beginPath(); ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI, false); if (this.stroke) { ctx.strokeStyle = this.stroke.color; ctx.lineWidth = this.stroke.width; ctx.stroke(); } if (this.fill) { ctx.fillStyle = this.fill; ctx.fill(); } ctx.closePath(); ctx.globalAlpha = 1;
}
var animate = anime({ duration: Infinity, update: function() { ctx.fillStyle = bgColor; ctx.fillRect(0, 0, cW, cH); animations.forEach(function(anim) { anim.animatables.forEach(function(animatable) { animatable.target.draw(); }); }); }
});
var resizeCanvas = function() { cW = window.innerWidth; cH = window.innerHeight; c.width = cW * devicePixelRatio; c.height = cH * devicePixelRatio; ctx.scale(devicePixelRatio, devicePixelRatio);
};
(function init() { resizeCanvas(); if (window.CP) { // CodePen's loop detection was causin' problems // and I have no idea why, so... window.CP.PenTimer.MAX_TIME_IN_LOOP_WO_EXIT = 6000; } window.addEventListener("resize", resizeCanvas); addClickListeners(); if (!!window.location.pathname.match(/fullcpgrid/)) { startFauxClicking(); } handleInactiveUser();
})();
function handleInactiveUser() { var inactive = setTimeout(function(){ fauxClick(cW/2, cH/2); }, 2000); function clearInactiveTimeout() { clearTimeout(inactive); document.removeEventListener("mousedown", clearInactiveTimeout); document.removeEventListener("touchstart", clearInactiveTimeout); } document.addEventListener("mousedown", clearInactiveTimeout); document.addEventListener("touchstart", clearInactiveTimeout);
}
function startFauxClicking() { setTimeout(function(){ fauxClick(anime.random( cW * .2, cW * .8), anime.random(cH * .2, cH * .8)); startFauxClicking(); }, anime.random(200, 900));
}
function fauxClick(x, y) { var fauxClick = new Event("mousedown"); fauxClick.pageX = x; fauxClick.pageY = y; document.dispatchEvent(fauxClick);
}