Как я могу создать действительно простой оверлей в jQuery без пользовательского интерфейса?
Что такое легкий плагин?
Проще говоря, оверлей div
остается фиксированным на экране (независимо от того, прокручиваете ли вы его) и имеет своего рода непрозрачность.
Это будет ваш CSS для кроссбраузерной непрозрачности 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 (пользовательский интерфейс не требуется). Вы просто собираетесь создать новый элемент с идентификатором #overlay. Создание и уничтожение DIV должно быть всем, что вам нужно.
var overlay = jQuery('<div id="overlay"> </div>');
overlay.appendTo(document.body)
По соображениям производительности вы можете захотеть скрыть DIV и настроить отображение на блокировку, а не на отсутствие, как вам это нужно или нет.
Надеюсь, это поможет!
Изменить: как хорошо сказал @Vitaly, обязательно проверьте свой DocType. Подробнее читайте в комментариях к его выводам ..
background-image: url('semi-transparent-pixel.png');
Вот простое решение только для javascript
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
источник
<table>
? Это 90-е?Вот полностью инкапсулированная версия, которая добавляет оверлей (включая кнопку общего доступа) к любому элементу IMG, где data-photo-overlay = 'true.
JSFiddle http://jsfiddle.net/wloescher/7y6UX/19/
HTML
<img id="my-photo-id" src="http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo.png" alt="Photo" data-photo-overlay="true" />
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 = $("<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 + "]"); } } )();
источник
Если вы уже используете jquery, я не понимаю, почему вы также не сможете использовать облегченный плагин наложения. Другие люди уже написали несколько хороших примеров на jquery, так зачем заново изобретать колесо?
источник
Пожалуйста, проверьте этот плагин jQuery,
blockUI
с этим вы можете наложить всю страницу или элементы, отлично работает для меня,
Примеры: заблокировать div:
$('div.test').block({ message: null });
Заблокируйте страницу:
$.blockUI({ message: '<h1><img src="busy.gif" /> Just a moment...</h1>' });
Надеюсь, что это кому-то поможетприветствия
источник
Под наложением вы подразумеваете контент, который перекрывает / покрывает остальную часть страницы? В HTML вы могли бы сделать это, используя div, который использует абсолютное или фиксированное позиционирование. Если нужно было сгенерировать динамически, jQuery может просто сгенерировать div с соответствующим образом установленным стилем позиции.
источник
Что вы собираетесь делать с оверлеем? Если он статический, скажем, простой прямоугольник, перекрывающий некоторый контент, просто используйте абсолютное позиционирование с помощью CSS. Если он динамический (я считаю, что это называется лайтбокс), вы можете написать код jQuery, изменяющий CSS, для отображения / скрытия наложения по запросу.
источник