从部分背景中切出一个半圆并在其后面显示背景
Cutting out a semi-circle out of a Section Background and showing a background behind it
除了使用透明的 png 之外,我一直在努力寻找最好的方法。
我正在构建的网站的设计者将这些圆圈从网站的每个部分中删除,作为整体主题的一部分。我喜欢它的外观,但以自动发生的方式实现它并不明显。
我尝试了一些 SVG 遮罩,但它不会显示背后的背景。理想情况下,这些图像可以由网站编辑器替换,而不必从每张图像中删除这一部分。是否有 css、javascript 或 canvas 方法来实现我的想法?
此外,每个部分都有背景图片。不仅仅是纯色和渐变。
Click Here to View Example Image
CSS 是包装元素内三个 <div>
的直接定位(在本例中为 <section>
两个 outer <div>
s 是 bars,而内部 div 创造了错觉半圆。这只需提供两倍于其宽度的边框半径即可完成。
“圆圈”居中并设置 z-index
后,您就有了解决方案。
我把箭头放入圆圈由你决定。
section {
z-index: 50;
position: relative;
width: 100vw;
height: 250px;
}
div {
z-index: 25;
position: absolute;
height: 50%;
width: 100%;
}
div:nth-child(1) {
background-image: url(https://via.placeholder.com/160?text=TOP);
}
div:nth-child(2) {
background-image: url(https://via.placeholder.com/160/0000FF?text=CENTER);
background-position: center;
z-index: 999;
top: 75px;
left: calc((100vw/2) - 50px);
width: 100px;
height: 100px;
border-radius: 200px;
}
div:nth-child(3) {
background-image: url(https://via.placeholder.com/160/FF0000/FFFFFF?text=BOTTOM);
bottom: 0;
border: 1px solid black;
}
<section>
<div></div>
<div></div>
<div></div>
</section>
除了使用透明的 png 之外,我一直在努力寻找最好的方法。
我正在构建的网站的设计者将这些圆圈从网站的每个部分中删除,作为整体主题的一部分。我喜欢它的外观,但以自动发生的方式实现它并不明显。
我尝试了一些 SVG 遮罩,但它不会显示背后的背景。理想情况下,这些图像可以由网站编辑器替换,而不必从每张图像中删除这一部分。是否有 css、javascript 或 canvas 方法来实现我的想法?
此外,每个部分都有背景图片。不仅仅是纯色和渐变。
Click Here to View Example Image
CSS 是包装元素内三个 <div>
的直接定位(在本例中为 <section>
两个 outer <div>
s 是 bars,而内部 div 创造了错觉半圆。这只需提供两倍于其宽度的边框半径即可完成。
“圆圈”居中并设置 z-index
后,您就有了解决方案。
我把箭头放入圆圈由你决定。
section {
z-index: 50;
position: relative;
width: 100vw;
height: 250px;
}
div {
z-index: 25;
position: absolute;
height: 50%;
width: 100%;
}
div:nth-child(1) {
background-image: url(https://via.placeholder.com/160?text=TOP);
}
div:nth-child(2) {
background-image: url(https://via.placeholder.com/160/0000FF?text=CENTER);
background-position: center;
z-index: 999;
top: 75px;
left: calc((100vw/2) - 50px);
width: 100px;
height: 100px;
border-radius: 200px;
}
div:nth-child(3) {
background-image: url(https://via.placeholder.com/160/FF0000/FFFFFF?text=BOTTOM);
bottom: 0;
border: 1px solid black;
}
<section>
<div></div>
<div></div>
<div></div>
</section>