<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Advanced CSS Shadow Generator</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
<style>
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&display=swap');
body {
background: linear-gradient(135deg, #f0f0f0, #ffffff);
font-family: 'Poppins', sans-serif;
text-align: center;
padding: 20px;
transition: all 0.3s ease;
}
.container {
max-width: 900px;
margin: auto;
background: rgba(255, 255, 255, 0.9);
padding: 30px;
border-radius: 20px;
box-shadow: 0px 0px 40px rgba(0, 0, 0, 0.1);
backdrop-filter: blur(15px);
transition: all 0.3s ease-in-out;
}
h1 {
font-size: 30px;
font-weight: 700;
text-transform: uppercase;
color: #3498db;
animation: fadeIn 1s ease-in-out;
}
.shadow-box {
width: 350px;
height: 200px;
background: #ffffff;
margin: 20px auto;
border-radius: 15px;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
color: #333;
text-shadow: 1px 1px 2px rgba(0,0,0,0.3);
box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.1);
animation: floating 3s ease-in-out infinite;
}
.controls {
padding: 25px;
background: rgba(255, 255, 255, 0.85);
border-radius: 15px;
box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.1);
transition: all 0.3s ease-in-out;
}
.controls input[type="range"],
.controls input[type="color"],
.controls input[type="checkbox"] {
width: 100%;
margin-bottom: 15px;
accent-color: #3498db;
}
.code-output {
background: #2c3e50;
color: #ecf0f1;
padding: 15px;
font-family: monospace;
border-radius: 10px;
word-wrap: break-word;
transition: all 0.3s ease;
}
button {
background: linear-gradient(45deg, #3498db, #00bcd4);
color: white;
padding: 12px 25px;
border-radius: 8px;
cursor: pointer;
font-weight: bold;
transition: all 0.3s;
}
button:hover {
background: linear-gradient(45deg, #2980b9, #008d99);
transform: scale(1.05);
}
/* Animations */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(-20px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes floating {
0% { transform: translateY(0); }
50% { transform: translateY(-15px); }
100% { transform: translateY(0); }
}
/* Dark Mode */
body.dark-mode {
background: linear-gradient(135deg, #2c3e50, #34495e);
color: #ecf0f1;
}
body.dark-mode .container {
background: rgba(52, 152, 219, 0.1);
}
body.dark-mode button {
background: linear-gradient(45deg, #00bcd4, #3498db);
}
</style>
</head>
<body>
<div class="container">
<h1>Advanced CSS Shadow Generator</h1>
<div class="shadow-box" id="preview-box">Shadow Preview</div>
<div class="controls">
<label>Horizontal Offset:</label>
<input type="range" id="h-offset" min="-50" max="50" value="10">
<label>Vertical Offset:</label>
<input type="range" id="v-offset" min="-50" max="50" value="10">
<label>Blur Radius:</label>
<input type="range" id="blur-radius" min="0" max="50" value="10">
<label>Spread Radius:</label>
<input type="range" id="spread-radius" min="-20" max="50" value="0">
<label>Shadow Color:</label>
<input type="color" id="shadow-color" value="#000000">
<label>Opacity:</label>
<input type="range" id="opacity" min="0" max="1" step="0.1" value="1">
<label>Inset Shadow:</label>
<input type="checkbox" id="inset-shadow">
<h3>Generated CSS Code:</h3>
<div class="code-output" id="css-code"></div>
<button onclick="copyCSS()">Copy CSS</button>
<button onclick="toggleDarkMode()">Toggle Dark Mode</button>
</div>
</div>
<script>
function updateShadow() {
let hOffset = $("#h-offset").val() + "px";
let vOffset = $("#v-offset").val() + "px";
let blur = $("#blur-radius").val() + "px";
let spread = $("#spread-radius").val() + "px";
let color = $("#shadow-color").val();
let opacity = $("#opacity").val();
let inset = $("#inset-shadow").is(":checked") ? " inset" : "";
let rgbaColor = `rgba(${parseInt(color.slice(1,3), 16)}, ${parseInt(color.slice(3,5), 16)}, ${parseInt(color.slice(5,7), 16)}, ${opacity})`;
let boxShadow = `${hOffset} ${vOffset} ${blur} ${spread} ${rgbaColor}${inset}`;
$("#preview-box").css("box-shadow", boxShadow);
$("#css-code").text(`box-shadow: ${boxShadow};`);
}
function copyCSS() {
let cssText = $("#css-code").text();
navigator.clipboard.writeText(cssText).then(() => {
alert("CSS copied to clipboard!");
});
}
function toggleDarkMode() {
$("body").toggleClass("dark-mode");
}
$("input").on("input change", updateShadow);
updateShadow();
</script>
</body>
</html>
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.