请教如何用CSS实现页面元素两端的半半圆曲线效果
用基础CSS实现角落凹入半半圆曲线
你可以通过相对定位+伪元素+圆形背景的方式实现这个效果,完全不用SVG,只用你已经掌握的基础CSS属性:
实现步骤
- 给黄色方块添加
position: relative,让伪元素可以相对于它定位 - 使用伪元素配合阴影生成与页面背景同色的圆形,放在方块的角落,盖住黄色区域形成凹入的半半圆曲线
修改后的完整代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>new_web</title> <style> body { display: flex; justify-content: center; align-items: center; background: #328FC1; margin: 0; min-height: 100vh; /* 确保body占满视口高度,让方块完全居中 */ } div { width: 140px; height: 140px; background: #FADE8B; position: relative; /* 为伪元素提供定位基准 */ } /* 用伪元素生成蓝色圆形,盖住角落形成凹口 */ div::before, div::after { content: ""; position: absolute; width: 40px; height: 40px; background: #328FC1; border-radius: 50%; /* 将正方形转为圆形 */ } /* 左上角和右上角的圆形 */ div::before { top: -20px; /* 向上偏移半个圆的半径 */ left: -20px; /* 向左偏移半个圆的半径 */ box-shadow: 140px 0 0 #328FC1; /* 生成对称的右上角圆形 */ } /* 左下角和右下角的圆形 */ div::after { bottom: -20px; /* 向下偏移半个圆的半径 */ left: -20px; /* 向左偏移半个圆的半径 */ box-shadow: 140px 0 0 #328FC1; /* 生成对称的右下角圆形 */ } </style> </head> <body> <div></div> </body> </html>
代码说明
position: relative:让伪元素能以黄色方块为基准进行定位border-radius: 50%:将正方形伪元素转为圆形,颜色与页面背景一致,这样盖住黄色方块角落时会形成凹入效果box-shadow:用阴影快速生成对称的圆形,避免重复编写多个伪元素,简化代码- 偏移值
-20px:因为圆形直径为40px,半径20px,偏移半个半径能让圆形刚好对齐方块角落,形成完美的凹入曲线
你可以调整width:40px和height:40px来改变凹口的大小,数值越大,凹入的曲线越明显。
内容的提问来源于stack exchange,提问作者Frederick Oppong
相关产品推荐
相关产品推荐

