每日一個css效果之邊框內圓角

什麼是邊框內圓角?

效果以下 css

你可能想到的方法

padding: 16px;
box-shadow: 0 0 0 8px #655;
border-radius: 5px;
複製代碼

若是採用上面的方式,會產生一個與上面效果很像的效果:內外都是圓角。下過以下html

如何將外面的那層shadow變爲直角呢?

其關鍵就是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>
複製代碼
相關文章
相關標籤/搜索