CSS margin-top и top не связаны

0

У меня возникают проблемы со страницей, которая имеет плавающее фоновое изображение (абсолютно позиционированное), где изображение динамически изменяется с помощью javascript. В основном это большая галерея, которая меняется за портфолио:

У меня есть раздел разметки, который выглядит так:

<div class="content">
  <div class="content-container">
    <div class="content-image">
      <img id="galleryTarget" src="../images/main/source.jpg" class="image-resize" alt="background image"/>
    </div> 
    ...etc...

Здесь соответствующие классы CSS:

.image-resize {
    position: absolute;
    min-height: 750px;
    min-width: 1000px;
    width: 100%;
    left: 0;
    text-align: left;
    vertical-align: middle;
    margin-top: -25%;
    top: 25%;
}

.content-image {
    position: absolute;
    top: 0;
    left: 200px;
    width: 100%;
    min-height: 750px;
    max-height: 750px;
    min-width:1000px;
    overflow:visible;
    opacity: 0.5;
    z-index: 1;
}

.content-container {
    position: relative;
    min-height: 750px;
}

.content {
    position: absolute;
    top: 0;
    width: 100%;
    max-height: 750px;
    overflow: hidden;
    background: purple;
    z-index: -5;    
}

Все это абсолютно позиционируется так, что я могу поменять источник изображения на Javascript, а затем динамически изменить размер контейнера (фона), чтобы заполнить новый контент. Там минимальные границы, поэтому он всегда имеет размер.

То, что я пытаюсь сделать, - это привязать это изображение к точке CENTER, чтобы при изменении размера отображались интересные части изображения (редко в верхнем левом углу).

В инспекторе в хром я вижу, что top и margin-top не имеют одинакового значения, даже если они имеют одинаковое (процентное) значение. Что мне здесь не хватает?

Пример: top: 187.5px и margin-top: -389.5px. Похоже, что margin-top использует разрешение img-source, и top использует что-то для жизни меня, я не могу понять - я предполагаю min-height + offset на странице?

Любая помощь здесь будет оценена, это довольно большая часть дизайна, и я бы хотел, чтобы она была лучше, чем она есть.

Браузеры: Chrome Версия: 30.0.1599.66 м Android Chrome: 30.0.1599.82

  • 0
    похоже, что top это половина поля ... используйте calc () вместо abspos, если вам нужна только поддержка Chrome.
  • 0
    Это в конечном итоге будет кросс-браузер, это только начальная спецификация (Chrome быстрее отлаживать в моем опыте)
Показать ещё 2 комментария
Теги:

1 ответ

0

Это устраняет проблему в chrome - но я хотел бы знать, почему она использует 1000px в качестве базовой линии для поля вместо 750px устройства.

/*Hack of a vector similar to 50%*/
margin-top: calc(-50% * 0.75);
top: 50%;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню