效果以下 css
你可能想到的方法padding: 16px;
box-shadow: 0 0 0 8px #655;
border-radius: 5px;
複製代碼
若是採用上面的方式,會產生一個與上面效果很像的效果:內外都是圓角。下過以下html
其關鍵就是outline和box-shadow屬性:元素的圓角沒法規定描邊的方式瀏覽器
那麼你可能會想到這樣的實現方式ui
padding: 16px;
outline: 8px solid #655
border-radius: 5px;
複製代碼
而後當你滿懷自信去查看效果時發現,竟然又不是你想要的效果,你會發現內外之間會有一小點空白。spa
那怎麼辦,是否是bug?雖然元素的圓角沒法規定描邊的角的樣式,但能夠規定box-shadow的角的樣式,因而解決方式誕生了:讓box-shadow與outline重合,outline將box-shadow的圓角填充成直角,box-shadow填充outline與內層之間的空白code
padding: 16px;
box-shadow: 0 0 0 8px #655;
border-radius: 5px;
outline: 8px solid #655;
複製代碼
這時再去刷新瀏覽器就會發現會是咱們想要的效果了cdn
附一個完整的例子htm
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>css learning</title>
<style> .section { display: inline-block; width: 200px; background: gray; padding: 16px; box-shadow: 0 0 0 8px #655; border-radius: 5px; outline: 8px solid #655; } </style>
</head>
<body>
<div class="container">
<span class="section">
Suspendisse et arcu felis, ac gravida turpis.
Suspendisse potenti. Ut porta rhoncus ligula,
sed fringilla felis feugiat eget.
</span>
</div>
</body>
</html>
複製代碼