Responsive profile card
A friendly introduction with a flexible layout and a clear next step.
View exampleA good first building block
Choose two colors and an angle to generate a linear-gradient declaration.
<main><h1>Two colors, a new mood</h1><label for="start-color">First color</label><input type="color" id="start-color" value="#3658bf"><label for="end-color">Second color</label><input type="color" id="end-color" value="#b16fd8"><label for="gradient-angle">Angle</label><input type="range" id="gradient-angle" min="0" max="360" value="135"><p><output id="angle-output">135°</output></p><div id="gradient-preview" aria-label="Gradient preview"></div><label for="gradient-code">CSS to copy</label><textarea id="gradient-code" readonly rows="3"></textarea></main>:root{font-family:system-ui,sans-serif;color:#18223b}*{box-sizing:border-box}body{margin:0;min-height:100vh;padding:24px;background:#edf1ff;display:grid;place-items:center}main{width:min(100%,480px);background:white;border-radius:20px;padding:24px}h1{font-size:24px;margin:0 0 16px}button,input,select,textarea{font:inherit}button{min-height:44px;border:1px solid #afbddd;border-radius:10px;padding:10px 14px;background:#eff3ff;color:#18223b;cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #3658bf;outline-offset:3px}p{line-height:1.65}label{display:block;margin:16px 0 6px}input:not([type=checkbox]),select,textarea{max-width:100%;width:100%;padding:10px;border:1px solid #afbddd;border-radius:8px}button:disabled{opacity:.5;cursor:default}#gradient-preview{height:150px;border-radius:14px;border:1px solid #afbddd}input[type=color]{height:44px}const start=document.querySelector("#start-color"),end=document.querySelector("#end-color"),angle=document.querySelector("#gradient-angle"),preview=document.querySelector("#gradient-preview"),code=document.querySelector("#gradient-code");
function update(){const value="linear-gradient("+Number(angle.value)+"deg, "+start.value+", "+end.value+")";preview.style.background=value;code.value="background: "+value+";";document.querySelector("#angle-output").textContent=angle.value+"°";}
[start,end,angle].forEach(input=>input.addEventListener("input",update));update();<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>My code example</title>
<style>
:root{font-family:system-ui,sans-serif;color:#18223b}*{box-sizing:border-box}body{margin:0;min-height:100vh;padding:24px;background:#edf1ff;display:grid;place-items:center}main{width:min(100%,480px);background:white;border-radius:20px;padding:24px}h1{font-size:24px;margin:0 0 16px}button,input,select,textarea{font:inherit}button{min-height:44px;border:1px solid #afbddd;border-radius:10px;padding:10px 14px;background:#eff3ff;color:#18223b;cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #3658bf;outline-offset:3px}p{line-height:1.65}label{display:block;margin:16px 0 6px}input:not([type=checkbox]),select,textarea{max-width:100%;width:100%;padding:10px;border:1px solid #afbddd;border-radius:8px}button:disabled{opacity:.5;cursor:default}#gradient-preview{height:150px;border-radius:14px;border:1px solid #afbddd}input[type=color]{height:44px}
</style>
</head>
<body>
<main><h1>Two colors, a new mood</h1><label for="start-color">First color</label><input type="color" id="start-color" value="#3658bf"><label for="end-color">Second color</label><input type="color" id="end-color" value="#b16fd8"><label for="gradient-angle">Angle</label><input type="range" id="gradient-angle" min="0" max="360" value="135"><p><output id="angle-output">135°</output></p><div id="gradient-preview" aria-label="Gradient preview"></div><label for="gradient-code">CSS to copy</label><textarea id="gradient-code" readonly rows="3"></textarea></main>
<script>
const start=document.querySelector("#start-color"),end=document.querySelector("#end-color"),angle=document.querySelector("#gradient-angle"),preview=document.querySelector("#gradient-preview"),code=document.querySelector("#gradient-code");
function update(){const value="linear-gradient("+Number(angle.value)+"deg, "+start.value+", "+end.value+")";preview.style.background=value;code.value="background: "+value+";";document.querySelector("#angle-output").textContent=angle.value+"°";}
[start,end,angle].forEach(input=>input.addEventListener("input",update));update();
</script>
</body>
</html>example.html.A CSS linear gradient is a generated image. Changing the angle changes its direction; color inputs supply explicit hex values. Select the generated declaration and copy it into your stylesheet. If you place text over the gradient, check contrast at every part behind the text rather than judging the colors alone.
Historical purpose: The stage-one 2014 archive recovery verified this exact detail purpose. This is an original modern implementation; no archived third-party code, credit link, remote script or guessed numeric preview mapping is reused.
Native color controls may look different across browsers. The generated CSS uses linear-gradient, replacing the old proprietary IE filter. Test text contrast if you place content over the gradient; color alone should not convey meaning.
This is newly authored code. It uses system fonts and no external assets.
Keep the ideas going