Jump to content
  • 0

Проблема в отображении фиксированных элементов в Chrome


TMGLUK
 Share

Question

Добрый день!

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

Вот пример простой: http://cssdesk.com/Gvpvg

Вот пример практический: http://cssdesk.com/mnMxs

Если кто сталкивался или знает, как это решить без применения js-костылей, то помогите пожалуйста. Судя по гуглу, с такой проблемой ещё никто не сталкивался.

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Посмотрите второй пример. Там показано, что я пытаюсь достичь — горизонтального переключения контента с помощью изменения позиции .wrapper. (Если поставить left: -2560px; то по центру окажется правая часть страницы).

Edited by TMGLUK
Link to comment
Share on other sites

  • 0

Вот по коду вообще не понятно, что вы хотите.

Картинку прикладывайте хоть что ли.

А вообще что то вы совсем не то делаете.

Посмотрите статьи:

http://tympanus.net/codrops/2012/01/30/page-transitions-with-css3/

http://tympanus.net/codrops/2012/12/11/fullscreen-pageflip-layout/

http://tympanus.net/codrops/2013/05/07/a-collection-of-page-transitions/

http://tympanus.net/codrops/2013/04/23/fullscreen-layout-with-page-transitions/

Там как раз, как мне кажется то, что вы хотите

Link to comment
Share on other sites

  • 0

Те способы не подходят. Мой способ правильный.

У меня конкретная проблема - как заставить гребаный хром отображать страницу нормально. Я пришлю более подробный пример.

Edited by TMGLUK
Link to comment
Share on other sites

  • 0

Вот пожалуйста пример: http://jsbin.com/UWENEzE/1/edit?output (в хроме естественно не работает). Попробуйте прокручивать страницу и нажимать на края.

При прокрутке центрального блока, боковые должны оставаться на месте, т.е. находится в position:fixed.

То есть проблема в том, что хром эти фиксированные элементы, которые по краям, отображает не относительно окна браузера (как должно быть), а по какой-то странной логике. Всё из-за смещённого элемента с position relative. (см. примеры в первом посте).

Я вижу решение только в эмуляции position:fixed через absolute на js, но мне очень не хотелось бы это делать.

Edited by TMGLUK
Link to comment
Share on other sites

  • 0

не пойму для чего это нужно

а сразу сделать .text{position:fixed}

да и чтобы горизонтального бегунка не было сделал бы размеры боковых элементов поменьше с overflow:hidden;

а так вообще не понятно, что из этого правильного способа должно получиться

Link to comment
Share on other sites

  • 0

не пойму для чего это нужно

а сразу сделать .text{position:fixed}

да и чтобы горизонтального бегунка не было сделал бы размеры боковых элементов поменьше с overflow:hidden;

а так вообще не понятно, что из этого правильного способа должно получиться

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

Горизонтальный бегунок естественно убирается. Это только пример. В реальном проекте куча css и js.

Раз никто помочь не может, а это естественно - проблема нигде не встречалась, то я буду использовать position:absolute, и эмулировать position:fixed на js.

Link to comment
Share on other sites

  • 0

Там ничего нет - пустые поля.

Вы только обязательно выложите, что получится.

Да, я уже сделал на js эмуляцию для chrome. Чуть позже выложу работающий пример. А когда сайт сделаем, дам ссылку на сайт.

Link to comment
Share on other sites

  • 0

Chrome Fix

CSS:

.chrome .main {
position:absolute;
top:0;
left:0;
}

JS:

if($.browser.webkit){
$('html').addClass('chrome');
var $window = $(window), $elem = $('.text>.main');
$window.scroll(function() {
$elem.css('top', $window.scrollTop() + 'px');
});

Примерно так. Chrome как всегда лажает - функция срабатывает с задержкой.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Алеся
      Подскажите, пожалуйста, как растянуть фоновую картинку, заключенную в div, на всю ширину вьюпорта? Сейчас она отображается посередине, по ширине макета. Указывала ширину 100%, 1200px, минимальную ширину 1200px - не работает.
      <div class="banner"> 
            <div class="container background-image">
            <div class="banner_text"></div>
            </div>
          </div>
      CSS:
      .background-image {
        background-image: url('/img/new_oranges.jpg');
        background-size: cover;
        height: 200px;
      }
    • By ilya.pokrov
      Добрый день.

      Появилась следующая проблема:
      При отображении сайта в любых браузерах - все работает корректно, кроме Google Chrome. Съезжает шапка сайта, а точнее то, что в css указывал позиционировать справа - располагается в левой части и закрывает логотип.

      Ну уж очень меня это напрягает. Не пойму, что нужно делать.

      Кто сталкивался с такой же проблемой?

      Сайт - ganzola.ru

      Заранее спасибо.
    • By gumuch
      Добрый день. Нуждаюсь в помощи/совете! 
      В корне сайта (html) создал блок с позиционированием, написал в нем номер телефона и почту. На большом мониторе блок отображается нормально, а вот если зайти через смартфон то данный блок налазит на картинку и я никак не могу это изменить..., игрался с позиционированием (absolute, fixed, relativ и т.д.) но получаю на выходе либо прикрепленный блок к верхнему левому краю либо он налазит на картинку. Подскажите, что я делаю не так? 
      Сам сайт: http://2metra.com/
      Вот код который я прописал:
       
    • By ioprst
      Привет. Проблема в следующем. Есть одна страничка, на которой две вкладки, на второй вкладке исполняется js. В firefox'e все как надо, запускаю localhost и на какой-бы вкладке изначально я не оказался, анимация svg (js выполняет) работает, после перехода с 2ой вкладки на первую и обратно, анимация также работает. Что происходит в Хроме: Если я запускаю страницу (перезапускаю) и оказываюсь на второй вкладке, то анимация есть, стоит перейти с 2ой вкладки на 1ю и обратно, анимация пропадает. Суть в том, что в хроме при любом переходе между вкладками js перестает работать, либо проблема в XMLHttpRequest. Привожу js код, который исполняется на второй вкладке:
      var svgDoc; var xhr; var c1_boolFlow = false; window.onload = function() { svgDoc = document.getElementById("cns2Id").contentDocument; var timer = setInterval(anim, 100); var timerPost = setInterval(setPost, 100); } function anim() { c1anim(); } // Функция отправки запроса function setPost() { xhr = new XMLHttpRequest(); var send = ["c1_boolFlow"]; xhr.open("POST", 'cgi-bin/getVars.py', true); xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8') xhr.onreadystatechange = onResponse; xhr.send(send); } // Функция обработки ответа function onResponse() { if (xhr.readyState != 4) { return; } var respJSON = JSON.parse(xhr.responseText); c1_boolFlow = respJSON.c1_boolFlow; } ...  
    • By мурамаса
      Добрый день, столкнулся с такой проблемой. Верстая страницу заключал изображения в тег <div> с определенным класом и в css, задаю им позицию какую хочу видеть у себя в браузере. например
      .content-bar2 { float: right; position: absolute; top: 300px; right: 50px; } Так вот когда я несколько элементов так размещаю, один над одним, то у меня в браузере все отоброжается нормально. Но открыв с другого компьтера, получилос так что одно изображение наезжает на другое, что это и с чем связано и как это вылечить. И если не сложно обьясните пожалуйста особенности position: absolute.
      Как я понимаю float и absolute вместе не работают ?
      Как я понимаю float и absolute вместе не работают ? 
      При том еще есть проблема, когда я уменьшаю окно браузера, контент как бы сжимается в непонятную хурму, друг на друга, как это исправить ?
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy