jQuery: How can i create a simple overlay?

后端 未结 7 1812
感动是毒
感动是毒 2020-11-30 19:04

How can I create a really basic overlay in jQuery without UI?

What is a lightweight plugin?

7条回答
  •  栀梦
    栀梦 (楼主)
    2020-11-30 19:13

    Here's a fully encapsulated version which adds an overlay (including a share button) to any IMG element where data-photo-overlay='true.

    JSFiddle http://jsfiddle.net/wloescher/7y6UX/19/

    HTML

    Photo
    

    CSS

    #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;
    }
    

    JavaScript

    (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 = $("
    "); var _photoOverlayShareButton = $("
    Share
    "); // 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 + "]"); } } )();

提交回复
热议问题