Facebook Pixel
🌙 Eid Mega SaleLimited Time OfferGet Python Bootcamp FREE withData ScienceandData AnalyticsCourses

⚠️ This bonus won't be available after the sale

Shadows

When styling websites, adding depth and focus to elements helps improve the design and user experience. CSS provides two powerful tools for this: shadows (box-shadow, text-shadow) and outlines.

Let’s explore them one by one.

1. Box Shadows

box-shadow is a popular CSS property that enables designers to add shadow effects around an element's frame. It can be used to give any element, be it a div, image, or button, a 3D feel or to emphasize on hover. Syntax:

box-shadow: h-offset v-offset blur spread color inset;
  • h-offset and v-offset: Determines the shadow's horizontal and vertical position.
  • blur: The larger the value, the blurrier the shadow.
  • spread: Expands or shrinks the shadow size.
  • color: Defines the shadow color.
  • inset: Makes the shadow inner.

Example: Basic Shadow

.card {
  width: 200px;
  height: 100px;
  background: white;
  box-shadow: 5px 5px 15px 5px #888888;
}

This adds a soft grey shadow to the element, giving it a floating effect.

Example: Inset Shadow

.input-box {
  width: 250px;
  padding: 10px;
  border: 1px solid #ccc;
  box-shadow: inset 2px 2px 5px rgba(0, 0, 0, 0.3);
}

The shadow is inside the input field, giving a pressed look.

Complete Code-

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Box Shadow Example</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      padding: 20px;
      background: #f9f9f9;
    }

    .card {
      width: 220px;
      height: 120px;
      background: white;
      box-shadow: 5px 5px 15px 5px #888888;
      padding: 20px;
      margin-bottom: 20px;
    }

    .input-box {
      width: 250px;
      padding: 10px;
      border: 1px solid #ccc;
      box-shadow: inset 2px 2px 6px rgba(0,0,0,0.3);
    }
  </style>
</head>
<body>

  <h2>Box Shadow Example</h2>

  <div class="card">This is a box with outer shadow.</div>

  <input type="text" class="input-box" placeholder="Inset shadow input">

</body>
</html>

Output: box-shadow example

  • The white box (.card) looks elevated from the page because of the outer shadow applied using box-shadow.
  • The input field has an inset shadow, making it look like the text area is “pushed inside” the box.

2. Text Shadows

text-shadow is utilized to give shadows specifically to the text. It can elevate the readability of the text or give it an elegant appearance.

Syntax:

text-shadow: h-offset v-offset blur color;

Example: Elegant Text Shadow

.heading {
  font-size: 40px;
  color: #333;
  text-shadow: 2px 2px 4px #888888;
}

Adds a soft grey shadow under the text.

Example: Glow Effect

.glow {
  font-size: 40px;
  color: white;
  text-shadow: 0 0 10px #00f, 0 0 20px #00f, 0 0 30px #00f;
}

Multiple shadows can create a neon glow effect.

Complete Code-

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Text Shadow Example</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      padding: 20px;
      background: #f9f9f9;
    }

    .heading {
      font-size: 40px;
      color: #333;
      text-shadow: 2px 2px 4px #888888;
      margin-bottom: 20px;
    }

    .glow {
      font-size: 40px;
      color: white;
      background: black;
      display: inline-block;
      padding: 10px;
      text-shadow: 0 0 10px #00f, 0 0 20px #00f, 0 0 30px #00f;
    }
  </style>
</head>
<body>

  <h2>Text Shadow Example</h2>

  <div class="heading">Elegant Text Shadow</div><br>
  <div class="glow">Glowing Text Effect</div>

</body>
</html>

Output: text-shadow example

  • The first text (Elegant Text Shadow) has a soft gray shadow, giving it a subtle depth effect.
  • The second text (Glowing Text Effect) has multiple blue shadows, making the text appear as if it is glowing in the dark.

3. Outlines

An outline is a line that is drawn around elements, outside the borders, to make the element "stand out". It's commonly used for accessibility purposes, like highlighting focused elements.

Syntax:

outline: width style color;
  • width: Sets the outline width.
  • style: Determines the style of the outline such as solid, dotted, or dashed.
  • color: Sets the outline color.

Example: Focused Button

.button:focus {
  outline: 2px solid blue;
}

When the button is focused, it gets a blue outline.

Example: Outline with Offset

.box {
  width: 150px;
  height: 80px;
  background: lightcoral;
  outline: 3px dashed black;
  outline-offset: 5px;
}

The outline is placed 5px away from the element’s border.

Complete Code-

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Outline Example</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      padding: 20px;
      background: #f9f9f9;
    }

    .button:focus {
      outline: 2px solid blue;
    }

    .box {
      width: 160px;
      height: 80px;
      background: lightcoral;
      outline: 3px dashed black;
      outline-offset: 5px;
      margin-top: 20px;
    }
  </style>
</head>
<body>

  <h2>Outline Example</h2>

  <button class="button">Click or Tab Me</button>
  <div class="box">Box with Outline</div>

</body>
</html>

Output: outline example

  • When you click or press tab on the button, a blue outline appears, showing that the button is in focus.
  • The second box has a dashed black outline with a gap (offset) between the box edge and the outline, making it stand out clearly.

4. Key Differences: Outline vs Border

While both can visually appear similar, outlines differ from borders in a few ways:

Feature Border Outline
Position Takes up space inside layout Drawn outside, doesn’t affect layout
Offset No offset property outline-offset can push it outward
Width control Can vary on each side Always uniform on all sides
Rounded corners Works with border-radius No rounded corners (usually)