2012-08-13 114 views
2

我有一個圖形背景,我需要在左上角顯示一個彩色三角形(取決於分辨率)。如何創建帶背景的三角形形狀(固定高度,寬度= 100%)

我可以創建一個三角形元素只使用HTML/CSS/JS的寬度= 100%和高度= 200px背景=紅色?

我可以通過IMG創建它,寬度爲100%,但我希望能獲得比調整圖像更好的解決方案。

該解決方案需要與IE7 +兼容並使用瀏覽器版本(超過2%)。

感謝

回答

2

要擴大web-tiki's answer,我覺得這其實是你要什麼:

$(document).ready(function() { 
 
    function triangle() { 
 
    $("#wrap .tr").css({ 
 
     "border-left": $('#wrap').width() + "px solid #fff", 
 
     "border-bottom": "200px solid transparent" 
 
    }); 
 
    } 
 
    triangle(); 
 

 
    $(window).on('resize', triangle); 
 
});
body { 
 
    background: #fff; 
 
} 
 
#wrap { 
 
    position: relative; 
 
    min-height: 500px; 
 
    background: teal; 
 
} 
 
.tr { 
 
    position: absolute; 
 
    left: 0; 
 
    top: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="wrap"> 
 
    <div class="tr"></div> 
 
</div>

4

因爲你不能創建具有百分比的邊框,請嘗試使用VW(瀏覽器寬度)來代替。因此:

.triangle{ 
    width: 0; 
    height: 0; 
    border-bottom: 600px solid blue; 
    border-left: 100vw solid transparent; 
    } 
3

Vw單位不被IE8支持,您將需要爲不支持這些單位的瀏覽器使用JS回退。

這是一個jQuery腳本,它根據窗口大小設置邊框寬度,並在窗口大小調整時調整它。測試在IE8(IE測試儀):

$(document).ready(function() { 
 
    function triangle() { 
 
    var width = $('#wrap').width(), 
 
     border = width/4; 
 

 
    $("#wrap .tr").css({ 
 
     "border-left": border + "px solid #fff", 
 
     "border-bottom": border + "px solid transparent" 
 
    }); 
 
    } 
 
    triangle(); 
 

 
    $(window).on('resize', triangle); 
 
});
body { 
 
    background: #fff; 
 
} 
 
#wrap { 
 
    position: relative; 
 
    min-height: 500px; 
 
    background: teal; 
 
} 
 
.tr { 
 
    position: absolute; 
 
    left: 0; 
 
    top: 0; 
 
    border-left: 200px solid #fff; 
 
    border-bottom: 200px solid transparent; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="wrap"> 
 
    <div class="tr"></div> 
 
</div>

0

只要採取一個div元素,得到類名稱 '三角左上',並寫入下面給出的CSS

.triangle-topleft { 
    width: 0; 
    height: 0; 
    border-top: 100px solid red; 
    border-right: 100px solid transparent; 
} 

border-top的顏色將是div的背景顏色..這是紅色的。 更多的三角形構造,請點擊此鏈接.. [http://css-tricks.com/examples/ShapesOfCSS/][1]

+0

事情是這樣的假設是納貝斯克LOL它是最簡單的商場 – daddycardona 2015-12-25 14:00:28

1

我想最好用背景代替邊框:

.my-triangle { 
 
    width: 100%; 
 
    height: 200px; 
 
    background: linear-gradient(to left top, transparent 50%, red 50%); 
 
}
<div class="my-triangle"></div>

注意,爲了它是跨瀏覽器兼容,你需要反覆折騰的CSS前綴,IE濾波器和SVG。 (我不容易訪問IE瀏覽器,所以我會離開,一個給你,但它會沿着這些路線:)

background-image: -webkit-gradient(linear, right bottom, left top, color-stop(0, transparent), color-stop(0.5, transparent), color-stop(0.5, #FF0000), color-stop(1, #FF0000)); 
    background-image: -webkit-linear-gradient(bottom right, transparent 0%, transparent 50%, #FF0000 50%, #FF0000 100%); 
    background-image: -moz-linear-gradient(bottom right, transparent 0%, transparent 50%, #FF0000 50%, #FF0000 100%); 
    background-image: -ms-linear-gradient(bottom right, transparent 0%, transparent 50%, #FF0000 50%, #FF0000 100%); 
    background-image: -o-linear-gradient(bottom right, transparent 0%, transparent 50%, #FF0000 50%, #FF0000 100%); 
    background-image: linear-gradient(to top left, transparent 0%, transparent 50%, #FF0000 50%, #FF0000 100%);