1. 甜嘴棒棒糖

实现只需要借助box-shadow两个特性:

  • box-shadow可任意个数阴影
  • box-shadow的扩张半径参数。
body {background: #000;
}.pin {margin: 60px auto;width: 60px;height: 60px;border-radius: 60px;background: white;box-shadow: 0 0 0 10px hsl(0, 100%, 50%),0 0 0 20px hsl(100, 100%, 50%),0 0 0 30px hsl(200, 100%, 50%);
}
复制代码

如果只用来当作图片显示,那么再加上适当的外边距,显然已经大功告成了。

解决响应问题:

但其实会有一个潜在的问题。 因为用box-shadow生成的边框是出现在元素外圈的,而元素的外圈,是不会响应鼠标事件的。

可以通过把每个box-shadow属性加入inset关键词,让它在元素内部渲染,然后使用同等的内边距来解决。

代码如下:

body {background: #000;
}.pin {margin: 60px auto;border-radius: 60px;width: 60px;height: 60px;padding: 30px;background: white;box-shadow: 0 0 0 10px hsl(0, 100%, 50%) inset,0 0 0 20px hsl(100, 100%, 50%) inset,0 0 0 30px hsl(200, 100%, 50%) inset;
}
复制代码

2. 两层边框

2.1 小试牛刀

只需要两层边框的话,亦可以使用outline(描边)。

但它有个缺陷,由于outline不属于元素的内部空间,所以当使用border-radius时,是无法被渲染成充斥曲线美的弧形的。

不过好消息是,这被Css工作组认为是个bug,有望未来被修正。

示例代码如下:

.pin {margin: 60px auto;width: 60px;height: 60px;background: white;border: 10px solid plum;outline: 10px solid dodgerblue;outline-offset: -20px;}
复制代码

2.2 缝边效果

outline别于box-shadow的一点在于它不仅生成实线边框,还可以生成虚线边框。

同时通过outline-offset可以来控制它的位置,还可以是负值哦。

利用这两点,一个简约而实用的缝边效果轻松诞生。

如下:

.pin {margin: 60px auto;width: 200px;height: 100px;outline: 2px #fff dashed;outline-offset: -10px;background: hsl(20, 80%, 20%);}
复制代码

最后留个想象题,由于是虚线,所以你把outline设置更宽,或者outline-offset设置更大,那么会产生什么效果呢?

3. 边框内圆角

我们了解到box-shadow可以是圆角的,但是outline至少现在是不能的。

结合这两点特性,可以实现边框内圆角。

代码如下:

.pin {margin: 60px auto;width: 200px;height: 100px;background: hsl(20, 80%, 80%);border-radius: 10px;box-shadow: 0 0 0 10px hsl(20, 80%, 20%);outline: 10px hsl(20, 80%, 20%) solid;outline-offset: 0;
}
复制代码

x. 更多的实现...

参考

  • css揭秘

简解Css - 多变的边框相关推荐

  1. html盒子边框内部线条,详解CSS从条纹边框的实现盒子模型的方法

    解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS属性,赶紧去补习一下吧. 2.类似下面这个图形,只使用一个标签,可以有多少种实现方式: 假设我们的单标签为 p: 定义 ...

  2. html边框复合属性,详解CSS的border边框属性及其在CSS3中的新特性

    基础你可能很熟悉边的最基本用法. CSS Code复制内容到剪贴板 border:1pxsolidblack; 上面的代码将给元素应用1px的边.即简洁又简单:但我们也可以稍作修改. CSS Code ...

  3. 【基础】CSS实现多重边框的5种方式

    原文:[基础]CSS实现多重边框的5种方式 简言 目前最优雅地实现多重边框的方案是利用CSS3 的 box-shadow属性,但如果要兼容老的浏览器,则需要选择其它的方案.本文简要地列举了几种多重边框 ...

  4. html多重边框,中间空白,【基础】CSS实现多重边框的5种方式

    原文:[基础]CSS实现多重边框的5种方式 简言 目前最优雅地实现多重边框的方案是利用CSS3 的 box-shadow属性,但如果要兼容老的浏览器,则需要选择其它的方案.本文简要地列举了几种多重边框 ...

  5. 爬虫5-BeautifulSoup模块简解2

    1.BeautifulSoup简解2 from bs4 import BeautifulSoup import re file = open("./baidu.html",'rb' ...

  6. github-markdown-css 使用简解,markdown文案格式优化(笔记)

    github-markdown-css 使用简解,markdown文案格式优化 1.npm 安装 $ npm install github-markdown-css 2.使用 导入github-mar ...

  7. 详解CSS的盒模型(box model) 及 CSS3新增盒模型计算方式box-sizing

    W3C规范 一般来说,页面中的每一个元素都会形成一个矩形盒子,渲染引擎根据给定的样式确定这个盒子的呈现.通俗的来说,页面的布局就是一个个盒子的排列和摆放.掌握了盒子呈现的本质,布局也就轻而易举. 在 ...

  8. 详解CSS float属性

    转自:http://luopq.com/2015/11/08/CSS-float/ \详解CSS float属性 Posted on 2015-11-08   |   In CSS   |   5条评 ...

  9. css样式之边框和内外边距

    1.css样式之边框:border 实心的边框: <!DOCTYPE html> <html> <head> <meta http-equiv="c ...

最新文章

  1. 挑战练习6.4 报告编译版本
  2. fsck命令--Linux命令应用大词典729个命令解读
  3. 18650锂电池保护板接线图_锂电池保护板的原理介绍保护板的构成和主要作用
  4. Oracle VM VirtualBox Ubuntu1804虚拟机磁盘扩容
  5. 关于mysql中日期后面多一个 .0
  6. matlab仿真没有synchr,Synchro交通仿真系统分析及应用
  7. 天梯L2-029 特立独行的幸福
  8. linux 终端 reboot,讲解Linux基础命令之:man、reboot
  9. Python招聘岗位信息聚合系统源码(爬虫爬取、数据分析、可视化、互动等功能)...
  10. java程序员培训班要多少钱,一招彻底弄懂!
  11. 这个超级好哎 vector 容器的 怕失效
  12. 第18.1节 OE3.1实例-加载本地瓦片数据
  13. PUTT(psftp)文件上传下载
  14. Java web基础学习笔记
  15. matlab机器学习入门---大纲
  16. AI表情包生成器来了!给AI喂了96万个表情包文案,做出的图能接地气吗?
  17. 地形图加密高程点的两种方法CAD和ARCGIS
  18. gops —— Go 程序诊断分析工具
  19. 服务器托管与租用应该怎么选择?
  20. 简易在线留言板(上)——树洞留言板

热门文章

  1. 从程序员到架构师的最佳技术成长之路
  2. “拖库”防不胜防,如何早做预防?
  3. Linux系统捕获数据包流程
  4. python类中self是什么
  5. 差异与阵列和阵列结构和链表的区别
  6. Python编程系列教程第16讲——拷贝自身到系统目录
  7. 苏勇老师写的CCIE详解
  8. 奥巴马表示10天内债务谈判出结果 债务违约可能性底
  9. 正确修改MySQL最大连接数的三种好用方案
  10. RLC协议简单理解1-RLC报文格式