Размещение заголовка и изображения внутри центрированного div, который скользит вниз от верхней части экрана

#javascript #jquery #html #css

#javascript #jquery #HTML #css

Вопрос:

Я хочу создать галерею в HTML / CSS / jQuery. У меня есть куча эскизов, которые представляют разные изображения разного размера и ориентации. При нажатии на миниатюру я хочу, чтобы изображение скользило вниз от верхней части экрана. Изображение должно быть как можно большего размера, но все же вписываться в окно, принимая во внимание поля и тому подобное.

В прошлом я заставлял все это работать должным образом. Однако теперь я хочу добавить заголовок под изображением.

Мое решение было таким. У меня есть контейнер div, который является фиксированным и расположен с верхним: -96% и нижним: 100% При щелчке на миниатюре jQuery перемещает его на верхнее: 2% и нижнее: 2%

Раньше у меня была граница, которая окружала изображение. Теперь я хочу сделать эту границу фактически частью div, чтобы граница могла огибать заголовок, который должен быть ниже изображения и по центру, и указанное изображение.

Однако ничего из того, что я делаю, не работает. Изображение не поместится в область просмотра и всегда будет иметь максимальный размер, независимо от того, на что я меняю процент.

Я совершенно потерян, я понятия не имею, как заставить все это работать. Если вам нужен код, я могу дать его вам, но, как я уже сказал, это не работает. Заранее спасибо всем.

РЕДАКТИРОВАТЬ: добавлен код

HTML:

 <div id=imgHoverCont>
    <div id=imgBg>
        <img id=imgHover src="" alt="">
        <div id=commentHover></div>
    </div>
</div>
  

CSS:

 #imgHoverCont{
    text-align:center;
    position:fixed;
    left:2%;
    right:2%;
    top:-96%;
    bottom:100%;
}

#imgHover{
    display:block;
    height:100%;
    width:auto;
}

#imgBg{
    position: relative;
    display: inline-block;
    max-width:100%;
    max-height:100%;
}

#commentHover{
    position:absolute;
    left:0;
    bottom:0;
    width:100%;
    color:black;
    background-color:white;
}
  

JS: эскизы хранятся в массиве объектов с их идентификатором и их источником.

 for(let i in thumbnails){
       $(thumbnails[i].id).on("click",function(livingHell){
           return function(){
               $("#imgHover").attr("src",thumbnails[livingHell].src)
               $("#imgHoverCont").css("display","block");
               $("#commentHover").html(thumbnails[livingHell].comment);
               $("#imgHoverCont").animate({bottom:"2%",top:"2%"},1000);
           }
       }(i));
   };
  

Комментарии:

1. Привет, в SO принято показывать, что вы пробовали, поэтому код будет хорошим.

2. похоже, вам нужно изменить img положение внутри div на initial , тогда на него будет влиять размер fixed div

Ответ №1:

Я внес некоторые изменения в ваш CSS, если я понял ваш вопрос, он работает так, как ожидалось, посмотрите здесь: https://jsfiddle.net/cratgjks /

 #imgHoverCont{
    text-align:center;
    position:fixed;
    left:2%;
    right:2%;
    top:-96%;
    bottom:100%;
    width:100%; /*new rule*/
}

#imgHover{
    display:block;
    height:100%;
    width:100%;/*changed rule*/
}

#imgBg{
    position: relative;
    display: inline-block;
    max-width:100%;/*changed rule*/
    max-height:100%;
    width:1500px
}

#commentHover{
    position:absolute;
    left:0;
    bottom:0;
    width:100%;
    color:black;
    background-color:white;
}
  

Комментарии:

1. К сожалению, это все еще не работает. Для меня это также не работает на JSfiddle.

2. не могли бы вы быть более конкретными? в скрипке, когда я нажимаю кнопку «привет», изображение перемещается вниз шириной 100% с надписью, расположенной по центру под ним — это происходит для вас? разве это не то, что вы хотели?

3. Возможно, я просто неправильно использую JSFiddle, но когда я изменяю размер окна просмотра, изображение начинает отображаться неправильно даже после обновления страницы. Это также не работает на моей веб-странице. Кажется, что изображение всегда отображается в полном размере без учета размера контейнера. Я также хотел бы, чтобы он был 100% шириной или высотой в зависимости от ориентации, чтобы он помещался на экране независимо от размера

4. хорошо, теперь я вас понял — итак, прежде всего, я немного изменил #imgBg , установив max-width значение 100% и ширину на 1500px (идите так широко, как вы хотите) — так что это всегда работает по ширине. Что касается того, чтобы сделать его отзывчивым (это то, о чем вы спрашиваете) — я думаю, вам придется использовать media-query