2013-12-10 3 views
2

Я пишу отзывчивый сайт Wordpress. Я использую шаблон темы костей. Система сетки в целом работала довольно хорошо на большинстве сайтов, но я обнаружил, что для конкретной страницы мне нужно различное количество столбцов на разных размерах экрана.Ошибка Safari nth-child

Чтобы сделать это, я использовал немного, что СКС выглядит следующим образом:

(base media query) 
section{ 
     display:table; 
     float:left; 
     margin-left:0; 
     width:100%; 
} 

(media query for 768 px and above) 
section{ 
     height:150px; 
     width:48.618784527%; 
     &:nth-child(3n+1), &:nth-child(2n){ 
       margin-left:2.76243%; 
     } 
     &:nth-child(2n+1){ 
      margin-left:0; 
     } 
     text-align:right; 
} 
(media query for 1030px and above) 
.pracareas{ 
     section{ 
       width:31.491712705%; 

       &:nth-child(2n+1){ 
         margin-left:2.76243%; 
       } 
       &:nth-child(3n+1){ 
         margin-left:0; 
       } 
     } 
} 

И HTML, как этот

<div class="pracareas"> 
    <section>... content</section> 
    <section>... content</section> 
    <section>... content</section> 
    <section>... content</section> 
</div> 

Это прекрасно работает на настольном браузере и Android. Но на сафари я получаю что-то вроде этого:

safari problem

Что действительно странно, что, если я обновить и/или вращать Ipad в портретном или наоборот, я получаю это:

safari fixed

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

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

ответ

1

Это потому, что не все браузеры отображают десятичные значения ширины в процентах одинаково.

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

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

Смотреть это: Are the decimal places in a CSS width respected?

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

+0

Любая идея, почему она исправляет себя при вращении/обновлении устройства? Кроме того, разница настолько велика, что я не могу представить ее ошибку округления ... –

+0

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

+1

Эй, я думаю, вы правы в том, что это ошибка округления, описанная здесь http://css-tricks.com/percentage-bugs-in-webkit/. Я фактически исправил это, просто вернув второй элемент вправо и отказавшись от нескольких разных макетов столбцов. –

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