क्या मैं केवल एक div की पृष्ठभूमि छवि के लिए एक अस्पष्टता सेट कर सकता हूँ?


86

मान लीजिए कि मेरे पास है

<div class="myDiv">Hi there</div>

मैं एक रखना चाहते हैं background-imageऔर यह एक देने opacityकी 0.5है - लेकिन मैं चाहता हूँ कि पाठ मैं लिखा है पूर्ण अस्पष्टता होगा ( 1)।

अगर मैं CSS को इस तरह लिखता

.myDiv { opacity:0.5 }

सब कुछ कम अस्पष्टता में होगा - और मैं ऐसा नहीं चाहता।

तो मेरा सवाल है - मैं पूर्ण अस्पष्टता पाठ के साथ कम अपारदर्शिता पृष्ठभूमि छवि कैसे प्राप्त कर सकता हूं?


stackoverflow.com/questions/6624457/… ध्यान दें कि मेरे पास वहाँ टिप्पणी है (फिल के जवाब के तहत) इसे सीएसएस अपारदर्शिता के साथ करने का एक तरीका दिखा रहा है, अगर वह पसंदीदा तरीका है। ( jsfiddle.net/4tTNZ )
जूनास

यह उत्तर बहुत अधिक संक्षिप्त है और मेरा मानना ​​है कि वास्तव में ऐसा ही है।
जॉन एलेन

जवाबों:


102

नहीं, यह नहीं किया जा सकता है क्योंकि opacityइसकी सामग्री सहित पूरे तत्व को प्रभावित करता है और इस व्यवहार को बदलने का कोई तरीका नहीं है। आप निम्नलिखित दो तरीकों से इस पर काम कर सकते हैं।

माध्यमिक div

divपृष्ठभूमि को पकड़ने के लिए कंटेनर में एक और तत्व जोड़ें । यह सबसे क्रॉस-ब्राउज़र फ्रेंडली तरीका है और IE6 पर भी काम करेगा।

एचटीएमएल

<div class="myDiv">
    <div class="bg"></div>
    Hi there
</div>

सीएसएस

.myDiv {
    position: relative;
    z-index: 1;
}

.myDiv .bg {
    position: absolute;
    z-index: -1;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background: url(test.jpg) center center;
    opacity: .4;
    width: 100%;
    height: 100%;
}

देखें jsFiddle पर परीक्षण मामला

: पहले और :: छद्म तत्व से पहले

एक अन्य चाल सीएसएस 2.1 :beforeया सीएसएस 3 ::beforeछद्म तत्वों का उपयोग करना है। :beforeछद्म तत्व IE में संस्करण 8 से समर्थित है, जबकि ::beforeछद्म तत्व का समर्थन नहीं किया गया है। यह उम्मीद है कि संस्करण 10 में सुधार किया जाएगा।

एचटीएमएल

<div class="myDiv">
    Hi there
</div>

सीएसएस

.myDiv {
    position: relative;
    z-index: 1;
}

.myDiv:before {
    content: "";
    position: absolute;
    z-index: -1;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background: url(test.jpg) center center;
    opacity: .4;
}

अतिरिक्त नोट्स

z-indexआप के व्यवहार के कारण कंटेनर के लिए एक जेड-इंडेक्स निर्धारित करना होगा और साथ ही z-indexपृष्ठभूमि की छवि के लिए नकारात्मक भी होगा ।

परीक्षण के मामलों

देखें jsFiddle पर परीक्षण मामला:


2
जब मैं z- इंडेक्स के साथ नकारात्मक मानों का उपयोग करने की बात करता हूं तो मैं सुपर पागल हो जाता हूं .. लेकिन, मैं परिणामों के साथ बहस नहीं कर सकता। हॉववीर, मैं width: 100%; height: 100%;इसमें .bgइतना जोड़ूंगा कि ie6 मूल डिव के अंदर bg को फैला सके। jsfiddle.net/sbGb4/2
Joonas

मैंने सोचा कि इसके लिए एक css3 चाल है जो मुझे याद आ रही है - लेकिन यह बहुत अच्छा है!
अलोन

@ लॉरो अच्छा मुद्दा! z-indexएक दर्द है, लेकिन जब तक आप माता-पिता को सकारात्मक सूचकांक देते हैं, तब तक यह अपेक्षाकृत सुरक्षित होना चाहिए।
mekwall

@ यदि आप उस प्रश्न की जांच करते हैं जो मैंने आपके प्रश्न पोस्ट के तहत लिखा है। मेरे पास एक अन्य प्रश्न के लिए लिंक है जिसमें कई अन्य विकल्प हैं, जिसमें rgba शामिल है जो कि css3 विकल्प है। पुराने के लिए काफी अच्छी चाल अर्थात .. css-tricks.com/2151-rgba-browser-support
जूनास

@Alon मैंने ::beforeछद्म तत्व का उपयोग करके एक और विधि जोड़ी । क्या यह वही था जिसकी आपको तलाश थी?
मेकवॉल

155

तो यहाँ एक और तरीका है:

background-image: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.5)), url("your_image.png");

3
@jj_: क्योंकि उस समय के लिए बहुत सीमित समर्थन था linear-gradient। मेरे द्वारा लिखा गया स्वीकृत उत्तर 4 साल से अधिक पुराना है;)
mekwall

3
हो सकता है कि आप अपने प्रश्न में कोई टिप्पणी या थोड़ा अपडेट जोड़ सकते हैं, यह सूचित करते हुए कि यह अब इसे करने का नया अच्छा तरीका है। नए अपडेट के लिए आपको 4 साल में देखें;)
jj_

@jj_: वास्तव में, यह समाधान छवि को पारदर्शी नहीं बनाता है। यह केवल 50% पारदर्शिता के साथ एक सफेद परत जोड़ता है। इसलिए, यह सवाल का वैध जवाब नहीं है।
मेकवाल

7
मुझे लगता है कि हम इस बात पर सहमत हो सकते हैं कि यह प्रश्न के इरादे को प्राप्त करता है इसलिए हाँ, यह प्रश्न के लिए एक मान्य उत्तर है।
डेविड क्लार्क

हाँ .. यह जवाब बहुत आसान है, वहाँ सबसे सरल है .. और निरपेक्ष के साथ स्थिति वहाँ गड़बड़ हो जाती है
हरकीरत सलूजा

4

सीएसएस

div { 
    width: 200px;
    height: 200px;
    display: block;
    position: relative;
}

div::after {
    content: "";
    background: url(image.jpg); 
    opacity: 0.5;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    position: absolute;
    z-index: -1;
}

एचटीएमएल

<div> put your div content</div>

0

यह हाय वहाँ पाठ के लिए विभिन्न div वर्ग का उपयोग करके किया जा सकता है ...

<div class="myDiv">
    <div class="bg">
   <p> Hi there</p>
</div>
</div>

अब आप शैलियों को लागू कर सकते हैं

टैग। अन्यथा बीजी वर्ग के लिए। मुझे यकीन है कि यह ठीक काम करता है


0

मैंने माक्र्स एकवाल के समाधान को लागू किया लेकिन इसे सरल बनाने के लिए कुछ चीजों को हटाने में सक्षम था और यह अभी भी काम करता है। शायद html / css का 2017 संस्करण?

एचटीएमएल:

<div id="content">
  <div id='bg'></div>
  <h2>What is Lorem Ipsum?</h2>
  <p><strong>Lorem Ipsum</strong> is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen
    book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with
    desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
</div>

सीएसएस:

#content {
  text-align: left;
  width: 75%;
  margin: auto;
  position: relative;
}

#bg {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background: url('https://static.pexels.com/photos/6644/sea-water-ocean-waves.jpg') center center;
  opacity: .4;
  width: 100%;
  height: 100%;
}

https://jsfiddle.net/abalter/3te9fjL5/


1
यह मेरे उत्तर में "माध्यमिक डिव" के समान है, एकमात्र अंतर यह है कि आपने z-index को छोड़ दिया है (यह संभव है कि यह आज अलग तरह से व्यवहार करता है और ब्राउज़र पर भी निर्भर हो सकता है)। लेकिन ब्राउज़र पर भरोसा करना उम्मीद के अनुसार व्यवहार करना आमतौर पर एक बुरा विचार है।
mekwall

0

सभी को नमस्कार मैंने यह किया और यह अच्छी तरह से काम किया

	var canvas, ctx;

		function init() {
			canvas = document.getElementById('color');
			ctx = canvas.getContext('2d');

			ctx.save();
			ctx.fillStyle = '#bfbfbf'; //  #00843D   // 118846
			ctx.fillRect(0, 0, 490, 490);
			ctx.restore();
		}
section{
		height: 400px;
		background: url(https://images.pexels.com/photos/265087/pexels-photo-265087.jpeg?w=1260&h=750&auto=compress&cs=tinysrgb);
		background-repeat: no-repeat;
		background-position: center;
		background-size: cover;
		position: relative;
	
}

canvas {
	width: 100%;
	height: 400px;
	opacity: 0.9;

}

#text {
	position: absolute;
	top: 10%;
	left: 0;
	width: 100%;
	text-align: center;
}


.middle{
	text-align: center;
	
}

section small{
	background-color: #262626;
	padding: 12px;
	color: whitesmoke;
  letter-spacing: 1.5px;

}

section i{
  color: white;
  background-color: grey;
}

section h1{
  opacity: 0.8;
}
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Metrics</title>
	<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">  
</head>  
  
<body onload="init();">
<section>
<canvas id="color"></canvas>

<div class="w3-container middle" id="text">
<i class="material-icons w3-highway-blue" style="font-size:60px;">assessment</i>
<h1>Medimos las acciones de tus ventas y disenamos en la WEB tu Marca.</h1>
<small>Metrics &amp; WEB</small>
</div>
</section> 


0
<!DOCTYPE html>
<html>
<head></head>
<body>
<div style=" background-color: #00000088"> Hi there </div>
<!-- #00 would be r, 00 would be g, 00 would be b, 88 would be a. -->
</body>
</html>

संख्याओं के 4 सेटों में यह rgba बना देगा, cmyk नहीं, लेकिन दोनों तरह से काम करेगा (rgba = 00000088, cmyk = 0%, 0%, 0%, 50%)


-1

मेरे लिए कोई भी समाधान काम नहीं आया। यदि सब कुछ विफल हो जाता है, तो फ़ोटोशॉप पर चित्र प्राप्त करें और कुछ प्रभाव लागू करें। इस पर 5 मिनट बनाम इतना समय ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.