একটি নির্দিষ্ট অঞ্চল বাদে পুরো পর্দা ঝাপটায়?


90

আমি একটি টিউটোরিয়াল তৈরি করতে চাই যা ব্যবহারকারীকে ঠিক কোথায় ক্লিক করতে হবে। আমি সঙ্গে সম্পূর্ণ পর্দা আবরণ চেষ্টা করছি <div>যা ব্যতীত সমস্ত উপাদান অস্পষ্ট হবে নির্দিষ্ট অঞ্চল , যা একটি নির্দিষ্ট হয় width, height, topএবং left

সমস্যাটি হ'ল, আমি পিতামাতার "বাতিল" করার কোনও উপায় খুঁজে পাচ্ছি না background-color(যা স্বচ্ছও)।

নীচে টুকরো টুকরোতে, ডিভটি যা তার বাবা-মাকে সহ holeকোনও ছাড়াই বলে মনে করা হয় background-color

এটি কি আদৌ সম্পাদিত হতে পারে? কোন ধারনা?

#bg{
   background-color:gray;
   opacity:0.6;
   width:100%;
   height:100vh;
}
#hole{
   position:fixed;
   top:100px;
   left:100px;
   width:100px;
   height:100px;
}
<div id="bg">
    <div id="hole"></div>
</div>

আমি কী অর্জন করার চেষ্টা করছি তার একটি মকআপ চিত্র এখানে:

এখানে চিত্র বর্ণনা লিখুন


13
যদি আপনি কোনও বৈশিষ্ট্য ট্যুর / টিউটোরিয়াল তৈরি করে থাকেন তবে এটি করার জন্য আপনার জেএস লাইব্রেরিতে একটিতে আগ্রহী হতে পারে। এগুলির কয়েকটি নিফটি বৈশিষ্ট্য রয়েছে এবং এটি আপনাকে এক-অফ সিএসএফ এফেক্টের গুচ্ছ লেখার ঝামেলা বাঁচাবে। পরীক্ষা করে দেখুন introjs.com বা linkedin.github.io/hopscotch
অক্টোবর

4
এটি কেবল একটি lib এর পরামর্শ: হেলহুক.github.io/chardin.js
অনলাইন থমাস

উত্তর:


127

আপনি এটি কেবল একটি দিয়ে করতে পারেন divএবং এটি দিতে পারেন box-shadow

সম্পাদনা করুন: @ নিক শোভেলিডজে উল্লেখ করেছেন যেহেতু আপনার যোগ করার বিষয়টি বিবেচনা করা উচিতpointer-events: none

@ প্রিনজর্ন হিসাবে প্রস্তাবিত হিসাবে এর vmaxজন্য যুক্ত করা মানbox-shadow

div {
  position: fixed;
  width: 200px;
  height: 200px;
  top: 50px;
  left: 50px;
  /* for IE */
  box-shadow: 0 0 0 1000px rgba(0,0,0,.3);
  /* for real browsers */
  box-shadow: 0 0 0 100vmax rgba(0,0,0,.3);
  pointer-events: none;
}
<div></div>


29
pointer-events: noneআপনি যদি এর নীচের অঞ্চলটি ক্লিকযোগ্য হতে চান তবে যুক্ত করতে ভুলবেন না ।
নিক শ্বেলিডজে

4
1,000px আমার কাছে যথেষ্ট মনে হচ্ছে না - মনে হচ্ছে এমন অনেকগুলি ঘটনা ঘটবে যেখানে এটি স্ক্রিনটি পূরণ করে না, অন্যথায় সত্যিই চতুর সমাধান।
ESR

4
@ এডমন্ড রেড আপনি আপনার প্রয়োজনের জন্য এটি সামঞ্জস্য করতে পারেন :)
ভিলকু

8
box-shadow: 0 0 0 100vmax rgba(0,0,0,.3);পুরো স্ক্রিনটি কভার করার গ্যারান্টি দেওয়া হবে
প্রিনজর্ন

4
@ উইলকুকো আপনি এটি 1000px লাইনের পিছনে যুক্ত করতে পারেন এবং পড়ন্ত হিসাবে ফিরিয়ে রাখতে পারেন
প্রিনজর্ন

19

আপনি এমন একটি এসভিজি তৈরি করতে পারেন যা আপনাকে এমন যেখানে এমন গর্ত রয়েছে যেখানে একটি রাস্তা দিয়ে ভরাট করা যেতে পারে। তবে আমি অনুমান করি যে ক্লিকগুলি হ্যান্ডেল করার জন্য আপনার কোনও পথের সন্ধান করা দরকার, যেহেতু এগুলির সমস্তই ওভারলাইড এসভিজিতে লক্ষ্যবস্তু হবে। আমি document.getElementFromPointআপনাকে এখানে সাহায্য করতে পারেন। এমডিএন


আমি ভাবি গুগল ফিডব্যাক ফর্মটি এসএমজি ব্যবহার করে বিশ্রামের জায়গাটি ব্যবহার করে।
দুর্গা

3

এটি @ ভিলিকুর জবাবের মতো একইভাবে করা যেতে পারে তবে একটি সীমানা সহ।

div {
    border-style: solid;
    border-color: rgba(0,0,0,.3);
    pointer-events: none;
    position: absolute;
    top: 0; bottom: 0; left: 0; right: 0;
    border-width: 40px 300px 50px 60px;
}
<div></div>


2

আপনি সিএসএস সম্পত্তি ব্যবহার করে ভিলকির উত্তরের মতোই অর্জন করতে পারেন outline। এটিতে দুর্দান্ত ব্রাউজার সমর্থন রয়েছে (এবং আইই 8+ তেও কাজ করে)। আউটলাইনগুলির সীমানার মতো একই বাক্য গঠন রয়েছে তবে সীমানার বিপরীতে তারা স্থান নেয় না, তারা সামগ্রীর উপরে আঁকা হয়।

এছাড়াও IE9 জন্য + আপনি প্রতিস্থাপন করতে পারেন 99999pxসঙ্গে calc(100 * (1vh + 1vw - 1vmin))

এই পদ্ধতির অসুবিধা হ'ল এটি outlineদ্বারা প্রভাবিত হয় না border-radius

ডেমো:

div {
  position: fixed;
  width: 200px;
  height: 200px;
  top: 50px;
  left: 50px;
  /* IE8 */
  outline: 99999px solid rgba(0,0,0,.3);
  /* IE9+ */
  outline: calc(100 * (1vw + 1vh - 1vmin)) solid rgba(0,0,0,.3);
  /* for other browsers */
  outline: 100vmax solid rgba(0,0,0,.3);
  pointer-events: none;
}
<div></div>


0

@ উইলকু সিএসএস ব্যবহার করে এখানে সহজ jQuery কোড দেওয়া আছে

var Dimmer = (function(){
  var el = $(".dimmer");
  
  return {
    showAt: function(x, y) {
      el
        .css({
          left: x,
          top: y,
        })
        .removeClass("hidden");
    },
    
    hide: function() {
      el.addClass("hidden");
    }
  }
}());


$(".btn-hide").click(function(){ Dimmer.hide(); });
$(".btn-show").click(function(){ Dimmer.showAt(50, 50); });
.dimmer {
  position: fixed;
  width: 200px;
  height: 200px;
  top: 50px;
  left: 50px;
  box-shadow: 0 0 0 1000px rgba(0,0,0,.3); /* for IE */
  box-shadow: 0 0 0 100vmax rgba(0,0,0,.3); /* for real browsers */
  pointer-events: none;
}

.hidden { display: none; }
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>

  <div>
    <input type="text">
    <select name="" id=""></select>
    <input type="checkbox">
  </div>
  <div>
    <input type="text">
    <select name="" id=""></select>
    <input type="checkbox">
  </div>
  <div>
    <input type="text">
    <select name="" id=""></select>
    <input type="checkbox">
  </div>
  <div>
    <input type="submit" disabled>
  </div>
  
  <input type="button" value="Hide" class="btn-hide">
  <input type="button" value="Show" class="btn-show">
  <div class="dimmer hidden"></div>
  <script src="https://code.jquery.com/jquery-2.2.4.js"></script>
</body>
</html>


0
#bg {
   background-color: gray;
   opacity: 0.6;
   position: absolute;
   top: 0;
   left: 0;
   width: 100%;
   height: 100%;
   z-index: 99998;
}
#hole {
   position: fixed;
   top: 100px;
   left: 100px;
   width: 100px;
   height: 100px;
   z-index: 99999;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.