#javascript #jquery #css
#javascript #jquery #css
Вопрос:
var ImageTrigger = false;
$(document).on('click', 'body img', function() {
if (!ImageTrigger) {
$(this).addClass("imgclick");
ImageTrigger = true;
return false;
}
});
$(document).on('click', 'body', function() {
if (ImageTrigger) {
$("img").removeClass("imgclick");
ImageTrigger = false;
}
});
img {
transition: 0.3s ease-in-out;
max-width: 90%;
}
.imgclick {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
/* transform-origin: 0px center 0px; */
box-shadow: rgba(0, 0, 0, 1) 15px 15px 50px;
z-index: 100001;
padding: 10px;
background: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img class="imgclick" style="max-height: 400px;max-width:50%;margin: 0 auto;display: table;" src="http://www.biologicaldiversity.org/assets/img/species/mammals/GrayWolf_USFWS_FPWC_2_HIGHRES-scr.jpg" alt="image alt" title="Cool">
Я пытаюсь сделать так, чтобы вход выглядел так, как будто одно и то же изображение уменьшено из исходного положения и появилось в центре, а при выходе оно возвращается на свое место таким же образом, каким появилось. Я пытался использовать transform-origin
, но безуспешно.
Также есть какой-нибудь чистый способ заставить изображение занимать 90% экрана без искажения соотношения сторон?
Редактировать:
При нажатии на изображение изображение появляется снизу справа, а при возврате — сверху слева. Я пытаюсь сделать так, чтобы это выглядело так, как будто оно пришло из исходного изображения и возвращается к исходному изображению вместо верхнего левого и нижнего правого.
Исходный код, который я использовал
.imgclick{
max-height: 400px;
max-width: 95%;
margin: 0px auto;
display: table;
transform: scale(1.44);
transform-origin: left center 0px;
box-shadow: rgba(0, 0, 0, 0.611765) 0px 0px 13px;
z-index: 100001;
padding: 10px;
background: white;
position: relative;
}
Ответ №1:
.img{
transition: 0.3s ease-in-out;
max-width:90%;
transform: scale(1);
}
.imgclick{
transform: scale(1.2);
box-shadow: rgba(0, 0, 0, 1) 15px 15px 50px;
z-index: 100001;
padding: 10px;
background: white;
}
Я немного смущен тем, что именно вы пытаетесь. Но приведенный выше код увеличивает и уменьшает масштаб. Вы можете изменить в соответствии с вашими потребностями. 🙂
Комментарии:
1. Смотрите мой обновленный вопрос. И я не хочу использовать
scale
я использовал scale и изменил наtransition
.
Ответ №2:
img{
transition: 0.3s ease-in-out;
display: block;
position: fixed;
top: 20%;
left: 20%;
}
.imgclick{
transform: scale(1.4,1.4);
box-shadow: rgba(0, 0, 0, 1) 15px 15px 50px;
z-index: 100001;
padding: 10px;
background: white;
}
Я надеюсь, что приведенный выше код поможет вам. (второй ответ)
Комментарии:
1. Спасибо @Rupesh за фрагмент кода. К сожалению, родительский div, содержащий этот тег изображения, не покрывает всю ширину моего экрана, и я хочу отобразить увеличенное изображение в центре моего экрана, как в альбоме, с высотой, являющейся управляющим фактором (80%), без масштабирования.
Ответ №3:
Размещение изображения по центру внутри div может создать необходимый эффект
$(document).on('click', 'body img', function() {
if ($(this).hasClass("imgSmall") || $(this).hasClass("imgClick"))
$(this).toggleClass("imgSmall imgClick");
else
$(this).addClass("imgClick")
return false;
});
img {
width: 50%;
height: auto;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
transition: 1s linear all;
padding: 10px;
background: white;
animation-duration: 1s;
animation-iteration-count: 1;
animation-timing-function: linear;
animation-fill-mode: forwards;
}
@keyframes imageBig {
0% {
box-shadow: 0px 0px 4px #888888;
width: 50%;
}
100% {
box-shadow: 8px 8px 8px #888888;
width: 90%;
}
}
@keyframes imgSmall {
0% {
box-shadow: 8px 8px 8px #888888;
width: 90%;
}
100% {
box-shadow: 0px 0px 4px #888888;
width: 50%;
}
}
.imgClick {
animation-name: imageBig;
}
.imgSmall {
animation-name: imgSmall;
}
div {
position: relative;
height: 250px;
width: 400px;
border: 1px solid #ddd;
background: #ddd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<img src="http://www.biologicaldiversity.org/assets/img/species/mammals/GrayWolf_USFWS_FPWC_2_HIGHRES-scr.jpg" alt="image alt" title="Cool">
</div>
Комментарии:
1. Спасибо за исправление фиксированной позиции под div, но, к сожалению, я требую, чтобы это изображение всплывало в центре экрана, а
NO
родительский div не может иметь ширину 100%, так как справа есть еще один html-элемент. Предположим, что это изображение является частью публикации, и при нажатии на него закрывается весь экран, как в режиме просмотра витрины.