This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The <line-style> enumerated value type represents keyword values that define the style of a line, or the lack of a line. The <line-style> keyword values are used in the following longhand and shorthand border and column properties:
border, border-style
border-block, border-block-style
border-block-end, border-block-end-style
border-block-start, border-block-start-style
border-bottom, border-bottom-style
border-inline, border-inline-style
border-inline-end, border-inline-end-style
border-inline-start, border-inline-start-style
border-left, border-left-style
border-right, border-right-style
border-top, border-top-style
column-rule, column-rule-style
The <line-style> enumerated type is specified using one of the values listed below:
noneDisplays no line. The computed value of the line width is 0 even if a width value is specified. In the case of table cell and border collapsing, the none value has the lowest priority. If any other conflicting border is set, it will be displayed. The none value is similar to hidden.
Displays no line. The computed width of the line is 0 even if a width value is specified. In the case of table cell and border collapsing, the hidden value has the highest priority. If any other conflicting border is set, it won't be displayed. The hidden value is similar to none, but hidden is not a valid value for outline styles.
dottedDisplays a series of round dots. The radius of the dots is half the computed value of the line's width. The spacing of the dots is not defined by the specification and is implementation-specific.
dashedDisplays a series of short square-ended dashes or line segments. The exact size and length of the segments are not defined by the specification and are implementation-specific.
solidDisplays a single, straight solid line.
doubleDisplays two straight lines with some space between them. The length of the lines adds up to the pixel size defined by the line's width.
grooveDisplays a border with a carved appearance. This value is the opposite of ridge.
ridgeDisplays a border with an extruded appearance. This value is the opposite of groove.
insetDisplays a border that makes the element appear embedded. This value is the opposite of outset. When applied to a table cell border and border-collapse is set to collapsed, this value behaves like groove.
outsetDisplays a border that makes the element appear embossed. This value is the opposite of inset. When applied to a table cell with border-collapse set to collapsed, this value behaves like ridge.
Note: When <outline-style> is used as the value type for outline and outline-style properties, it is similar to <line-style>, but does not support hidden and includes the auto value. When auto is set, the user-agent defined <line-style> value is used.
<line-style> =
none |
hidden |
dotted |
dashed |
solid |
double |
groove |
ridge |
inset |
outset
The first example demonstrates all the <line-style> keyword values. The second example demonstrates how some line style colors may display in unexpected ways.
This example shows all the <line-style> values as values for the CSS border-style and column-rule-style properties.
This example uses multiple <div> elements, each with a class representing the <line-style> value that is being demonstrated.
<div class="{line-style}">
<p>{line-style}</p>
<p>a b c d e f g h i j k l m n o p q r s t u v w x y z</p>
</div>
In the CSS for this example, the border and the column-rule for all the <p> elements is defined to have a width of 7px and the style value of double. For each paragraph, the double value is then overridden by specifying a different <line-style> value for the border-style and column-rule-style properties.
p {
padding: 5px;
border: double 7px #bada55;
}
p + p {
columns: 3;
column-gap: 20px;
column-rule: double 7px;
border-color: black;
}
.none p {
border-style: none;
column-rule-style: none;
}
.hidden p {
border-style: hidden;
column-rule-style: hidden;
}
.dotted p {
border-style: dotted;
column-rule-style: dotted;
}
.dashed p {
border-style: dashed;
column-rule-style: dashed;
}
.solid p {
border-style: solid;
column-rule-style: solid;
}
.double p {
border-style: double;
column-rule-style: double;
}
.groove p {
border-style: groove;
column-rule-style: groove;
}
.ridge p {
border-style: ridge;
column-rule-style: ridge;
}
.inset p {
border-style: inset;
column-rule-style: inset;
}
.outset p {
border-style: outset;
column-rule-style: outset;
}
Notice that the black border is not always black.
This example demonstrates line-style and color choice. With some <line-style> keyword values, the color of the line may not be what you expect. To create the required "3D" effect of groove, ridge, inset, and outset styles when displaying these values in black or white, user agents use different color calculations than any other color-line combinations.
The four sides of each <div> have a different <line-style> value, and each list item has a different <color> value. We use generated content to display the CSS declared inline.
div {
border-width: 10px;
border-style: inset groove ridge outset;
padding: 5px;
}
The JavaScript dynamically creates <div> elements, each with a different border-color set.
// prettier-ignore
const colors = [
"#000000", "#000001", "#ffffff",
"#ff00ff", "#ffff00", "#00ffff",
"#cc33cc", "#cccc33", "#33cccc",
"#ff0000", "#00ff00", "#0000ff",
"#cc3333", "#33cc33", "#3333cc",
"#993333", "#339933", "#333399",
];
for (const c of colors) {
const div = document.createElement("div");
div.style.borderColor = c;
div.textContent = c;
document.body.appendChild(div);
}
Notice that the almost-black color of #000001 may be different from the actual black, and the contrast between the dark and light edges is more noticeable when using lighter colors.
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
line-style |
1 | 12 | 1 | 3.5 | 1 | 18 | 4 | 14 | 3 | 1.0 | 3 | 3 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/line-style