我需要创建一个带有直的斜角而不是圆角的按钮,例如:
而不是:
我无法使用多个box-shadow
声明,因为我需要1px边框来勾勒出整个形状。而且由于同样的问题,我无法使用0px xpx div中的箭头技巧。使用-moz-linear-gradient
等不起作用,因为它只影响元素的上半部分,我需要角度继续一直到底部。
border-radius
最接近,但默认为四舍五入。 CSS或JavaScript是否可以实现这种效果?
答案 0 :(得分:0)
我已经看到了一些CSS技巧,你可以使用透明边框和边框宽度来创建各种三角形形状,这可能是你正在寻找的,你可以将它添加到按钮的末端。 here另一种方法是创建带有图像背景的按钮。操作图像会容易得多。
编辑:显然,有一个Triangle Generator,谁知道?
答案 1 :(得分:0)
大胆使用CSS3伪元素
CSS代码:
div {
width: 118px; /* 118 = rectangle width - 2 */
height: 33px; /* 33 = shape height - 2 */
border: 1px solid #007bff;
background-color: white;
}
div:before {
content: '';
border-right: 30px solid transparent; /* 30 = triangle width */
border-bottom: 35px solid #007bff; /* 35 = shape height */
float: left;
margin-left: 119px; /* 121 = rectangle width - 1 */
margin-top: -1px; /* always 1*/
}
div:after {
content: '';
border-right: 29px solid transparent; /* 29 = triangle width - 1 */
border-bottom: 33px solid white; /* 33 = shape height - 2 */
float: left;
margin-left: 118px; /* 120 = rectangle width - 2 */
margin-top: -34px; /* 34 = shape height - 1 */
}
答案 2 :(得分:0)
我不能赞成这个答案,但我发现有人可以解决这个问题。看看这个fiddle。
它的工作原理如下:
<强> HTML:强>
<div id="box3">
Content Here
<div id="box3bottom"></div>
</div>
<强> CSS:强>
p {
margin: 10px;
}
#box1, #box2, #box3 {
background-color: #207cca;
border: 1px solid black;
color: white;
height: 200px;
margin: 20px auto;
position: relative;
text-align: center;
width: 300px;
}
#box1:before, #box2:before, #box3:before {
background-color: white;
border-bottom: 1px solid black;
content: "";
height: 20px;
left: -12px;
position: absolute;
top: -8px;
-moz-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
width: 30px;
}
#box2:after, #box3:after {
background-color: white;
border-bottom: 1px solid black;
content: "";
height: 20px;
position: absolute;
right: -12px;
top: -8px;
-moz-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
width: 30px;
}
#box3bottom {
height: 100%;
left: 0px;
position: absolute;
top: 0px;
width: 100%;
}
#box3bottom:before {
background-color: white;
border-top: 1px solid black;
bottom: -8px;
content: "";
height: 20px;
left: -12px;
position: absolute;
-moz-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
width: 30px;
}
#box3bottom:after {
background-color: white;
border-top: 1px solid black;
bottom: -8px;
content: "";
height: 20px;
position: absolute;
right: -12px;
-moz-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
width: 30px;
}
答案 3 :(得分:0)
我最终在覆盖菜单的div上使用背景图像,并在选择最后一个选项卡时使用JavaScript更改了最后一个选项卡和div的类。
我本来希望纯粹通过CSS来实现这一点,并且使用:before和:after偏移的伪元素非常接近,但要在所有浏览器中使用像素完美的布局太难了。 / p>
这是我的好奇代码。
使用Javascript:
if($('.tabs .tab-right').hasClass('selected')){
$(".tab .angle").addClass('angle-selected');
}else{
$(".tab .angle").removeClass('angle-selected');
}
CSS:
.tabs .tab-right {
padding: 8px 28px 8px 12px;
}
.tabs .angle {
background: url("../img/angle-noborder.png") no-repeat transparent;
height: 35px;
width: 28px;
display: inline-block;
position: relative;
right: 28px;
}
.tabs .angle.angle-selected {
background: url("../img/angle-border.png") no-repeat transparent;
}