Isso já está disponível como um componente de tema. ![]()
Olá,
Meu fórum é muito focado em imagens e eu queria apenas fazer algumas alterações no lightbox padrão do Magnific Popup para torná-lo mais amigável. Não sou um especialista, mas talvez isso seja uma boa ideia ou alguém mais experiente possa criar um Componente de Tema ou algo assim a partir deste protótipo.
Obrigado! ![]()
Qual é a diferença?
- Usar fundo preto
- Usar container fixo (imagem sempre na tela)
- Remover preenchimentos para ver a imagem em tamanho de janela completa
- Mover todos os botões para dentro do div
.mfp-container - Botões fixos (sempre visíveis na tela)
- Redesenhar botões
- Adicionar um botão dedicado de zoom (especialmente útil quando você está na visualização de galeria com mais imagens). Com este botão, você pode dar zoom na imagem atual para dentro e para fora.
- Na minha instância, eu oculto o texto do
.mfp-title(legenda). Mas o link de download permanece visível.
</head>
<script type="text/discourse-plugin" version="0.8.18">
$(document).ready(function() {
$("body").click(function() {
// Mover botão de fechar para baixo do container div
$(".mfp-container").append($(".mfp-close"));
// Adicionar botão de zoom
if($(".full-size-btn").length <= 0){
$(".mfp-container").append('<div class="full-size-btn mfp-prevent-close"><span class="plus-btn mfp-prevent-close" title="Zoom in image"><svg class="fa d-icon d-icon-plus svg-icon svg-node mfp-prevent-close" aria-hidden="true"><use xlink:href="#plus"></use></svg></span><span class="minus-btn mfp-prevent-close" title="Zoom out image"><svg class="fa d-icon d-icon-minus svg-icon svg-node mfp-prevent-close" aria-hidden="true"><use xlink:href="#minus"></use></svg></span></div>');
// Se você clicar no botão de zoom, alterna a classe
$(".full-size-btn").click(function () {
$(".mfp-wrap").toggleClass("mfp-full-size-scrollbars");
});
}
// Prevenir zoom ao clicar na imagem
$(document).on("click", ".mfp-img", function() {
$(".mfp-img").css("max-height", $(window).height());
});
// Se você der zoom e clicar na imagem ou nas setas, vai para a próxima imagem no tamanho normal
$(".mfp-img, .mfp-arrow").click(function () {
if ($(".mfp-wrap").hasClass("mfp-full-size-scrollbars")) {
$(".mfp-wrap").removeClass("mfp-full-size-scrollbars");
}
});
});
});
</script>
COMUM / SCSS
.mfp-zoom-in.mfp-ready.mfp-bg {
opacity: 1;
background-color: #000000;
}
.mfp-container {
position: fixed;
overflow: auto;
padding-left: 0px;
padding-right: 0px;
}
.mfp-figure {
&:after {
top: 0;
bottom: 0;
box-shadow: none;
}
}
img.mfp-img {
padding: 0;
}
.mfp-force-scrollbars {
.mfp-img {
max-width: 100%;
}
}
// Barra inferior
.mfp-bottom-bar {
margin-top: 0;
padding: 0.3em 0;
}
// Título
.mfp-title {
overflow: hidden;
white-space: nowrap;
visibility: hidden;
.image-source-link {
right: 6px;
position: absolute;
visibility: visible;
}
}
// Contador
.mfp-counter {
right: 10px;
top: -25px;
min-width: 40px;
color: #000000;
background: #ffffff;
border-radius: 4px;
opacity: .65;
font-weight: bold;
text-align: center;
}
// Botões
.mfp-close-btn-in .mfp-close {
right: 15px;
top: 15px;
width: 44px;
height: 44px;
position: fixed;
text-align: center;
padding-right: 0;
background: #ffffff;
color: #000000;
border-radius: 50%;
-webkit-box-shadow: inset 0px 0px 0px 3px #000;
-moz-box-shadow: inset 0px 0px 0px 3px #000;
box-shadow: inset 0px 0px 0px 3px #000;
}
button.mfp-arrow {
background: #ffffff;
-webkit-transform: scale(0.55);
transform: scale(0.55);
border-radius: 50%;
width: 90px;
height: 90px;
-webkit-box-shadow: inset 0px 0px 0px 6px #000;
-moz-box-shadow: inset 0px 0px 0px 6px #000;
box-shadow: inset 0px 0px 0px 6px #000;
&:after {
top: -3px;
}
}
.mfp-arrow-left {
left: 3px;
&:before {
display: none;
}
&:after {
border-right: 17px solid #000;
margin-left: 30px;
}
}
.mfp-arrow-right {
right: 3px;
&:before {
display: none;
}
&:after {
border-left: 17px solid #000;
margin-left: 40px;
}
}
.full-size-btn {
left: 15px;
bottom: 25px;
width: 44px;
height: 44px;
position: fixed;
background-color: #fff;
border-radius: 50%;
color: #000;
display: flex;
align-items: center;
justify-content: center;
font-size: var(--font-up-1);
z-index: 1046;
cursor: -moz-pointer;
cursor: -webkit-pointer;
cursor: pointer;
opacity: .65;
-webkit-box-shadow: inset 0px 0px 0px 3px #000;
-moz-box-shadow: inset 0px 0px 0px 3px #000;
box-shadow: inset 0px 0px 0px 3px #000;
&:hover {
opacity: 1;
}
.minus-btn {
display: none;
}
}
// Zoom personalizado
.mfp-full-size-scrollbars {
.mfp-img {
max-width: none !important;
max-height: none !important;
}
.mfp-figure {
overflow: auto;
figure {
overflow: auto;
}
}
button.mfp-arrow {
position: fixed;
}
.full-size-btn {
.minus-btn {
display: block;
}
.plus-btn {
display: none;
}
}
}
Demonstração
Galeria (mais fotos)
Fotografia única