我正在嘗試使用CSS來制作一個類似這樣的div:
我差不多是從這個開始的:
.player {
width: 480px;
height: 80px;
border-radius: 40px;
}
不需要太多代碼,最簡單的方法是什么?
# # #還有另一種方法,這一次使用徑向背景圖像。這使得它是透明的,在Firefox和Chrome上都可以工作。
.player {
width: 480px;
height: 80px;
border-radius: 40px;
background-image: radial-gradient(circle at 38px 40px, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 40px, blue 40px);
color: #FFF;
}
<div class="player"></div>
# # #您可以使用before偽元素來提供“裁剪”
.player {
width: 480px;
height: 80px;
border-radius:0 40px 40px 0;
background-color:#0000FF;
position:relative;
color:#FFF;
}
.player:before
{
width: 80px;
height: 80px;
border-radius:0 40px 40px 0;
background-color:#FFF;
display:inline-block;
vertical-align: middle;
margin-right: 10px;
content: '';
}
<div class="player">Some Content</div>
###
.wrapper {
width: 500px;
height: 103px;
background-color: red;
padding-top: 15px;
}
.player {
width: 480px;
height: 83px;
margin-left: 10px;
border-top-right-radius: 40px;
border-bottom-right-radius: 40px;
border: 1px solid black;
border-left: none;
background-color: blue;
-webkit-mask-image: radial-gradient(circle at left, transparent 0, transparent 40px, black 41px);
}
<div class="wrapper"><div class="player"></div></div>
###Jon P的答案就快出來了——但是before元素可以用來在主div的左側制作一個透明的圓圈,并且陰影可以產生想要的剪切效果。
body {
/* You can change the background colour to verify that this is truly transparent */
background-color: pink;
}
.player {
/* Just a normal box */
width: 480px;
height: 80px;
border-radius:0 40px 40px 0;
background-color:#0000FF;
position:relative;
color:#FFF;
/* Move the box right so that we can see the cutout to the left */
margin-left: 40px;
}
.player:before
{
width: 80px;
height: 80px;
border-radius:0 40px 40px 0;
background-color:transparent;
display:inline-block;
vertical-align: middle;
margin-right: 10px;
content: '';
/* This is the cutout: */
box-shadow: 40px 0px #00f;
position: relative;
left: -80px;
}
<div class="player">Some Content</div>
# # #我也是這么想的,但我有一個更好的方法,我使用svg作為背景。它還具有響應速度更快的優勢。我會把我的問題發給其他人,他們也會有同樣的問題。
* {
padding: 0;
margin: 0;
}
#sidebar {
width: 500px;
height: 100vh;
background: url(https://svgshare.com/i/XiH.svg) center right;
background-size: 150%;
}
<div id="sidebar"></div>
###
p {
width: 480px;
height: 80px;
border-radius: 1in;
box-shadow:inset -400px 0 #03214f,inset 9in 0 #fff;
}
<p>