2011-09-19 13 views
15

के नीचे पृष्ठभूमि को छुपाने के लिए मुझे मोबाइल उपकरणों के लिए सभी लिंक के क्लिक करने योग्य क्षेत्र को बनाने के लिए एक वेबसाइट को संशोधित करने की आवश्यकता है। टेक्स्ट-फ्लो को प्रभावित नहीं करने के लिए मैंने सभी लिंक एक पारदर्शी border और एक ही आकार के नकारात्मक margin दिए। अब यह एक आकर्षण की तरह काम करता है। लेकिन उन तत्वों पर नहीं जिनके पास पृष्ठभूमि है। पृष्ठभूमि पारदर्शी सीमा तक फैलती है। यह व्यवहार ब्राउज़र सभी ब्राउज़रों के बीच संगत होने के लिए है।सीमा

यहाँ http://jsfiddle.net/hq65C/1/ एक अन्य उदाहरण: http://jsfiddle.net/DytDA/

ऐसा क्यों है? मैं हमेशा सोच रहा था कि सीमा तत्व के बाहर है। मैं इसे कैसे ठीक कर सकता हूं। (मुझे ऐसे समाधान की आवश्यकता है जिसे HTML को संशोधित करने की आवश्यकता नहीं है)।

उत्तर

30

कैसे background-clip: padding-box;?

Demo

+0

यह वह समाधान है जिसे मैं ढूंढ रहा था, धन्यवाद। हो सकता है कि आप इसे सही बनाने के लिए इस समाधान को अपने समाधान में जोड़ना चाहते हैं;) http://jsfiddle.net/meo/DytDA/1/ – meo

+0

ग्रेट, धन्यवाद। इसमें बहुत अच्छा समर्थन भी है (IE9 +): https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip#Browser_compatibility –

0

मुझे लगता है कि यह है कि अगर सीमा तत्व बाहर थे, व्यवहार आप के पीछे हैं (कि सीमा पर क्लिक तत्व के अंदर क्लिक करने के रूप में व्यवहार) या तो

काम नहीं होता अगर पृष्ठभूमि छवि दोहराया नहीं है , आप पृष्ठभूमि-स्थिति x स्थिति को उसी सीमा तक सेट कर सकते हैं जो आपकी सीमा चौड़ाई है। नहीं, तो आप भी तत्व के पीछे रंग के रूप में ही करने के लिए सीमा रंग सेट करने का प्रयास कर सकते हैं, लेकिन अगर यह एक छवि है, अच्छी किस्मत है

+0

धन्यवाद लेकिन पृष्ठभूमि छवि स्प्राइट है तो मैं सच में एक अन्य समाधान की जरूरत है। – meo

0

सीएसएस background इस पर लेयरिंग border के क्षेत्र भरता है, border-color साथ।

जैसा कि आपके पास पारदर्शी border है, यह इसके पीछे background-color प्रदर्शित कर रहा है।

सादे एचटीएमएल/सीएसएस के साथ, मुझे यकीन नहीं है कि इसके आसपास एक रास्ता है।

यह jsFiddle इस demostrates:

http://jsfiddle.net/hq65C/8/

+0

ठीक है पृष्ठभूमि स्थिति बदलती नहीं है, लेकिन यह पृष्ठभूमि के अधिक दिखाती है: http://jsfiddle.net/DytDA/:/ – meo

+0

हां ऐसा इसलिए है क्योंकि लाल इसे कवर नहीं कर रहा है। यह पहले एंकर में लाल के पीछे है। क्षमा करें मुझे यकीन नहीं है कि आप केवल एचटीएमएल/सीएसएस के साथ क्या हासिल कर सकते हैं। जावास्क्रिप्ट/jquery समाधान शायद – Curt

0

इस प्रयास करें:

<a href="#"><span style="background: red">link</span></a> test test test <br/> 
test test test 

नोटिस: काल एक और शैली (अन्य सीएसएस मान) के साथ एक इनलाइन तत्व का मतलब है। दूसरा वह div जो एक नया ब्लॉक मजबूर करेगा।

+0

हो सकता है जैसे मैंने अपने प्रश्न में लिखा था, डीओएम को संशोधित करना एक विकल्प नहीं है। – meo