Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2197,6 +2197,24 @@ <h3 class="tool-title">CSS Gradient Generator</h3>
<i class="fas fa-arrow-right"></i>
</div>
</a>
<!-- CSS Box Shadow Generator -->
<a href="tools/css-box-shadow-generator/index.html" class="tool-card" data-category="utility">
<div class="tool-icon">
<i class="fas fa-square"></i>
</div>
<div class="tool-content">
<h3 class="tool-title">CSS Box Shadow Generator</h3>
<p class="tool-description">Easily create CSS box-shadow effects with adjustable parameters. Set offsets, blur, spread, and color to get the perfect shadow for your elements.</p>
<div class="tool-tags">
<span class="tag">CSS</span>
<span class="tag">Box Shadow</span>
<span class="tag">Utility</span>
</div>
</div>
<div class="tool-arrow">
<i class="fas fa-arrow-right"></i>
</div>
</a>

<!-- Add Tool Card -->
<div class="tool-card add-tool-card" data-category="all">
Expand Down
32 changes: 32 additions & 0 deletions tools/css-box-shadow-generator/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Box Shadow Generator</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div class="container">
<h1>🧱 Box Shadow Generator</h1>

<div class="controls">
<label>Horizontal Offset: <input type="range" id="hOffset" min="-50" max="50" value="10"><span id="hVal">10</span>px</label>
<label>Vertical Offset: <input type="range" id="vOffset" min="-50" max="50" value="10"><span id="vVal">10</span>px</label>
<label>Blur Radius: <input type="range" id="blur" min="0" max="100" value="15"><span id="bVal">15</span>px</label>
<label>Spread Radius: <input type="range" id="spread" min="-50" max="50" value="0"><span id="sVal">0</span>px</label>
<label>Shadow Color: <input type="color" id="color" value="#ff6600"></label>
</div>

<div class="preview" id="previewBox"></div>

<div class="code-box">
<p><strong>CSS:</strong></p>
<textarea id="cssCode" readonly></textarea>
<button id="copyBtn">📋 Copy CSS</button>
</div>
</div>

<script src="script.js"></script>
</body>
</html>
42 changes: 42 additions & 0 deletions tools/css-box-shadow-generator/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
const hOffset = document.getElementById('hOffset');
const vOffset = document.getElementById('vOffset');
const blur = document.getElementById('blur');
const spread = document.getElementById('spread');
const color = document.getElementById('color');
const previewBox = document.getElementById('previewBox');
const cssCode = document.getElementById('cssCode');
const copyBtn = document.getElementById('copyBtn');

const hVal = document.getElementById('hVal');
const vVal = document.getElementById('vVal');
const bVal = document.getElementById('bVal');
const sVal = document.getElementById('sVal');

function updateShadow() {
const h = hOffset.value;
const v = vOffset.value;
const b = blur.value;
const s = spread.value;
const c = color.value;

hVal.textContent = h;
vVal.textContent = v;
bVal.textContent = b;
sVal.textContent = s;

const shadow = `${h}px ${v}px ${b}px ${s}px ${c}`;
previewBox.style.boxShadow = shadow;
cssCode.value = `box-shadow: ${shadow};`;
}

[hOffset, vOffset, blur, spread, color].forEach(input =>
input.addEventListener('input', updateShadow)
);

updateShadow();

copyBtn.addEventListener('click', () => {
navigator.clipboard.writeText(cssCode.value);
copyBtn.textContent = "✅ Copied!";
setTimeout(() => copyBtn.textContent = "📋 Copy CSS", 1500);
});
94 changes: 94 additions & 0 deletions tools/css-box-shadow-generator/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap');

body {
margin: 0;
background-color: #0f0f0f;
color: #fff;
font-family: 'JetBrains Mono', monospace;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}

.container {
width: 90%;
max-width: 700px;
background: #1a1a1a;
border: 2px solid #ff6600;
border-radius: 16px;
padding: 30px;
box-shadow: 0 0 30px #ff660044;
}

h1 {
text-align: center;
color: #ff6600;
text-shadow: 0 0 15px #ff660099;
}

.controls {
display: flex;
flex-direction: column;
gap: 15px;
margin-top: 20px;
}

label {
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
}

input[type="range"] {
flex-grow: 1;
}

.preview {
width: 200px;
height: 200px;
margin: 30px auto;
background: #222;
border-radius: 12px;
transition: all 0.3s ease;
}

.code-box {
text-align: center;
}

textarea {
width: 100%;
height: 80px;
background: #111;
border: 2px solid #ff6600;
border-radius: 10px;
color: #fff;
padding: 10px;
font-family: 'JetBrains Mono', monospace;
font-size: 14px;
resize: none;
margin-top: 10px;
}

button {
background: #ff6600;
border: none;
color: #fff;
border-radius: 10px;
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
margin-top: 10px;
transition: 0.3s;
}

button:hover {
background: #ff8533;
box-shadow: 0 0 20px #ff660099;
}

strong {
color: #ff6600;
}