jQuery: আমি কীভাবে একটি সাধারণ ওভারলে তৈরি করতে পারি?


95

আমি কীভাবে ইউআই ছাড়া jQuery এ একটি সত্যিকারের বেসিক ওভারলে তৈরি করতে পারি?

লাইটওয়েট প্লাগইন কী?

উত্তর:


202

একটি ওভারলে হ'ল সহজ ভাষায়, এটি স্ক্রিনে স্থিরdiv থাকে (আপনি স্ক্রোল করেন না কেন) এবং এতে কিছু ধরণের অস্বচ্ছতা রয়েছে।

এটি ক্রস ব্রাউজারের অস্বচ্ছতার জন্য আপনার সিএসএস হবে 0.5:

#overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #000;
    filter:alpha(opacity=50);
    -moz-opacity:0.5;
    -khtml-opacity: 0.5;
    opacity: 0.5;
    z-index: 10000;
}

এটি আপনার jQuery কোড হবে (কোনও ইউআইয়ের প্রয়োজন নেই)। আপনি কেবল # ওভারলে আইডি দিয়ে একটি নতুন উপাদান তৈরি করতে যাচ্ছেন। ডিআইভি তৈরি করা এবং ধ্বংস করা আপনার যা প্রয়োজন তা হ'ল।

var overlay = jQuery('<div id="overlay"> </div>');
overlay.appendTo(document.body)

জন্য কর্মক্ষমতা কারণে আপনি DIV লুকিয়ে রেখেছি ওয়ানা পারে এবং ব্লক করার প্রদর্শন এবং কেউ সেটিং হিসাবে আপনি তা না প্রয়োজন বা।

আশা করি এটা সাহায্য করবে!

সম্পাদনা: @ ভিটালি যেভাবে এটিকে ভালভাবে লিখেছেন, আপনার ডকটাইপটি পরীক্ষা করে দেখতে ভুলবেন না। তার অনুসন্ধানে মন্তব্যগুলিতে আরও পড়ুন ..


এটি আই 8 তে কাজ করে না। "ওভারলে" সামগ্রীগুলির নীচে দেখানো হয়েছে। এটা ঠিক করার কোন ধারনা তোমার আছ?
ভাইটালি

9
বুঝেছি. <! ডক্টইপিএইচটিএমএল পাবলিক "- // ডব্লিউ 3 সি // ডিটিডি এইচটিএমএল 4.1 ট্রানজিশনাল // এএন"> থেকে <! ডক্টইপিটি এইচটিএমএল পাবলিক "- // ডাব্লু 3 সি // ডিটিডি এক্সএইচটিএমএল 1.0 ট্রানজিশনাল // এএন"> তৈরি করতে IE বুঝতে "অবস্থান: স্থির" "
ভাইটালি

4
চমৎকার! ধন্যবাদ! গুগলারের পাশ দিয়ে যাওয়া আরও সহজ করার জন্য আমি প্রশ্নটিতে আপনার আবিষ্কারটি ভাগ করে নেব! ;)
ফ্রাঙ্কি

6
যদি আপনি সেই ওভারলে কন্টেন্ট যুক্ত করতে চান তবে এটি আধা অস্বচ্ছ হতে চান না, ব্যাকগ্রাউন্ড ব্যবহার করুন: # 000000; ব্যাকগ্রাউন্ড-কালার: আরজিবা (0,0,0, .5) অপসারণের প্রবেশের পরিবর্তে। ব্যাকগ্রাউন্ড: rgba পুরানো ব্রাউজারগুলিকে সমর্থন করার আগে # 000000।
শানিমাল

4
টিপ: ক্রস ব্রাউজার সমর্থনের জন্য 1x1px আধা-স্বচ্ছ চিত্র ব্যবহার করুন (জিআইএফ বা পিএনজি) ... তবে আপনি সহজেই এটি সেট করতে পারেনbackground-image: url('semi-transparent-pixel.png');
jave.web

16

এখানে একটি সহজ জাভাস্ক্রিপ্ট একমাত্র সমাধান

function displayOverlay(text) {
    $("<table id='overlay'><tbody><tr><td>" + text + "</td></tr></tbody></table>").css({
        "position": "fixed",
        "top": 0,
        "left": 0,
        "width": "100%",
        "height": "100%",
        "background-color": "rgba(0,0,0,.5)",
        "z-index": 10000,
        "vertical-align": "middle",
        "text-align": "center",
        "color": "#fff",
        "font-size": "30px",
        "font-weight": "bold",
        "cursor": "wait"
    }).appendTo("body");
}

function removeOverlay() {
    $("#overlay").remove();
}

ডেমো:

http://jsfiddle.net/UziTech/9g0pko97/

সংক্ষেপ:

https://gist.github.com/UziTech/7edcaef02afa9734e8f2


4
<table>? এটা কি 1990?
MECU

3

এখানে একটি সম্পূর্ণ এনপ্যাপুলেটেড সংস্করণ যা কোনও আইএমজি উপাদান যেখানে ওভারলে (একটি শেয়ার বোতাম সহ) যুক্ত করে যেখানে ডেটা-ফটো-ওভারলে = 'সত্য।

জেএসফিডেল http://jsfiddle.net/wloescher/7y6UX/19/

এইচটিএমএল

<img id="my-photo-id" src="http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo.png" alt="Photo" data-photo-overlay="true" />

সিএসএস

#photoOverlay {
    background: #ccc;
    background: rgba(0, 0, 0, .5);
    display: none;
    height: 50px;
    left: 0;
    position: absolute;
    text-align: center;
    top: 0;
    width: 50px;
    z-index: 1000;
}

#photoOverlayShare {
    background: #fff;
    border: solid 3px #ccc;
    color: #ff6a00;
    cursor: pointer;
    display: inline-block;
    font-size: 14px;
    margin-left: auto;
    margin: 15px;
    padding: 5px;
    position: absolute;
    left: calc(100% - 100px);
    text-transform: uppercase;
    width: 50px;
}

জাভাস্ক্রিপ্ট

(function () {
    // Add photo overlay hover behavior to selected images
    $("img[data-photo-overlay='true']").mouseenter(showPhotoOverlay);

    // Create photo overlay elements
    var _isPhotoOverlayDisplayed = false;
    var _photoId;
    var _photoOverlay = $("<div id='photoOverlay'></div>");
    var _photoOverlayShareButton = $("<div id='photoOverlayShare'>Share</div>");

    // Add photo overlay events
    _photoOverlay.mouseleave(hidePhotoOverlay);
    _photoOverlayShareButton.click(sharePhoto);

    // Add photo overlay elements to document
    _photoOverlay.append(_photoOverlayShareButton);
    _photoOverlay.appendTo(document.body);

    // Show photo overlay
    function showPhotoOverlay(e) {
        // Get sender 
        var sender = $(e.target || e.srcElement);

        // Check to see if overlay is already displayed
        if (!_isPhotoOverlayDisplayed) {
            // Set overlay properties based on sender
            _photoOverlay.width(sender.width());
            _photoOverlay.height(sender.height());

            // Position overlay on top of photo
            if (sender[0].x) {
                _photoOverlay.css("left", sender[0].x + "px");
                _photoOverlay.css("top", sender[0].y) + "px";
            }
            else {
                // Handle IE incompatibility
                _photoOverlay.css("left", sender.offset().left);
                _photoOverlay.css("top", sender.offset().top);
            }

            // Get photo Id
            _photoId = sender.attr("id");

            // Show overlay
            _photoOverlay.animate({ opacity: "toggle" });
            _isPhotoOverlayDisplayed = true;
        }
    }

    // Hide photo overlay
    function hidePhotoOverlay(e) {
        if (_isPhotoOverlayDisplayed) {
            _photoOverlay.animate({ opacity: "toggle" });
            _isPhotoOverlayDisplayed = false;
        }
    }

    // Share photo
    function sharePhoto() {
        alert("TODO: Share photo. [PhotoId = " + _photoId + "]");
        }
    }
)();

1

আপনি যদি ইতিমধ্যে jquery ব্যবহার করে থাকেন তবে আমি কেন দেখতে পাচ্ছি না আপনি কেন হালকা ওভারলে প্লাগইন ব্যবহার করতে পারবেন না। অন্যান্য ব্যক্তিরা ইতিমধ্যে jquery এ কিছু সুন্দর লিখেছেন, তাহলে চাকাটি পুনরায় উদ্ভাবন কেন?


4
কোন লাইটওয়েট ওভারলে প্লাগইন আছে?
আওগক

15
আপনি যখন 3 লাইনের কোডটিতে একটি নিখুঁতভাবে গ্রহণযোগ্য চাকা তৈরি করতে পারেন তখন কেন বেল এবং সিঁড়ি দিয়ে একটি চাকা ধার করবেন? প্লাগইন সর্বদা সেরা সমাধান নয়।
জোয়েল

5
3 টি কোডের লাইন যা এফএফ-তে সুন্দরভাবে কাজ করতে পারে তবে তারপরে আইই এর কিছু সংস্করণে কিরক হতে পারে। কমপক্ষে একটি পরিচিত সরঞ্জামের সাথে, বেশিরভাগ কিঙ্কস ইতিমধ্যে কাজ করা হয়েছে।
ড্যান ব্রেন

6
আপনি যদি কোনও প্লাগইন ব্যবহার করার পরামর্শ দেন তবে আপনার উচিত উপযুক্ত বা একের বেশি পরামর্শ দেওয়া উচিত should অন্যথায় উত্তরটি সত্যিই সহায়ক নয় ...
হিনেক

@ হিনেক - আমি উত্তর দেওয়ার পরে সে প্রশ্নটি পুনরায় উত্তর দিয়েছিল। তিনি মূলত একটি লাইব্রেরি ব্যবহার না করেই একটি ওভারলে চেয়েছিলেন এবং আমি পরামর্শ দিচ্ছিলাম যে এটি স্ক্র্যাচ থেকে বাস্তবায়নের জন্য হতাশ হওয়ার চেয়ে একটি ব্যবহার করা বেশি ওভারহেড নয় was
ড্যান ব্রেন

1

দয়া করে এই jQuery প্লাগইনটি পরীক্ষা করুন,

blockUI

এটির সাহায্যে আপনি সমস্ত পৃষ্ঠা বা উপাদানকে ওভারলে করতে পারেন, আমার জন্য দুর্দান্ত কাজ করে,

উদাহরণ: একটি ডিভ অবরুদ্ধ করুন: $('div.test').block({ message: null });

পৃষ্ঠাটি অবরুদ্ধ করুন: $.blockUI({ message: '<h1><img src="busy.gif" /> Just a moment...</h1>' }); আশা করি কারও সাহায্য করবে

শুভেচ্ছা


0

ওভারলে দ্বারা আপনি কী এমন সামগ্রীর অর্থ বোঝাচ্ছেন যা বাকী পৃষ্ঠাটি ওভারল্যাপ করে / কভার করে? এইচটিএমএলে, আপনি একটি ডিভ ব্যবহার করে এটি করতে পারেন যা পরম বা স্থির অবস্থান ব্যবহার করে। যদি এটি গতিশীলভাবে উত্পন্ন করার প্রয়োজন হয়, jQuery কেবল পজিশন স্টাইলটি যথাযথভাবে সেট করে একটি ডিভ তৈরি করতে পারে।


0

ওভারলে নিয়ে আপনি কী করতে চান? যদি এটি স্থির থাকে, তবে বলুন, একটি সাধারণ বাক্স কিছু সামগ্রীকে ওভারল্যাপ করে, কেবল CSS এর সাথে পরম অবস্থান ব্যবহার করে use যদি এটি গতিশীল হয় (আমি বিশ্বাস করি এটাকে লাইটবক্স বলা হয়), আপনি ওভারলে অন-চাহিদাটি দেখানোর / আড়াল করতে কিছু সিএসএস-সংশোধনকারী jQuery কোড লিখতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.