2012-09-14 49 views
9

कृपया http://jsfiddle.net/ghAgQ/ पर एक नज़र डालें, मुझे तीर के लिए समान ढाल की आवश्यकता है, क्योंकि यह आयताकार के लिए है। कोई विचार यह कैसे किया जाता है? धन्यवादत्रिकोण आकार वाले तीर के लिए सीएसएस ढाल

.rectangle { 
background-color: #EEE; 
height: 80px; 
width: 240px; 
border: 1px solid #CCC; 
background: white; 
cursor: pointer; 
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,white),    color-stop(37%,#F1F1F1), color-stop(57%,#E1E1E1), color-stop(100%,#F6F6F6)); 
float: left; 
} 

.arrow { 

border-top: 41px solid transparent; 
border-bottom: 41px solid transparent; 
border-left: 15px solid #C4C4C4; 
float: left; 
cursor: pointer; 

} 

+3

कृपया हमेशा अपने प्रश्न के भीतर प्रासंगिक कोड शामिल हैं। बाहरी लिंक महान हैं लेकिन यदि वे अस्तित्व में हैं, तो आपका प्रश्न अभी भी दूसरों के लिए उपयोगी होना चाहिए। –

उत्तर

32

आप एक बहुत सरल तरीके से ऐसा कर सकते हैं, बस एक तत्व है और एक घुमाया छद्म तत्व (किसी भी ब्राउज़र का समर्थन करता है कि सीएसएस ढ़ाल भी CSS transforms का समर्थन करता है और pseudo-elements) एक कोण रैखिक ढाल के साथ का उपयोग कर । साथ ही, पुराने वेबकिट वाक्यविन्यास का उपयोग न करें (this bit about the history of the syntax देखें)।

विंडोज़ पर क्रोम, ओपेरा, फ़ायरफ़ॉक्स, आईई के मौजूदा संस्करणों में काम करना।

DEMO

एचटीएमएल सिर्फ <div class='rectangle'></div>

प्रासंगिक सीएसएस है:

.rectangle { 
    float: left; 
    position: relative; 
    height: 80px; 
    width: 240px; 
    border: solid 1px #ccc; 
    border-right: none; 
    background: #eee linear-gradient(white, #f1f1f1 37%, #e1e1e1 57%, #f6f6f6); 
    cursor: pointer; 
} 
.rectangle:after { 
    position: absolute; 
    top: 16px; right: -25px; 
    width: 48px; 
    height: 47px; 
    border-left: solid 1px #ccc; 
    border-top: solid 1px #ccc; 
    transform: rotate(134deg) skewX(-10deg) skewY(-10deg); 
    background: #eee linear-gradient(45deg, white, #f1f1f1 37%, #e1e1e1 57%, #f6f6f6); 
    content: ''; 
} 

जनवरी संपादित करें 2013

4 महीने बाद, मेरे पास थोड़ा सुधार हुआ समाधान है। इस बार, मानों की गणना की जाती है। पहली बार मैंने उन्हें परीक्षण और त्रुटि का उपयोग कर लिया।

new demo

.shape { 
 
    float: left; 
 
    position: relative; 
 
    border: 1px solid #ccc; 
 
    border-right: none; 
 
    width: 240px; height: 80px; 
 
    background: linear-gradient(white, #f1f1f1 37%, #e1e1e1 57%, #f6f6f6); 
 
    cursor: pointer; 
 
} 
 
.shape:after { 
 
    position: absolute; 
 
    top: 50%; right: 0; 
 
    margin: -24px -20px; 
 
    border-top: solid 1px #ccc; 
 
    border-right: solid 1px #ccc; 
 
    width: 40px /* 80px/2 */; height: 47px/* 80px/sqrt(3) */; 
 
    transform: rotate(30deg) skewY(30deg); /* create a rhombus */ 
 
    /* 49.1deg = atan(1.15) = atan(47px/40px) */ 
 
    background: 
 
      linear-gradient(-49.1deg, #f6f6f6, #e1e1e1 43%, #f1f1f1 63%, white); 
 
    content: '' 
 
}
<div class='shape'></div>

+3

+1 सुंदर है – AlienWebguy

+0

सुंदर ठंडा लेकिन एक आदर्श समाधान नहीं है। आप तीर के बिंदु पर सीमा देख सकते हैं समान रूप से मोटी नहीं है। – weexpectedTHIS

+1

यह अब तक की सबसे अच्छी चीज है। –

0

डेमो ऊपर वास्तव में क्रोम में अच्छा लग रहा है, वहीं किसी भी ब्राउज़र समर्थन जानकारी याद आ रही है और यह कई ब्राउज़रों में काम नहीं करता। मैंने एक और क्रॉस-ब्राउज़र दृष्टिकोण विकसित करने के लिए कुछ समय बिताया है।

HERE'S A SOLUTION FOR ALL MODERN BROWSERS WITH A NICE BUILD FUNCTION USING SASS

.triangle { 
    /* sample positioning */ 
    width: 160px; 
    height: 160px; 
    position: absolute; 
    top: 30%; 
    left: 45%; 

    /* 
    * deprecated syntax has better browser support 
    * IE8+ 
    * http://css-tricks.com/almanac/properties/c/clip/ 
    */ 
    clip: rect(auto, 180px, auto, 100px); 

    -webkit-transform: rotate(-90deg); 
    -moz-transform: rotate(-90deg); 
    -o-transform: rotate(-90deg); 
    transform: rotate(-90deg); 
} 

.triangle::after { 
    content: ""; 
    position: absolute; 
    top: 10px; 
    bottom: 10px; 
    left: 10px; 
    right: 10px; 

    /** 
    * To also support IE 9 we you a background images 
    * as fallback, created via compass: 
    * @include background-image(linear-gradient(300deg, green, blue)); 
    */ 
    background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjEuMDkxNTA2IiB5MT0iMC44NDE1MDYiIHgyPSItMC4wOTE1MDYiIHkyPSIwLjE1ODQ5NCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwODAwMCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwMDBmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); 
    background-size: 100%; 
    background-image: -moz-linear-gradient(150deg, green, blue); 
    background-image: -webkit-linear-gradient(150deg, green, blue); 
    background-image: linear-gradient(300deg, green, blue); 


    -webkit-transform: rotate(-45deg); 
    -moz-transform: rotate(-45deg); 
    -o-transform: rotate(-45deg); 
    transform: rotate(-45deg); 
} 

वर्तमान में IE 10+, Firefox, ओपेरा, क्रोमा, सफारी

का समर्थन करता है