Переместить изображение на основе ширины окна

0

У меня чертовски время заставить это работать.

У меня есть абсолютно позиционированное изображение, справа: 0, вверху: 0, чтобы он штырял в правую сторону окна.

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

Вот мои текущие попытки:

$(window).on('load', function(){
    var $ww = $(window).width();
    moveImage($ww);
});

$(window).smartresize(function(){
    var $ww = $(window).width();
    moveImage($ww);
});

function moveImage($w){
    if($w <= 1863){
        var $p1img = $('.panel-1-image');   
        $pos = 1410 - $w;
        $p1img.css('right', '-' + $pos + 'px');
    }
}

.panel-1-image - это изображение.

Таким образом, изображение и контент слева от него имеют общую ширину 1410 пикселей. который на экране размером более 1863 пикселей выглядит отлично.

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

Я использую jQuery 1.7 и плагин jQuery smartresize здесь: http://www.paulirish.com/2009/throttled-smartresize-jquery-event-handler/

Что я делаю не так?

Скриншоты

Полный

Изображение 174551

Меньшие

Изображение 174551

Меньше всего

Изображение 174551

Край лупы никогда не должен перекрывать содержимое

скрипка

http://jsfiddle.net/o7thwd/YmQpt/

  • 0
    Этот вопрос ужасно неясен. То, что сказал Snaplemouton, вероятно, верно, вы можете использовать чистый CSS для этого. Мы не можем проверить эту теорию, хотя, поскольку у нас недостаточно вашего кода, jsFiddle был бы полезен
Теги:
image

7 ответов

1
Лучший ответ

Основываясь на математике, которую вы предоставили в своей функции.

function moveImage($w){
  if($w <= 1863){
    var $p1img = $('.panel-1-image');   
    $pos = 1410 - $w;
    $p1img.css('right', '-' + $pos + 'px');
  }
}

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

Эта функция будет работать:

function moveImage($w){
  if($w <= 1863){
    var $p1img = $('.panel-1-image');   
    $pos = 1864 - $w;
    $p1img.css('right', '-' + $pos + 'px');
  }
}
  • 0
    спасибо за это и за чтение требований в вопросе.
  • 0
    Абсолютно рад, что смог помочь.
4

Вы можете использовать

@media screen and (max-width: 1410px){
    //Add CSS here
}

Просто добавьте новый CSS, чтобы либо изменить размер вашего изображения, переместить его, отобразить: ни один или что-то вроде CSS, который вам нужно применить на нем в соответствии с вашими потребностями.

Вам не нужно javascript, если вы не хотите делать то, что CSS не может сделать.

Редактировать: после публикации вашей скрипки, я считаю, что это то, что вы искали: FIDDLE

В принципе, вам просто нужно поместить изображение в контент и установить стиль вправо: -360px;

В конце концов, нет необходимости в Jscript. Надеюсь, это то, что вам нужно.

Редактировать # 2: поцарапать, что, перекрывая остальную часть содержимого, дайте мне посмотреть, смогу ли я это исправить.

Редактировать # 3: Это должно сделать трюк сейчас... Так как у меня нет CSS в скрипке, вот скриншот того, что я сделал.

Я удалил z-индекс из содержимого панели

Изображение 174551

  • 0
    пожалуйста, перечитайте мой вопрос. Я специально заявляю, что я изменяю размер окна ... и мне нужно, чтобы изображение двигалось дальше прямо на событии изменения размера ... поверх ... требования меньше 1863, а не 1410 -1
  • 1
    Тогда вы можете написать max-width: 1863px. Это было немного запутанно с размером 1410px в контенте. Если бы вы могли предоставить предварительный просмотр или jsFiddle вашего кода, это помогло бы лучше понять. Обычно такие проблемы могут быть решены с помощью CSS и редко требуют Jscript. Вы пытаетесь сохранить изображение справа от какого-либо контента? Вы пытаетесь отодвинуть его от контента? Остальная часть контента уменьшается?
Показать ещё 4 комментария
1

Из вашего вопроса и комментариев видно, что ваш образ находится внутри элемента вашего html, который позиционируется относительно. В этом случае ваше изображение будет абсолютно помещено в его родительский объект (относительный объект). Этот пост в CSS Tricks объясняет это хорошо. Все, что вам нужно сделать, это перемещать изображение за пределы его контейнера, и оно должно работать.

(Я бы опубликовал это как комментарий к ответу @snaplemouton, но у меня пока нет репутации.)

1

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

Изменить строку:

$p1img.css('right', '-' + $pos + 'px');

к этому:

$p1img.css({'right':'-' + $pos + 'px'});

и он должен работать.

  • 0
    Такого рода это делает. Я определенно двигаюсь сейчас, но я думаю, что математика выключена. это нормально, если я снимаю ссылку, чтобы показать?
  • 0
    Вопрос вроде неясен, как уже упоминалось другими. Не могли бы вы предоставить jsFiddle свой код и пояснения, чтобы помочь нам понять, чего именно вы пытаетесь достичь?
1

Не могли бы вы использовать ширину, установленную для определенного процента?

В противном случае просто проверьте ширину браузера и соответствующим образом измените. У вас есть скриншот или jsfiddle для дальнейшего уточнения ваших намерений?

И почему бы не использовать jquery resize()? (http://api.jquery.com/resize/)

  • 0
    Мне не нужно менять размеры изображения
  • 0
    Вы можете использовать фоновое изображение. установить фон тела как url ("IMG-LINK") без повтора с фиксированным правым центром / содержать #FFFFFF
0

Решение @snaplemouton является наилучшим решением.

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

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

Пожалуйста, взгляните на эту статью: http://css-tricks.com/css-media-queries/

Медиа-запросы позволяют легко изменять css вашего контента на основе размера браузера и даже типа носителя, такого как мобильный и т.д.

Так как snaplemouton, упомянутый выше:

@media screen and (max-width: 1410px){
    .panel-image-1{
        width: 50%;
        height: 50%;
    }
}

В основном говорит, что если экран меньше 1410 пикселей, измените мое "детективное изображение" на 50% ширину и 50% высоты.

Кроме того, ваше изображение не должно быть тегом изображения. Если вы используете изображение строго для дизайна, это не добавляет ценности для контента, вы должны включить его через css, а не html.

  • 0
    Понравился за предложенную правильную семантику, приятно.
  • 0
    Это хорошее объяснение того, почему плохо использовать javascript, когда это возможно с помощью CSS. Единственное, что я мог бы добавить, это то, что экран @media в этом случае следует использовать для поддержки мобильных устройств, или если изображение слишком велико при определенном размере, чтобы соответствовать тому, что необходимо. Не знаю, почему кто-то отрицает тебя, поэтому я исправил это неправильно.
Показать ещё 1 комментарий
-1

Вариант один:

body{
position:relative;
}
img{position:absolute;right:0px;bottom:0px;}

Теперь просто управляйте окном (телом), как вы хотите, и изображение будет следовать

Второй вариант:

body{background-image:[your image]; background-position:90% 90%; background-size:10% 10%;}

Вам нужно будет снова управлять позиционированием окна/тела, как вы хотите. И измените проценты в зависимости от размера, которым вы хотите, чтобы изображение было.

Ещё вопросы

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