outline 与 border 相似,不同之处在于 outline 在整个元素周围画了一条线;它不能像 border 那样,指定在元素的一个面上设置轮廓,也就是不能单独设置顶部轮廓、右侧轮廓、底部轮廓或左侧轮廓。
outline 简写属性可以用一个、两个或三个值声明,并且它们的顺序可以任意更换。例如:
这里需要注意两点:
outline 属性是由三个单独属性组成的缩写,用于定义轮廓的颜色、宽度和样式。我们将在下面逐一探讨。
定义要绘制的线的厚度。其值可以是任意长度值,也可以是以下任意关键字:
outline-style 定义要绘制的线的类型。它的值可以是以下任何关键字:
设置 outline 的文字部分和装饰部分的颜色。它可以通过关键字、十六进制值、RGB/RGBA 值和 HSL/HSLA 值来指定。
如果[浏览器支持]( https://caniuse.com/?search=outline-color%3A invert),其默认值为 invert ;否则,其默认值为 currentColor 。
尝试打开任何网站上的控制台并运行以下内容:
你们会看到很多网站都是这样的结构:
默认情况下, outline 用于 :focus 样式。但请记住,如果删除轮廓样式,例如: a:focus { outline: 0} ,您需要使用其他视觉上不同的样式将它们添加回来。
其实在这两种方式下,p都继承了body的outline样式,只不过当body没有设置border时,p的outline就跟body的outline重叠了,看上去就感觉p没有outline一样。你只要多放几个p(或者在p的前面加一些其他元素),就能发现其中奥妙了。