Ish*_*hio 10 html css svg css3 css-shapes
我想制作一个看起来像这样的箭头:
但是,这是我能得到的最接近的:
.button {
margin: 4em 0;
padding: 2em;
width: 15%;
margin: 0 auto;
text-align: center;
background-color: #000000;
color: #ffffff;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-moz-flex-flow: row wrap;
-webkit-flex-flow: row wrap;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
webkit-justify-content: center;
justify-content: center;
}
.curved-arrow {
display: inline-block;
border-top: 10px solid #fff;
border-bottom: 10px solid #fff;
border-left: 30px solid #fff;
border-top-right-radius: 100%;
border-bottom-right-radius: 100%;
}Run Code Online (Sandbox Code Playgroud)
<div class="button">
<div class="curved-arrow"></div>
</div>Run Code Online (Sandbox Code Playgroud)
这甚至可能吗?我知道我可以使用图像,但是我的设计师在整个网站中使用了多种颜色的几种,我宁愿只使用CSS作为形状.
如果很难看到它在左边从上到下是一条扁平的直线,而在右边的中间是曲线.
CSS边框半径不会让您轻松获得您正在寻找的确切输出.我建议使用带有一个二次贝塞尔曲线命令的path元素的内联SVG :
svg{width:100px;}Run Code Online (Sandbox Code Playgroud)
<svg viewbox="0 0 20 8">
<path d="M0 0 Q 30 4 0 8" />
</svg>Run Code Online (Sandbox Code Playgroud)
然后你可以使用CSS填充属性为箭头着色,看看这个小提琴(在评论中发布的示例中为@Nick R提供信用)
您还可以将2个值用于border-radius属性(有关其工作原理的说明,请参阅MDN)它很简单,但它不会让您使箭头"点"像图像中那样清晰:
.curved-arrow {
width:40px; height:25px;
background:#000;
border-top-right-radius:100% 50%;
border-bottom-right-radius:100% 50%;
}Run Code Online (Sandbox Code Playgroud)
<div class="curved-arrow"></div>Run Code Online (Sandbox Code Playgroud)
这需要一些花哨的border-radius造型来达到你想要的形状.
.container {
width: 100px;
height: 100px;
background: red;
position: relative;
}
.arrow {
width: 50px;
height: 30px;
position: absolute;
top: 32px;
left: 25%;
border-radius: 0px 100% 100% 0px / 0 50% 50% 0;
background: white;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="arrow"></div>
</div>Run Code Online (Sandbox Code Playgroud)
如果你想在一个单独的元素中,你可以使用像这样的伪元素.
.arrow {
width: 100px;
height: 100px;
background: red;
position: relative;
}
.arrow:before {
content: '';
width: 50px;
height: 30px;
position: absolute;
top: 32px;
left: 25%;
border-radius: 0px 100% 100% 0px / 0 50% 50% 0;
background: white;
}Run Code Online (Sandbox Code Playgroud)
<div class="arrow"></div>Run Code Online (Sandbox Code Playgroud)
一个很好的选择也是SVG创建这个形状,这也使它完全响应.
<svg width="100px" height="100px" viewbox="0 0 20 20" style="background: red;">
<path d="M5,7
Q15,7 15,10
Q15,13 5,13z" fill="white"></path>
</svg>Run Code Online (Sandbox Code Playgroud)