2016-04-16 4 views
0

JSFiddle: https://jsfiddle.net/DTcHh/19451/Fixed Image На свитке Shifting Позиция

Я строй сайта, используя Bootstrap 3. На свитке у меня есть образ, который прилипает к странице, изменяя положение к фиксированному. Это работает, однако он всегда сдвигается с места, как только он становится неподвижным. Я знаю, что это имеет какое-то отношение к маржам (и я играл с пикселями, и это, похоже, практически решает проблему, левая маржа должна быть% для отзывчивого веб-сайта). Вот код:

HTML

<div class="row"> 
      <div class="col-sm-5"> 
       <h2 class="white">Some Text</h2> 
      </div> 
      <div class="col-sm-7"> 
       <img class="img-responsive screen-phone" src="img/phone.png"> 
      </div> 
</div><!--END ROW--> 

CSS

.screen-phone{ 
    max-width:300px; 
    margin-top:25px; 
    margin-left:25%; 
    z-index:999; 

} 

Javascript

$(document).ready(function(){ 

$(window).scroll(function() { 
    if ($(this).scrollTop()>1120){ 
     $('.screen-phone').css('position','fixed').css('top','0'); 
    }else{$('.screen-phone').css('position','static'); 
    }; 
}); 
}); 

ответ

0

Попробуйте

CSS

/* Latest compiled and minified CSS included as External Resource*/ 

/* Optional theme */ 
@import url('//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css'); 

.screen-phone{ 
    max-width:300px; 
    margin-top:25px; 
    //margin-left:25%; 
    z-index:999; 
float:right; 
} 

JavaScript

/* Latest compiled and minified JavaScript included as External Resource */ 

$(document).ready(function(){ 

    // var stickyPhone = ($#) 

    $(window).scroll(function() { 
     if ($(this).scrollTop()>500){ 
      $('.screen-phone').css('position','fixed').css('right','0'); 
     }else{$('.screen-phone').css('position','relative'); 
     }; 
    }); 
}); 

Я Удален запас левые и добавил поплавок права. Затем на JS i изменилось положение слева: 0. Это швы для работы.

+0

Это просто заставляет телефон переместил полностью от экрана, когда поставить на место и когда сделано в Fiddle, он по-прежнему сдвигается с начальной позиции. – user5854648

0

Я сделал несколько изменений, которые сделали его работу:

  1. Переместить имя класса в div элемента вместо img элемента
  2. сделать изменения CSS только при необходимости, используя булевы переменные
  3. Тест 500 пикселей был слишком длинным для размера текста. При вызове изменение размера из-за фиксированного изображения будет уменьшаться ниже 500, заставляя другое изменение, и так далее.

Смотрите обновленный jsfiddle: https://jsfiddle.net/DTcHh/19475/

+0

Это не мешает телефону перепрыгивать. Когда он попадает в точку, он все еще меняется. Это верно как в скрипке, так и на веб-сайте, на котором я тестирую это. – user5854648

+0

Тогда я не уверен, какое поведение вы ищете. См. Обновленный файл jsfiddle: https://jsfiddle.net/DTcHh/19484/. Я добавил больше текста и сделал тест на основе 500 пикселей.После прокрутки вниз на 500 пикселей телефон появится в фиксированном положении на экране. – yk11

+0

Изображение должно быть загружено в DIV подобно моей оригинальной скрипке. Когда он изменяется на «фиксированный», он должен просто придерживаться страницы. Поля не должны меняться. Поэтому он не должен выступать из-под места вверх, вниз, влево или вправо. Это аналогичная концепция, когда вы прокручиваете веб-страницу, а боковая колонка остается на месте с объявлениями. Они не сдвигаются, когда они встают на место, они просто встают на место. – user5854648

0

Хорошо, я понял это. Что нужно сделать, вы помещаете отдельный класс в содержащий DIV. Вы отдаете его слева: (независимо от вашего процентного значения здесь). Вы оставляете маркер слева от содержащего изображения. Если вы используете Bootstrap, как я, вам придется преодолевать проблемы с маркой, вы можете создать два класса, как я сделал, чтобы удалить границу строки и col-sm-7. В моем случае я сделал:

.screen-phone{ 
max-width:300px; 
margin-top:25px; 
/*Removed margin-left:25%*/ 
z-index:999; 

} 

.sticker{ 
left:25% 
} 

.zero-row{ 
margin:0; 
} 

.no-margin{ 
width:0; 
} 

HTML:

<div class="row zero-row"> 
     <div class="col-sm-5"> 
      <h2 class="white">Some Text</h2> 
     </div> 
     <div class="col-sm-7 no-margin sticker"> 
      <img class="img-responsive screen-phone" src="img/phone.png"> 
     </div> 
</div><!--END ROW--> 

Обновлено Fidde: https://jsfiddle.net/1chkghhq/1/

 Смежные вопросы

  • Нет связанных вопросов^_^