我试图创建一个像这样的尖头按钮:
到目前为止,我只能做到这一点:
我认为增加水平边框半径会使其变得锋利,但它只会使圆度更长。
HTML
<a class="button">Back</a>
CSS
.button {
display: inline-block;
height: 3em;
padding: 0 0.7em 0 1.4em;
border: 0.1em solid black;
border-radius: 3em 0.4em 0.4em 3em / 1.5em 0.4em 0.4em 1.5em;
background: -moz-linear-gradient(
top,
#fff,
#ccc
);
}
答案 0 :(得分:3)
您不希望使用border-radius
,因为它为每个指定的角分配了四分之一圆的形状。相反,您可以使用特定的border-width
属性进行破解,如本网站所示:http://www.howtocreate.co.uk/tutorials/css/slopes
然而,我觉得你以错误的方式解决问题;您正在做的最好是使用背景图像,这就是iOS风格的Back按钮在iPhone-for-web样式表中的实现方式。如果你需要一些独立于分辨率的东西,你现在可以使用SVG而不会受到惩罚。
答案 1 :(得分:1)
您可以使用包含在锚标记中的2个元素来创建此类效果。
<style type="text/css">
.arrow-left {
width:0;
height:0;
border-top:30px solid transparent;
border-bottom:30px solid transparent;
border-right:30px solid orange;
float:left;
}
.button {
float:left;
height:60px;
background:orange;
width:50px;
line-height:60px;
font-weight:bold;
border-top-right-radius:8px;
border-bottom-right-radius:8px;
}
</style>
<a href='#'><div class="arrow-left"></div><div class="button">Back</div></a>
我不确定它是否是最精致的解决方案,但它看起来与您的概念艺术和功能完全相同。
答案 2 :(得分:1)
考虑到这一点,这是一个更优雅的解决方案,允许更有效的样式和仅使用一个HTML元素。使用这种方法,我们可以完全实现您的概念结果。
<强> HTML 强>
<a href="#" class="button">Back</a>
<强> CSS 强>
a.button {
text-decoration:none;
color:#111;
text-shadow:0 1px 0 #fff;
font-weight:bold;
padding:10px 10px;
font-size:14px;
border-radius:0 8px 8px 0;
-webkit-border-radius:0 8px 8px 0;
float:left;
margin-left:30px;
margin-top:20px;
position:relative;
font-family:verdana;
color:#3b3d3c;
border:1px solid #666;
border-left:0;
background: -moz-linear-gradient( top , #eee 0%,#bbb 100%);
background: -webkit-linear-gradient( top , #eee 0%,#bbb 100%);
}
a.button:after {
content:"";
width:25px;
height:25px;
background: -moz-linear-gradient( left top , #eee 0%,#bbb 100%);
background: -webkit-linear-gradient( left top , #eee 0%,#bbb 100%);
-moz-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
display:block;
position:absolute;
top:5px;
left:-14px;
z-index:-1;
border:1px solid #666;
}
@media screen and (-webkit-min-device-pixel-ratio:0) {
a.button:after{
border-left:0;
left:-13px;
}
最后一条规则适用于Chrome,否则会略微区别地显示结果。
希望这有帮助。