The border CSS property is a shorthand property for setting all individual border property values at once: border-width, border-style, and border-color. As with all shorthand properties, any individual value that is not specified is set to its corresponding initial value. Importantly, border cannot be used to specify a custom value for border-image, but instead sets it to its initial value, i.e., none.
border: 1px; border: 2px dotted; border: medium dashed green;
Usage note: It is recommended to use border when you want to set all border properties simultaneously. While the border-width, border-style, and border-color shorthand properties accept up to four values, allowing you to set different values for each edge, border only accepts a single value for each property. Thus, the same style is applied to all four edges.
| Initial value | as each of the properties of the shorthand:
|
|---|---|
| Applies to | all elements. It also applies to ::first-letter. |
| Inherited | no |
| Media | visual |
| Computed value | as each of the properties of the shorthand:
|
| Animation type | as each of the properties of the shorthand:
|
| Canonical order | order of appearance in the formal grammar of the values |
Syntax
The border property is specified using one or more of the <br-width>, <br-style>, and <color> values listed below.
Values
<br-width>- Thickness of the border. Defaults to
mediumif absent. Seeborder-width. <br-style>- Line style of the border. Defaults to
noneif absent. Seeborder-style. <color>- Color of the border. Defaults to the value of the element's
colorproperty. Seeborder-color.
Formal syntax
<br-width> || <br-style> || <color>where
<br-width> = <length> | thin | medium | thick
<br-style> = none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset
<color> = <rgb()> | <rgba()> | <hsl()> | <hsla()> | <hex-color> | <named-color> | currentcolor | <deprecated-system-color>
where
<rgb()> = rgb( [ [ <percentage>{3} | <number>{3} ] [ / <alpha-value> ]? ] | [ [ <percentage>#{3} | <number>#{3} ] , <alpha-value>? ] )
<rgba()> = rgba( [ [ <percentage>{3} | <number>{3} ] [ / <alpha-value> ]? ] | [ [ <percentage>#{3} | <number>#{3} ] , <alpha-value>? ] )
<hsl()> = hsl( [ <hue> <percentage> <percentage> [ / <alpha-value> ]? ] | [ <hue>, <percentage>, <percentage>, <alpha-value>? ] )
<hsla()> = hsla( [ <hue> <percentage> <percentage> [ / <alpha-value> ]? ] | [ <hue>, <percentage>, <percentage>, <alpha-value>? ] )
where
<alpha-value> = <number> | <percentage>
<hue> = <number> | <angle>
Examples
HTML
<div class="fun-border">Look at my borders.</div>
<p>You can edit the CSS below to experiment with border styles!</p>
<style contenteditable>
.fun-border {
border: 2px solid red;
}
</style>
CSS
style {
display: block;
border: 1px dashed black;
}
Result
Specifications
| Specification | Status | Comment |
|---|---|---|
| CSS Backgrounds and Borders Module Level 3 The definition of 'border' in that specification. |
Candidate Recommendation | Removes specific support for transparent, as it is now a valid <color>; this has no practical impact.Though it cannot be set to a custom value using the shorthand, border now resets border-image to its initial value (none). |
| CSS Level 2 (Revision 1) The definition of 'border' in that specification. |
Recommendation | Accepts the inherit keyword. Also accepts transparent as a valid color. |
| CSS Level 1 The definition of 'border' in that specification. |
Recommendation | Initial definition. |
Browser compatibility
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| Basic support | 1.0 | (Yes) | 1.0 (1.7 or earlier) | 4.0 | 3.5 | 1.0 (85) |
| Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | ? | (Yes) | 1.0 (1.9.2) | ? | ? | 1.0 |
See also
border-radius-related CSS properties:border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius