2013-02-09 2 views
1

Я делаю сайт с множеством абсолютно позиционированных элементов. Я их содержал в «обложке страницы», которая сосредоточена на странице. Он относительно расположен так, что содержащиеся элементы расположены относительно него. Некоторые элементы на странице являются привязками к другим страницам и на: hover, эти элементы переходят в другое состояние, из-за чего они выглядят снятыми со страницы с использованием масштабного преобразования и увеличенной тени окна.Проблема с абсолютно позиционированными элементами и переходами CSS

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

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

Вот некоторые урезанная код:

HTML:

<body> 
    <div id="page-wrap"> 

     <a class="card" href="text.html"><div class="vert"><div class="card-content"> 
      Here is<br/>some text 
     </div></div></a> 

     <a class="card" href="somemore.html"><div class="vert"><div class="card-content"> 
      Here is<br/>some more text 
     </div></div></a> 

     <a class="card" href="evenmore.html"><div class="vert"><div class="card-content"> 
      Here is<br/>even more text 
     </div></div></a> 

    </div> 
</body> 

CSS:

body { 
    background: hsl(60, 80%, 90%); 
} 

#page-wrap { 
    margin: 0 auto; 
    position: relative; 
    width: 800px; 
} 

.card { 
    background: hsl(80, 0%, 97%); 
    box-shadow: 0 1px 7px hsla(0,0%,0%,.2); 
    display: table; 
    height: 150px; 
    margin: 0px; 
    position: absolute; 
    width: 300px; 
    -webkit-transition: all 0.2s linear; 
} 

.vert { 
    display: table-cell; 
    margin 0px; 
    padding: 0px; 
    vertical-align: middle; 
    width: 100%; 
} 

.card-content { 
    font: 40px 'Annie Use Your Telescope', cursive; 
    margin: 0px; 
    text-align: center; 
    width: 100%; 
} 

a.card { 
    background: hsl(120, 90%, 35%); 
    color: hsl(60, 80%, 90%); 
    text-decoration: none; 
    text-shadow: -2px 2px hsl(60, 80%, 35%); 
    z-index: 3; 
} 

a:hover { 
    box-shadow: 0 0 40px 15px hsla(0,0%,0%,.3); 
    -webkit-transform: scale(1.2); 
} 

ответ

1

добавить -webkit-backface-visibility: hidden; в .card.

Уже ответил here.

+0

Ты спасатель жизни. Спасибо, что нашли это. Я везде искал решение. – SethGunnells

0

не был в состоянии воспроизвести проблему, кажется, вы должны иметь. Может быть, пример jsfiddle.net был бы хорош?

При использовании HTML & СМЧ дивы укладываются друг на друга, убрана position: absolute; из .card и сделал их float:left. Там не было никаких проблем, затем снова и снова пытались добавить top: и left: значениям в divs, и единственная проблема, с которой я столкнулся, заключалась в том, что все divs после были выше, добавлено z-index:999 на .card: hover и все казалось работать просто отлично.

Попробуйте разместить ссылку jsfiddle.net, и я попытаюсь еще раз взглянуть на нее.

+0

JSFiddle of it [здесь] (http://jsfiddle.net/mpUJh/). Он не отображается в окне результатов, но если вы скопируете HTML в файл и поместите CSS в блок «