前端队长の技术博客

  1. 轮廓属性outline
  2. 轮廓的特点
  3. border 和 outline 区别
  4. 注意项

如下图,如果是你,你会怎么实现下面图案?

微信截图_20191213170143

通常我们会通过字体图标来显示中间的加号,外层用一个div包裹即可;或者使用伪元素来模拟中间的一横一竖,这都比较麻烦。

其实我们可以直接使用css的outline属性就可以实现。

轮廓属性outline

outline属性是用来设置一个或多个单独的轮廓属性的简写属性 , 例如 outline-style, outline-width 和 outline-color。

轮廓有下面几个属性:

{
    outline-style: solid;
    outline-width: 10px;
    outline-color: red;
}

他们有一种简写形式:

{
    outline: 10px solid red;
}

轮廓的特点

轮廓不占据空间,它们被描绘于内容之上。

可以做到下图的效果:

我发现,当设置 outline-offset 为负值的时候,轮廓会出现在div的内部,如果继续扩大其负值,最终轮廓会收缩成一个“➕”加号,正好可以作为文件上传样式中间的加号。

于是代码就来了:

div {
    margin: 100px;
    width: 100px;
    height: 100px;
    outline: 15px solid #545454;
    outline-offset: -66px;
    border: 2px solid #545454;
}

outline-offset: -66px; 是关键,它表示轮廓距div边的距离,如果为负值则会往里面收缩,最后形成一个加号。具体上传样式的大小和outline的宽度都需要自己慢慢调整已达到大和谐。

需要注意的是:

border 和 outline 区别

border 和 outline 很类似,但有如下区别:

注意项

将 outline 设置为 0 或 none 会移除浏览器的默认聚焦样式。

(完)