我需要創建與直,斜截的角而不是圓角的按鈕,例如,這樣的:創建切角
取而代之的是:
我不能使用多個box-shadow
聲明,因爲我需要1px邊框來勾勒整個形狀。而且我無法使用從0px到0px div的箭頭技巧,因爲同樣的問題。使用-moz-linear-gradient
等將不起作用,因爲它只會影響元素的上半部分,而且我需要將角度一直延伸到底部。
border-radius
最接近,但默認情況下取整。是否可以通過CSS或JavaScript來實現這種效果?
我需要創建與直,斜截的角而不是圓角的按鈕,例如,這樣的:創建切角
取而代之的是:
我不能使用多個box-shadow
聲明,因爲我需要1px邊框來勾勒整個形狀。而且我無法使用從0px到0px div的箭頭技巧,因爲同樣的問題。使用-moz-linear-gradient
等將不起作用,因爲它只會影響元素的上半部分,而且我需要將角度一直延伸到底部。
border-radius
最接近,但默認情況下取整。是否可以通過CSS或JavaScript來實現這種效果?
我結束了對疊加在一個div使用背景圖片菜單,並在最後一個選項卡是sel時使用JavaScript更改了最後一個選項卡和div的類ected。
我希望純粹通過CSS來做到這一點,並且使用:before和之後:偏移的僞元素非常接近,但要在所有瀏覽器中獲得像素完美的佈局非常困難。
這是我的好奇的代碼。
的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;
}
我見過一些CSS技巧,您可以使用透明邊框和邊框寬度創建各種三角形形狀,這可能是您正在尋找的內容,您可以將其添加到按鈕的末尾。 here另一種方法是創建帶有圖像背景的按鈕。操作圖像會更容易。
編輯:顯然,有一個Triangle Generator,誰知道?
這隻能使固體形狀,而不是輪廓。 –
您可以使用2個僞元素和一個偏移量進行輪廓。 – elclanrs
我的問題是,按鈕,當他們是堅實的,實際上使用漸變背景。我還沒找到添加漸變到三角形邊框的方法。 – user1997781
一個大膽使用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 */
}
我不能居功這個答案,但我發現,有一個解決方案某人。看看這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;
}
這在FF,Chrome和IE 10中運行得非常好,但不能在IE 9或8中運行,否則會非常完美。有任何想法嗎? – user1997781
它應該在IE 9中工作......如果沒有,我很驚訝。另一方面,IE8或更低版本不支持:在僞選擇器之後,這是一個問題。有幾個java腳本聚合填充,我見過可以幫助解決這個問題。以下是一個:https://code.google.com/p/ie7-js/ –
的未普遍支持'邊境image'可能是你最好的選擇。我有一個模糊的回憶,看到有關「CSS形狀」提案的內容。 (*編輯* - 良好的CSS形狀似乎是不相關的;沒關係。) – Pointy
我會使用背景圖片 – TGH
@TGH是的,這將是最簡單的事情(以及2009年會做什麼:)也可以用CSS翻譯/旋轉做一些有趣的事情。 – Pointy