- painted area outside of padding
- drawn above background
Border width
- specify thickness of border area
- longhand
border-*-width for each side, shorthand border-width for all four sides
- not inherited
- values:
<length>, thin, medium, thick
- keywords are specified by user agent
- can not be negative
- percentage is not defined ⚠️
- beware: no
auto value ❗️
- initial value:
medium
- beware: user agent style sheet may set any value, overrides initial value ❗️
Border style
- specify line style of border area
- longhand
border-*-style for each side, shorthand border-style for all four sides
- not inherited
- values:
none, hidden, dotted, dashed, solid, double, groove, ridge, inset, outset
- beware: no
auto value ❗️
- beware:
none makes border not appear, color and width are ignored ❗️
- initial value:
none, i.e. no border by default ❗️
- beware: user agent style sheet may set any value, overrides initial value ❗️
Border color
- specify color of border area
- longhand
border-*-color for each side, shorthand border-color for all four sides
- not inherited
- values:
<color>
- beware: no
auto value ❗️
- initial value: value of
color property
- beware: user agent style sheet may set any value, overrides initial value ❗️
Border shorthands
- specify thickness, line style and color of border area
- shorthand
border-* combines border-*-width, border-*-color and border-*-style for each side, in any order
- shorthand
border combines border-* for all four sides
- beware:
border can’t set different values for each side, unlike margin and padding ❗️
- beware: resets omitted border properties to their initial value, including
border-image ❗️
- not inherited
- beware: user agent style sheet may set any value, overrides initial value, e.g.
hr { border: 1px inset; } ❗️
Border radius
- specify semi-major and -minor axes of ellipse of corner curvature of outer edge of border area
- inner edge makes smooth transition for any difference in line thickness
- beware: if border radius is smaller than thickness of both lines, inner edge is not curved ❗️
- longhand
border-*-radius for each corner, shorthand border-radius for all four corners
- not inherited
- values:
<length-percentage>
- can not be negative
- percentage relative to block size/inline size of containing block, see Writing Mode
- beware: no
auto value ❗️
- initial value:
0
- beware: user agent style sheet may set any value, overrides initial value, e.g.
select { border-radius: 5px; } ❗️
Length value
- first value is horizontal axis, second is vertical axis
- single value is for both axes
- if one is zero, other computes to zero as well, i.e. no curvature ❗️
- beware: directions are physical and not logical, i.e. can’t specify independent of writing mode, see Writing Mode ⚠️
- beware: shorthand accepts any values for horizontal axis, then after
/ any values for vertical axis ❗️
- beware: sum of adjacent border radii can’t exceed size of box in same spacial dimension otherwise lines wouldn’t meet, larger values are reduced by same amount until sum is maximal ❗️
<div class="box"></div>
.box {
box-sizing: border-box;
width: 600px;
height: 200px;
border: 1px solid black;
border-radius: 50px 200px 50px 200px;
}
- beware: percentages refer to different values for non-square box, i.e. must use non-percentage value for circular corners ❗️
<div class="box"></div>
.box {
box-sizing: border-box;
width: 600px;
height: 200px;
border: 1px solid black;
border-radius: 50%;
border-radius: 50px;
border-radius: 100px;
border-radius: 999px;
}
Resources