UI없이 jQuery에서 정말 기본적인 오버레이를 어떻게 만들 수 있습니까?
경량 플러그인이란 무엇입니까?
답변
오버레이는 단순히 넣어되지 div
체류가 화면에 고정 (상관없이 스크롤 경우)과 투명도의 어떤 종류가있다.
크로스 브라우저 불투명도 0.5에 대한 CSS가됩니다.
#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 코드가 될 것입니다 (UI 필요 없음). ID #overlay로 새 요소를 만들 것입니다. DIV를 만들고 파괴하는 것만으로 충분합니다.
var overlay = jQuery('<div id="overlay"> </div>');
overlay.appendTo(document.body)
들어 성능상의 이유로 당신은 DIV가 숨겨져있다 싶어 수도 블록에 표시 및 없음을 설정 당신이 그것을 필요 여부한다.
도움이 되었기를 바랍니다.
편집 : @Vitaly가 잘 말했듯이 DocType을 확인하십시오. 그의 발견에 대한 의견에 대해 자세히 읽어보십시오 ..
답변
다음은 간단한 자바 스크립트 전용 솔루션입니다.
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
답변
다음은 data-photo-overlay = ‘true 인 모든 IMG 요소에 오버레이 (공유 버튼 포함)를 추가하는 완전히 캡슐화 된 버전입니다.
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;
}
자바 스크립트
(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 플러그인을 확인하십시오.
이를 통해 모든 페이지 또는 요소를 오버레이 할 수 있으며,
예 : div 차단 :
$('div.test').block({ message: null });
페이지 차단 :
$.blockUI({ message: '<h1><img src="busy.gif" /> Just a moment...</h1>' });
누군가에게 도움이되는 희망
인사말
답변
오버레이 란 페이지의 나머지 부분을 겹치거나 덮는 콘텐츠를 의미합니까? HTML에서는 절대 또는 고정 위치를 사용하는 div를 사용하여이를 수행 할 수 있습니다. 동적으로 생성해야하는 경우 jQuery는 위치 스타일이 적절하게 설정된 div를 생성 할 수 있습니다.
답변
오버레이로 무엇을 하시겠습니까? 일부 콘텐츠를 겹치는 간단한 상자와 같이 정적 인 경우 CSS와 함께 절대 위치 지정을 사용하십시오. 동적 인 경우 (라이트 박스라고합니다) CSS 수정 jQuery 코드를 작성하여 필요에 따라 오버레이를 표시하거나 숨길 수 있습니다.