<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description"
content="Procqure provides procurement consulting, strategic sourcing, supply chain advisory and managed procurement services.">
<title>Procqure | Procurement & Supply Chain Consulting</title>
<style>
/* =========================================================
GLOBAL
========================================================= */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--dark: #061116;
--dark-2: #0b1d24;
--dark-3: #102c34;
--teal: #10b8c8;
--teal-light: #7eeef4;
--white: #ffffff;
--text: #eaf4f5;
--muted: #9db2b7;
--border: rgba(255,255,255,0.13);
--glass:
linear-gradient(
135deg,
rgba(11,31,38,0.86),
rgba(4,15,20,0.72)
);
}
html {
scroll-behavior: smooth;
}
body {
min-height: 100vh;
overflow-x: hidden;
font-family:
Inter,
Arial,
Helvetica,
sans-serif;
color: var(--text);
background:
radial-gradient(
circle at 70% 10%,
rgba(14,184,200,0.16),
transparent 30%
),
linear-gradient(
180deg,
#041015 0%,
#081a21 50%,
#041015 100%
);
}
a {
color: inherit;
text-decoration: none;
}
button,
a {
-webkit-tap-highlight-color: transparent;
}
/* =========================================================
RAIN CANVAS
========================================================= */
#rainCanvas {
position: fixed;
inset: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 2;
opacity: 0.65;
}
/* =========================================================
BACKGROUND LIGHT
========================================================= */
.background-light {
position: fixed;
width: 450px;
height: 450px;
border-radius: 50%;
filter: blur(100px);
pointer-events: none;
z-index: 0;
}
.light-one {
top: -150px;
left: -100px;
background: rgba(0, 190, 205, 0.10);
}
.light-two {
right: -180px;
bottom: 5%;
background: rgba(33, 121, 145, 0.12);
}
/* =========================================================
BACKGROUND CLOUDS
========================================================= */
.cloud {
position: fixed;
width: 300px;
height: 65px;
border-radius: 100px;
background: rgba(180,210,215,0.055);
filter: blur(3px);
z-index: 0;
pointer-events: none;
}
.cloud::before,
.cloud::after {
content: "";
position: absolute;
border-radius: 50%;
background: inherit;
}
.cloud::before {
width: 120px;
height: 120px;
left: 45px;
bottom: 0;
}
.cloud::after {
width: 90px;
height: 90px;
left: 150px;
bottom: 0;
}
.cloud-one {
top: 13%;
left: -100px;
animation: cloudMove 40s linear infinite;
}
.cloud-two {
top: 28%;
right: -120px;
transform: scale(.7);
animation: cloudMoveReverse 55s linear infinite;
}
/* =========================================================
AIRPLANE
========================================================= */
.airplane {
position: fixed;
top: 17%;
left: -180px;
width: 150px;
height: 50px;
opacity: 0.22;
z-index: 1;
animation: airplaneMove 32s linear infinite;
}
.airplane-body {
position: absolute;
left: 10px;
top: 22px;
width: 125px;
height: 8px;
border-radius: 10px;
background: #b5d5d8;
}
.airplane-wing {
position: absolute;
left: 55px;
top: 18px;
width: 55px;
height: 8px;
border-radius: 10px;
background: #b5d5d8;
transform: rotate(25deg);
}
.airplane-tail {
position: absolute;
left: 15px;
top: 10px;
width: 28px;
height: 7px;
border-radius: 10px;
background: #b5d5d8;
transform: rotate(-28deg);
}
/* =========================================================
CITY SILHOUETTE
========================================================= */
.city {
position: fixed;
left: 0;
right: 0;
bottom: 30%;
height: 110px;
display: flex;
align-items: flex-end;
gap: 3px;
opacity: .16;
z-index: 0;
}
.building {
flex: 1;
min-width: 20px;
background:
linear-gradient(
180deg,
#50727a,
#132a30
);
}
.building:nth-child(1) { height: 40%; }
.building:nth-child(2) { height: 70%; }
.building:nth-child(3) { height: 48%; }
.building:nth-child(4) { height: 82%; }
.building:nth-child(5) { height: 55%; }
.building:nth-child(6) { height: 75%; }
.building:nth-child(7) { height: 45%; }
.building:nth-child(8) { height: 65%; }
.building:nth-child(9) { height: 50%; }
.building:nth-child(10) { height: 72%; }
/* =========================================================
OCEAN
========================================================= */
.ocean {
position: fixed;
left: 0;
right: 0;
bottom: 16%;
height: 17%;
background:
linear-gradient(
180deg,
rgba(10,93,105,.08),
rgba(3,34,42,.48)
);
border-top: 1px solid rgba(100,220,230,.10);
z-index: 0;
}
.wave {
position: absolute;
left: -5%;
width: 110%;
height: 50px;
border-top: 2px solid rgba(120,225,230,.13);
border-radius: 50%;
}
.wave-one {
top: 25%;
animation: waveMove 8s ease-in-out infinite;
}
.wave-two {
top: 60%;
animation:
waveMove 9s ease-in-out
infinite reverse;
}
/* =========================================================
SHIP
========================================================= */
.ship {
position: absolute;
right: 10%;
bottom: 22px;
width: 250px;
height: 120px;
opacity: .28;
animation: shipMove 8s ease-in-out infinite;
}
.ship-hull {
position: absolute;
left: 0;
bottom: 0;
width: 240px;
height: 45px;
background: #28474f;
clip-path:
polygon(
0 0,
100% 0,
88% 100%,
12% 100%
);
}
.ship-cargo {
position: absolute;
left: 35px;
bottom: 42px;
width: 160px;
height: 42px;
background:
repeating-linear-gradient(
90deg,
#526f76 0 29px,
#28454c 29px 32px
);
}
.ship-stack {
position: absolute;
right: 25px;
bottom: 80px;
width: 25px;
height: 35px;
background: #304e55;
}
/* =========================================================
ROAD + TRUCKS
========================================================= */
.road {
position: fixed;
left: 0;
right: 0;
bottom: 0;
height: 18%;
background:
linear-gradient(
180deg,
#15282d,
#091316
);
border-top: 1px solid rgba(255,255,255,.06);
z-index: 0;
}
.road-line {
position: absolute;
left: 0;
right: 0;
top: 48%;
height: 3px;
background:
repeating-linear-gradient(
90deg,
rgba(255,255,255,.18) 0 75px,
transparent 75px 135px
);
}
.truck {
position: absolute;
bottom: 35px;
width: 190px;
height: 75px;
opacity: .23;
}
.truck-one {
left: -220px;
animation:
truckMove 20s linear infinite;
}
.truck-two {
left: -500px;
transform: scale(.72);
animation:
truckMove 22s linear
infinite -9s;
}
.truck-box {
position: absolute;
left: 0;
bottom: 15px;
width: 130px;
height: 50px;
border-radius: 5px;
background: #45636a;
}
.truck-cab {
position: absolute;
right: 0;
bottom: 15px;
width: 58px;
height: 40px;
border-radius:
5px 12px 5px 5px;
background: #5a7880;
}
.wheel {
position: absolute;
bottom: 5px;
width: 22px;
height: 22px;
border-radius: 50%;
background: #071014;
border: 4px solid #526a70;
}
.wheel-one {
left: 25px;
}
.wheel-two {
right: 15px;
}
/* =========================================================
MAIN CONTAINER
========================================================= */
.container {
position: relative;
z-index: 10;
width: min(
1120px,
calc(100% - 32px)
);
margin: auto;
padding:
45px 0 30px;
}
/* =========================================================
GLASS EFFECT
========================================================= */
.glass {
background: var(--glass);
border: 1px solid var(--border);
box-shadow:
0 25px 80px rgba(0,0,0,.35),
inset 0 1px rgba(255,255,255,.05);
backdrop-filter: blur(17px);
-webkit-backdrop-filter: blur(17px);
}
/* =========================================================
HERO
========================================================= */
.hero {
position: relative;
padding: 30px;
border-radius: 30px;
overflow: hidden;
}
.hero::after {
content: "";
position: absolute;
left: -10%;
right: -10%;
bottom: -100px;
height: 190px;
background:
radial-gradient(
ellipse,
rgba(16,184,200,.18),
transparent 65%
);
pointer-events: none;
}
/* =========================================================
BRAND
========================================================= */
.brand {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
}
.logo-box {
width: 330px;
padding: 10px 15px;
border-radius: 18px;
background: rgba(255,255,255,.95);
box-shadow:
0 12px 40px rgba(0,0,0,.25);
}
.logo-box img {
display: block;
width: 100%;
height: auto;
object-fit: contain;
}
.business-badge {
display: flex;
align-items: center;
padding: 9px 14px;
border-radius: 999px;
white-space: nowrap;
color: #c9eaec;
font-size: 13px;
border:
1px solid
rgba(126,238,244,.25);
background:
rgba(16,184,200,.08);
}
.check {
display: grid;
place-items: center;
width: 20px;
height: 20px;
margin-right: 7px;
border-radius: 50%;
color: #041416;
background: var(--teal);
font-weight: 900;
}
/* =========================================================
HERO TEXT
========================================================= */
.hero-content {
position: relative;
max-width: 800px;
padding:
55px 0 25px;
}
.eyebrow {
margin-bottom: 14px;
color: var(--teal-light);
font-size: 12px;
font-weight: 800;
letter-spacing: .16em;
}
.hero h1 {
margin-bottom: 15px;
font-size:
clamp(
60px,
9vw,
120px
);
line-height: .85;
letter-spacing: -.075em;
}
.category {
margin-bottom: 14px;
color: #c2d2d5;
font-size: 16px;
}
/* =========================================================
RATING
========================================================= */
.rating {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10px;
color: #a9bec2;
}
.rating-number {
color: white;
font-size: 18px;
font-weight: 800;
}
.stars {
color: #e8fbfc;
letter-spacing: 3px;
font-size: 17px;
}
/* =========================================================
INTRO
========================================================= */
.intro {
max-width: 750px;
margin-top: 22px;
color: #d3e0e3;
font-size:
clamp(
16px,
2vw,
20px
);
line-height: 1.7;
}
/* =========================================================
BUTTONS
========================================================= */
.buttons {
position: relative;
z-index: 20;
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 12px;
}
.button {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 50px;
padding: 0 20px;
border-radius: 13px;
font-weight: 800;
border: 1px solid var(--border);
transition:
transform .2s ease,
box-shadow .2s ease,
background .2s ease;
}
.button:hover {
transform: translateY(-3px);
text-decoration: none;
}
.button-primary {
color: #031416;
background: var(--teal);
border-color: transparent;
box-shadow:
0 12px 35px
rgba(16,184,200,.25);
}
.button-secondary {
color: #e3fbfc;
background:
rgba(16,184,200,.10);
border-color:
rgba(16,184,200,.30);
}
.button-outline {
color: #dce9eb;
background:
rgba(255,255,255,.035);
}
/* =========================================================
INFORMATION CARDS
========================================================= */
.information-grid {
display: grid;
grid-template-columns:
repeat(2,1fr);
gap: 14px;
margin-top: 14px;
}
.information-card {
display: flex;
align-items: flex-start;
gap: 16px;
padding: 22px;
border-radius: 22px;
}
.information-icon {
display: grid;
flex: 0 0 44px;
place-items: center;
width: 44px;
height: 44px;
border-radius: 14px;
color: var(--teal-light);
background:
rgba(16,184,200,.10);
border:
1px solid
rgba(16,184,200,.20);
font-size: 20px;
font-weight: 900;
}
.information-card h3 {
margin-bottom: 7px;
color: #c4d6d9;
font-size: 12px;
text-transform: uppercase;
letter-spacing: .12em;
}
.information-card p {
color: #e5edef;
line-height: 1.55;
}
.information-card small {
display: block;
margin-top: 4px;
color: var(--muted);
}
.information-card a {
color: #a3f3f6;
word-break: break-word;
}
/* =========================================================
SERVICES
========================================================= */
.services {
margin-top: 14px;
padding: 30px;
border-radius: 27px;
}
.section-title {
max-width: 800px;
}
.section-title h2 {
font-size:
clamp(
28px,
4vw,
44px
);
line-height: 1.12;
letter-spacing: -.045em;
}
.service-grid {
display: grid;
grid-template-columns:
repeat(3,1fr);
gap: 14px;
margin-top: 25px;
}
.service {
padding: 23px;
border-radius: 20px;
background:
rgba(255,255,255,.035);
border:
1px solid
rgba(255,255,255,.08);
transition:
transform .25s ease,
border-color .25s ease;
}
.service:hover {
transform: translateY(-6px);
border-color:
rgba(16,184,200,.38);
}
.service-icon {
display: grid;
place-items: center;
width: 46px;
height: 46px;
margin-bottom: 18px;
border-radius: 14px;
color: var(--teal-light);
background:
rgba(16,184,200,.10);
font-size: 21px;
}
.service h3 {
margin-bottom: 10px;
font-size: 18px;
}
.service p {
color: var(--muted);
font-size: 14px;
line-height: 1.7;
}
/* =========================================================
VALUE CHAIN
========================================================= */
.value-chain {
display: flex;
align-items: center;
justify-content: space-between;
gap: 25px;
margin-top: 14px;
padding: 25px 28px;
border-radius: 24px;
}
.value-chain h2 {
font-size:
clamp(
24px,
3vw,
36px
);
line-height: 1.15;
letter-spacing: -.04em;
}
.chain {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
gap: 11px;
color: #dcebed;
font-size: 11px;
font-weight: 900;
letter-spacing: .09em;
}
.chain-arrow {
color: var(--teal-light);
font-size: 17px;
}
/* =========================================================
FOOTER
========================================================= */
footer {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
padding: 22px 5px 5px;
color: #81969c;
font-size: 12px;
}
/* =========================================================
ANIMATIONS
========================================================= */
@keyframes airplaneMove {
0% {
left: -180px;
transform: translateY(0);
}
50% {
transform: translateY(-25px);
}
100% {
left: 110%;
transform: translateY(10px);
}
}
@keyframes cloudMove {
0% {
transform: translateX(0);
}
100% {
transform: translateX(120vw);
}
}
@keyframes cloudMoveReverse {
0% {
transform:
translateX(0)
scale(.7);
}
100% {
transform:
translateX(-120vw)
scale(.7);
}
}
@keyframes waveMove {
0%,
100% {
transform:
translateX(0)
translateY(0);
}
50% {
transform:
translateX(25px)
translateY(7px);
}
}
@keyframes shipMove {
0%,
100% {
transform:
translateY(0)
rotate(0deg);
}
50% {
transform:
translateY(-7px)
rotate(.8deg);
}
}
@keyframes truckMove {
from {
transform:
translateX(0);
}
to {
transform:
translateX(120vw);
}
}
/* =========================================================
RESPONSIVE
========================================================= */
@media (max-width: 800px) {
.container {
width:
calc(100% - 20px);
padding-top: 20px;
}
.brand {
flex-direction: column;
align-items: flex-start;
}
.logo-box {
width: 290px;
}
.hero {
padding: 22px;
}
.hero-content {
padding-top: 40px;
}
.information-grid {
grid-template-columns: 1fr;
}
.service-grid {
grid-template-columns: 1fr;
}
.value-chain {
flex-direction: column;
align-items: flex-start;
}
.chain {
justify-content: flex-start;
}
footer {
flex-direction: column;
align-items: flex-start;
}
.ship {
right: -110px;
}
}
@media (max-width: 500px) {
.hero h1 {
font-size: 68px;
}
.logo-box {
width: 100%;
}
.business-badge {
font-size: 11px;
}
.buttons {
flex-direction: column;
}
.button {
width: 100%;
}
.information-card {
padding: 18px;
}
.services {
padding: 22px;
}
.value-chain {
padding: 22px;
}
}
/* =========================================================
REDUCED MOTION
========================================================= */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: .001ms !important;
animation-iteration-count: 1 !important;
scroll-behavior: auto !important;
}
}
</style>
</head>
<body>
<!-- =========================================================
BACKGROUND EFFECTS
========================================================= -->
<canvas id="rainCanvas"></canvas>
<div class="background-light light-one"></div>
<div class="background-light light-two"></div>
<div class="cloud cloud-one"></div>
<div class="cloud cloud-two"></div>
<!-- AIRPLANE -->
<div class="airplane">
<span class="airplane-body"></span>
<span class="airplane-wing"></span>
<span class="airplane-tail"></span>
</div>
<!-- CITY -->
<div class="city">
<span class="building"></span>
<span class="building"></span>
<span class="building"></span>
<span class="building"></span>
<span class="building"></span>
<span class="building"></span>
<span class="building"></span>
<span class="building"></span>
<span class="building"></span>
<span class="building"></span>
</div>
<!-- =========================================================
OCEAN + SHIP
========================================================= -->
<div class="ocean">
<div class="wave wave-one"></div>
<div class="wave wave-two"></div>
<div class="ship">
<span class="ship-hull"></span>
<span class="ship-cargo"></span>
<span class="ship-stack"></span>
</div>
</div>
<!-- =========================================================
ROAD + TRUCKS
========================================================= -->
<div class="road">
<div class="road-line"></div>
<div class="truck truck-one">
<span class="truck-box"></span>
<span class="truck-cab"></span>
<span class="wheel wheel-one"></span>
<span class="wheel wheel-two"></span>
</div>
<div class="truck truck-two">
<span class="truck-box"></span>
<span class="truck-cab"></span>
<span class="wheel wheel-one"></span>
<span class="wheel wheel-two"></span>
</div>
</div>
<!-- =========================================================
MAIN CONTENT
========================================================= -->
<main class="container">
<!-- =====================================================
HERO PROFILE
====================================================== -->
<section class="hero glass">
<!-- BRAND -->
<div class="brand">
<div class="logo-box">
<!--
Put your logo file in the same folder:
procqure-logo.png
-->
<img
src="procqure-logo.png"
alt="Procqure"
>
</div>
<div class="business-badge">
<span class="check">✓</span>
Business Profile
</div>
</div>
<!-- HERO CONTENT -->
<div class="hero-content">
<p class="eyebrow">
PROCUREMENT • SUPPLY CHAIN • STRATEGIC SOURCING
</p>
<h1>
Procqure
</h1>
<p class="category">
Business Management Consultant
</p>
<!-- RATING -->
<div class="rating">
<span class="rating-number">
5.0
</span>
<span class="stars">
★★★★★
</span>
<span>
15 reviews
</span>
</div>
<!-- DESCRIPTION -->
<p class="intro">
Strategic procurement expertise that helps organizations
improve sourcing, supply-chain resilience, supplier
performance and long-term business value.
</p>
</div>
<!-- BUTTONS -->
<div class="buttons">
<a
class="button button-primary"
href="https://www.procqure.com/"
target="_blank"
rel="noopener"
>
Visit Website
</a>
<a
class="button button-secondary"
href="mailto:Info@Procqure.com"
>
Email Procqure
</a>
<a
class="button button-outline"
href="https://www.google.com/maps/search/?api=1&query=Procqure%2C%201940%20Palmer%20Ave%2C%20Larchmont%2C%20NY%2010538"
target="_blank"
rel="noopener"
>
Get Directions
</a>
</div>
</section>
<!-- =====================================================
BUSINESS INFORMATION
====================================================== -->
<section class="information-grid">
<!-- ADDRESS -->
<article class="information-card glass">
<div class="information-icon">
⌖
</div>
<div>
<h3>
Location
</h3>
<p>
1940 Palmer Ave #1010
<br>
Larchmont, NY 10538
</p>
</div>
</article>
<!-- EMAIL -->
<article class="information-card glass">
<div class="information-icon">
@
</div>
<div>
<h3>
Email
</h3>
<p>
<a href="mailto:Info@Procqure.com">
Info@Procqure.com
</a>
</p>
<small>
Direct business inquiries
</small>
</div>
</article>
<!-- HOURS -->
<article class="information-card glass">
<div class="information-icon">
◷
</div>
<div>
<h3>
Business Hours
</h3>
<p>
Monday – Friday
<br>
<strong>
8:00 AM – 8:00 PM
</strong>
</p>
<small>
Business profile hours
</small>
</div>
</article>
<!-- WEBSITE -->
<article class="information-card glass">
<div class="information-icon">
↗
</div>
<div>
<h3>
Website
</h3>
<p>
<a
href="https://www.procqure.com/"
target="_blank"
rel="noopener"
>
www.procqure.com
</a>
</p>
<small>
Explore Procqure services
</small>
</div>
</article>
</section>
<!-- =====================================================
SERVICES
====================================================== -->
<section class="services glass">
<div class="section-title">
<p class="eyebrow">
WHAT PROCQURE DOES
</p>
<h2>
Move procurement from a cost function
to a strategic advantage.
</h2>
</div>
<div class="service-grid">
<!-- PROCUREMENT -->
<article class="service">
<div class="service-icon">
⌁
</div>
<h3>
Procurement Advisory
</h3>
<p>
Spend analysis, opportunity assessment,
benchmarking, strategic sourcing and
procurement transformation.
</p>
</article>
<!-- SUPPLY CHAIN -->
<article class="service">
<div class="service-icon">
◈
</div>
<h3>
Supply Chain Advisory
</h3>
<p>
Network assessment, network design and
optimization, manufacturing sourcing and
sustainability advisory.
</p>
</article>
<!-- MANAGED SERVICES -->
<article class="service">
<div class="service-icon">
↻
</div>
<h3>
Managed Services
</h3>
<p>
Outsourced procurement, category management,
supplier management and contract lifecycle
support.
</p>
</article>
</div>
</section>
<!-- =====================================================
VALUE CHAIN
====================================================== -->
<section class="value-chain glass">
<div>
<p class="eyebrow">
CONNECTED VALUE CHAIN
</p>
<h2>
Source smarter.
Move faster.
Build resilience.
</h2>
</div>
<div class="chain">
<span>
SUPPLIERS
</span>
<span class="chain-arrow">
→
</span>
<span>
SOURCING
</span>
<span class="chain-arrow">
→
</span>
<span>
LOGISTICS
</span>
<span class="chain-arrow">
→
</span>
<span>
GROWTH
</span>
</div>
</section>
<!-- =====================================================
FOOTER
====================================================== -->
<footer>
<span>
© <span id="year"></span> Procqure
</span>
<span>
Procurement & Supply Chain Consulting
</span>
</footer>
</main>
<!-- =========================================================
JAVASCRIPT
========================================================= -->
<script>
/*
============================================================
DYNAMIC YEAR
============================================================
*/
document.getElementById("year").textContent =
new Date().getFullYear();
/*
============================================================
ANIMATED RAIN
============================================================
*/
const canvas =
document.getElementById("rainCanvas");
const ctx =
canvas.getContext("2d");
let width;
let height;
let drops = [];
let devicePixelRatio =
Math.min(
window.devicePixelRatio || 1,
2
);
/*
------------------------------------------------------------
RESIZE CANVAS
------------------------------------------------------------
*/
function resizeCanvas() {
width =
window.innerWidth;
height =
window.innerHeight;
canvas.width =
width * devicePixelRatio;
canvas.height =
height * devicePixelRatio;
canvas.style.width =
width + "px";
canvas.style.height =
height + "px";
ctx.setTransform(
devicePixelRatio,
0,
0,
devicePixelRatio,
0,
0
);
/*
--------------------------------------------------------
CREATE RAIN DROPS
--------------------------------------------------------
*/
const numberOfDrops =
Math.min(
300,
Math.floor(width * 0.25)
);
drops =
[];
for (
let i = 0;
i < numberOfDrops;
i++
) {
drops.push({
x:
Math.random() * width,
y:
Math.random() * height,
length:
7 +
Math.random() * 17,
speed:
4 +
Math.random() * 9,
angle:
-0.8 +
Math.random() * .8,
opacity:
.08 +
Math.random() * .25
});
}
}
/*
------------------------------------------------------------
DRAW RAIN
------------------------------------------------------------
*/
function drawRain() {
ctx.clearRect(
0,
0,
width,
height
);
ctx.lineWidth = 1;
drops.forEach(
function(drop) {
ctx.beginPath();
ctx.moveTo(
drop.x,
drop.y
);
ctx.lineTo(
drop.x + drop.angle,
drop.y + drop.length
);
ctx.strokeStyle =
`rgba(
180,
235,
240,
${drop.opacity}
)`;
ctx.stroke();
/*
------------------------------------------------
MOVE DROP
------------------------------------------------
*/
drop.y +=
drop.speed;
drop.x +=
drop.angle;
/*
------------------------------------------------
RESET DROP
------------------------------------------------
*/
if (
drop.y >
height + 20
) {
drop.y = -20;
drop.x =
Math.random() * width;
}
if (
drop.x < -20 ||
drop.x > width + 20
) {
drop.x =
Math.random() * width;
}
}
);
requestAnimationFrame(
drawRain
);
}
/*
============================================================
START RAIN
============================================================
*/
window.addEventListener(
"resize",
resizeCanvas
);
resizeCanvas();
drawRain();
</script>
</body>
</html>