2013-06-28 3 views
13

में एक क्रॉस आकार बनाएं यह संभव है, मुझे पता है सभी निम्नलिखित आकार इस लिंक में संभव हो रहे हैं:सीएसएस

http://css-tricks.com/examples/ShapesOfCSS/

लेकिन पार भी संभव होना चाहिए। मुझे अंतर का कहना है कि मैं इस तरह मतलब है:

enter image description here

+3

एक दूसरे पर स्तरित दो तत्वों का प्रयोग करें? या इससे भी बेहतर: एक तत्व जिसमें :: छद्म तत्व (या :: पहले) – Kyle

+1

के बाद एक तत्व है, आप इसे एक तत्व के साथ नहीं कर सकते .. बेहतर एसवीजी या कैनवास के लिए जाएं ... –

+2

क्रॉस को वास्तव में सीएसएस-ट्रिक्स में जोड़ा गया है: https://css-tricks.com/examples/ShapesOfCSS/ – tsiorn

उत्तर

38

आप केवल pseudoelements साथ कुछ इस तरह प्राप्त कर सकते थे:

http://jsbin.com/upiyoc/1/edit

#cross { 
    width: 100px; 
    height: 100px; 
    position: relative; 
} 

#cross:before, #cross:after { 
    content: ""; 
    position: absolute; 
    z-index: -1; 
    background: #d00; 
} 

#cross:before { 
    left: 50%; 
    width: 30%; 
    margin-left: -15%; 
    height: 100%; 
} 

#cross:after { 
    top: 50%; 
    height: 30%; 
    margin-top: -15%; 
    width: 100%; 
} 

पार आनुपातिक स्केल करेगा के आकार, के अनुसार width और height#cross तत्व


अद्यतन: एक और समाधान (कम कोड का उपयोग करके) में कई रैखिक-ग्रेडियेंट (छद्म छल्ले के बिना) शामिल हो सकता है।

http://codepen.io/anon/pen/zxwgPo

बेशक
#cross { 
    width: 100px; 
    height: 100px; 

    background: linear-gradient(to bottom, transparent 35%, 
             #d00 35%, 
             #d00 65%, 
             transparent 65%), 

       linear-gradient(to right, transparent 35%, 
             #d00 35%, 
             #d00 65%, 
             transparent 65%), 
} 
+0

क्या कोई मुझे बता सकता है कि "पूर्ण" क्यों आवश्यक है? मैंने इसे कोडपेन पर परीक्षण किया और यदि आप इसे सापेक्ष बदलते हैं या इसे बाहर ले जाते हैं, तो यह निर्दिष्ट नहीं होगा ... यहां तक ​​कि निर्दिष्ट ऊंचाई और चौड़ाई पिक्सल के साथ .... मदद .. मुझे पागल नहीं चल रहा है; ( – carinlynchin

+1

बिना स्थिति के : पूर्ण आपको उन्हें एक प्रदर्शन (या फ्लोट) देना चाहिए अन्यथा छद्म दृश्य दिखाई नहीं दे सकते हैं (वे वास्तविक तत्व नहीं हैं, और उनकी 'सामग्री' संपत्ति खाली है) तो यहां स्थिति: पूर्ण फ्लोट (या प्रदर्शन) संपत्ति का उपयोग करने के लिए अनावश्यक बनाता है – fcalderan

+0

ओह ठीक है ... तो किसी भी प्रकार के छद्म तत्व के साथ कोई सामग्री नहीं है? क्या आप मुझे दिखा सकते हैं कि यह कहां कहता है कि w3 में। इस तरह की चीजें मुझे पता है कि मैं उस चीज़ को कैसे देखना चाहता हूं। lol – carinlynchin

6

यह है। आपको बस दो तत्वों का उपयोग करना होगा: http://jsfiddle.net/92XTx/2/

संलग्न div relative ly स्थित है ताकि दोनों बच्चे पूरी तरह से स्थित हो सकें।

#cross { 
    position: relative; 
    width: 150px; 
    height: 150px; 
} 

यहाँ वे दोनों पूरी तरह से तैनात कर रहे हैं:

#cross div { 
    position: absolute; 
    background: red; 
} 

उन्हें एक के ऊपर दूसरा रखना बनाने के लिए।

और फिर बनाने के अपने आकार:

.cross-vertical { 
    left: 33%; 
    width: 33%; 
    height: 100%; 
} 

.cross-horizontal { 
    top: 33%; 
    width: 100%; 
    height: 33%; 
} 
2

यह एक नियमित रूप से '+' के साथ साथ चरित्र के साथ एक साथ किया जा सकता है एक text-stroke

DEMO (Webkit,Android only) के साथ

div { 
 
    font-size: 80px; 
 
    -webkit-text-stroke: 20px red; 
 
    display: inline-block; 
 
    padding: 0 20px; 
 
}
<div>+</div>

3

क्योंकि सभी जवाब मैं यहाँ देख देखो या तो लंबा या विक्रेता-उपसर्ग पर निर्भर है,

#cross { 
 
    background: red; 
 
    height: 100px; 
 
    position: relative; 
 
    left: 50px; 
 
    width: 20px; 
 
} 
 
#cross:after { 
 
    background: red; 
 
    content: ""; 
 
    height: 20px; 
 
    left: -40px; 
 
    position: absolute; 
 
    top: 40px; 
 
    width: 100px; 
 
}
<div id="cross"></div>

0

सीएसएस रूपांतरण आसानी से प्राप्त प्लस आकार देने के लिए इस्तेमाल किया जा सकता

.close { 
    position: absolute; 
    right: 10px; 
    top: 6px; 
    width: 20px; 
    height: 20px; 
    opacity: 0.3; 
} 
.cross:before, .cross:after { 
    position: absolute; 
    left: 15px; 
    content: ' '; 
    height: 21px; 
    width: 2px; 
    background-color: #333; 
} 
.cross:before { 
    transform: rotate(0deg); 
} 
.cross:after { 
    transform: rotate(-90deg); 
}