← Back to CSS Course | Chapter 6: Selectors & Styling | Lesson 22 of 22

CSS Outline

Outline पहली नज़र में border जैसा ही दिखता है, एक outline किसी element के चारों ओर draw की गई एक line है, लेकिन यह अंदर से काफ़ी अलग behave करता है। सबसे बड़ा अंतर: outline कभी layout space नहीं लेता, और यह box model का हिस्सा होने के बजाय border के बाहर draw होता है। Outlines लगातार एक specific काम के लिए दिखते हैं: accessibility। जब आप अपने keyboard से किसी page में tab करते हैं, तो browser इस समय selected element के चारों ओर एक focus outline draw करता है, ताकि आपको हमेशा पता रहे कि आप कहाँ हैं। outline को सही तरीके से समझने का मतलब है कि आप cookiescursor.com जैसी किसी site पर उस focus indicator को safely customize कर सकते हैं, गलती से उन visitors के लिए keyboard navigation तोड़े बिना जो इस पर निर्भर करते हैं।
Syntax
css
selector {
  outline: width style color;
  outline-offset: length;
}

outline-style

outline-style किसी outline का line pattern set करता है, जैसे solid, dashed, या dotted, बिल्कुल border-style जैसे ही style keywords follow करते हुए। border के उलट, outline element के box size या layout को कभी असर नहीं करता, क्योंकि यह box के पूरी तरह बाहर draw होता है।

Note:
  • solid सबसे common outline style है, खासतौर पर custom focus indicators के लिए।
  • Accepted values:
  • none — कोई outline नहीं (initial value)
  • auto — browser की default focus-ring style
  • solid — एक continuous line
  • dashed — dashes की एक series
  • dotted — dots की एक series
  • double — दो parallel lines
  • groove / ridge / inset / outset — 3D looks
  • hidden outline-style के लिए allowed नहीं है
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords
Warning: border की तरह ही, किसी outline को असल में render होने के लिए एक style चाहिए, भले ही width और color पहले से defined हों।

उदाहरण: outline-style

css
<style>
.box {
  outline-style: dashed;
}
</style>
<div class="box">Outline never affects layout size</div>

outline-width और outline-color

outline-width तय करता है कि outline कितना मोटा है, और outline-color उसका color set करता है, ठीक border-width और border-color जैसे काम करते हुए लेकिन separate outline layer के लिए। इन्हें सबसे ज़्यादा किसी site की branding से match करने के लिए focus outline को customize करने में इस्तेमाल किया जाता है, browser default के बजाय।

Note:
  • outline-width को इतना visible रखें कि नोटिस हो, कम से कम 2px, क्योंकि एक focus ring सिर्फ तभी काम का है जब वह देखने में आसान हो।
  • Accepted values:
  • length — जैसे 2px (outline-width)
  • thin / medium / thick — width keywords, medium initial value है
  • कोई भी color — outline-color के लिए
  • invert — limited support वाली legacy value
  • outline shorthand — width, style और color किसी भी order में हो सकती हैं
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords
Warning: page background के मुकाबले कम-contrast वाला outline-color कुछ visitors के लिए focus indicator को लगभग invisible बना सकता है।

उदाहरण: outline-width and outline-color

css
<style>
button:focus {
  outline-style: solid;
  outline-width: 3px;
  outline-color: orange;
}
</style>
<button>Tab to me</button>

outline-offset

outline-offset element के edge और उसके outline के बीच space जोड़ता है, element के अपने size या layout को बदले बिना outline को और बाहर धकेलते हुए। यह तब उपयोगी है जब आप बाकी box के बारे में कुछ बदले बिना किसी element और उसके focus ring के बीच visible separation चाहते हैं।

Note:
  • एक छोटा positive outline-offset, जैसे 2px से 4px, अक्सर focus ring को element के अपने border से थोड़ा अलग करके साफ़ बनाता है।
  • Accepted values:
  • length — जैसे 4px, border edge से spacing
  • 0 — outline border edge को छूता है (initial value)
  • negative length — outline को border edge के अंदर draw करता है
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords
Warning: outline-offset layout को बिल्कुल असर नहीं करता, page पर दूसरे elements इसके लिए जगह बनाने के लिए shift नहीं होंगे, margin में बदलाव के उलट।

उदाहरण: outline-offset

css
<style>
button:focus {
  outline: 2px solid blue;
  outline-offset: 4px;
}
</style>
<button>Focus ring pushed outward</button>

Shorthand outline Property

border की तरह ही, outline के पास एक shorthand property है जो width, style, और color को एक declaration में combine करती है। 'outline: none' से outlines को पूरी तरह हटाना एक common accessibility mistake है, क्योंकि यह keyboard users से visible focus feedback छीन लेता है।

Note:
  • shorthand focus-state CSS को छोटा और readable रखता है, खासतौर पर किसी :focus selector पर इसे define करते समय।
  • Accepted values:
  • outline-width — thin, medium, thick या एक length
  • outline-style — border-style जैसी ही values, hidden को छोड़कर
  • outline-color — कोई भी color value
  • values किसी भी order में आ सकती हैं
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords
Warning: border shorthand की तरह ही, style value छोड़ देने का मतलब है कि width या color चाहे जो भी हो बिल्कुल कोई outline नहीं दिखता।

उदाहरण: Shorthand outline Property

css
<style>
a:focus {
  outline: 2px solid orange;
}
</style>
<a href="#">Width, style, color in one line</a>

Outline बनाम Border: मुख्य अंतर

Border box model का हिस्सा है और element के layout size में जुड़ता है (जब तक box-sizing: border-box इस्तेमाल न हो); outline पूरी तरह box model के बाहर बैठता है और layout को कभी असर नहीं करता, यहाँ तक कि जब यह visually आस-पास के content से overlap करे।

Note: permanent, structural styling के लिए border इस्तेमाल करें, और focus व validation feedback जैसे temporary, interactive states के लिए outline।
Warning: उसकी जगह कोई और साफ़ visible focus style दिए बिना कभी भी outline: none set न करें, ऐसा करना keyboard navigation को follow करना बहुत मुश्किल बना देता है।

उदाहरण: Outline vs Border: Key Differences

css
<style>
.bordered {
  border: 4px solid black;
}
.outlined {
  outline: 4px solid black;
}
</style>
<div class="bordered">Border adds to layout size</div>
<div class="outlined">Outline never affects layout, even overlapping</div>
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. design को 'साफ़' करने के लिए outline: none set करना बिना कोई दूसरा visible focus indicator दिए, keyboard accessibility तोड़ते हुए।
  2. यह उम्मीद करना कि outline element के layout size को border जैसे असर करेगा, यह नहीं करता, क्योंकि यह पूरी तरह box के बाहर draw होता है।
  3. outline-offset के मौजूद होने की बात भूल जाना, जो अक्सर किसी focus ring के आस-पास spacing के लिए border से जूझने से बेहतर fix होता है।
चैप्टर सारांश
  • Outline किसी element के चारों ओर एक line draw करता है लेकिन border के उलट उसके layout size को कभी असर नहीं करता।
  • outline-offset किसी element के edge और उसके outline के बीच space जोड़ता है।
  • Outlines accessibility के लिए ज़रूरी हैं, क्योंकि browsers keyboard focus दिखाने के लिए इनका इस्तेमाल करते हैं; इन्हें बदले बिना कभी न हटाएँ।
ब्राउज़र सपोर्ट

यहाँ बताई गई सभी standard CSS outline properties हर modern browser में supported हैं।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.