Веб-браузер компилирует элементы CSS в алфавитном порядке

0
map.css({
    'zoom': zoom, 
    'left': map.width()/(2*zoom) - (point[0]/100)*map.width(),
    'top': map.height()/(2*zoom) - (point[1]/100)*map.height()

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

Теги:
internet-explorer

2 ответа

1

в первую очередь

Порядок свойств CSS является релевантным.

elementA {
    propA: valA,
    probB: valB
}
elementB {
    propB: valB,
    probA: valA
}

Оба элемента имеют одинаковые свойства CSS и отображаются равными.

во- вторых

Свойство CSS- zoom не является стандартным и, вероятно, имеет проблему при использовании с позиционированием. Способом преодоления этой проблемы является использование scale():

Сравните масштабирование и масштабирование абсолютно позиционированных элементов. 1

scale(), однако, требует префиксов браузера:

.zoomed-element {
    -webkit-transform: scale(.5);
       -moz-transform: scale(.5);
        -ms-transform: scale(.5); // IE 9
            transform: scale(.5);
}

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

<div style="position: absolute; top: 10px; left: 10px;">
    <div style="width: 100px; height: 100px; zoom: 2; background-color: red;">
</div>

сноска

1: Fiddles, заимствованные из стиля zoom css, не применяются к установленному абсолютному элементу div, а его дети в IE

  • 0
    @Jakrub спасибо за помощь, но это не помогло решить проблему в IE и сломалось в Chrome.
  • 2
    Просто вопрос, как, черт возьми, порядок свойств CSS может что-то изменить? Это просто бессмыслица, вы можете перемещать их по своему усмотрению (если, конечно, вы не применяете одно и то же свойство дважды), и оно остается тем же. Я думаю, что проблема в другом .
Показать ещё 1 комментарий
0

Как насчет этого?

var myFunnyZoomVariable = безотносительно;

map.css({
    'zoom': myFunnyZoomVariable,
    'left': map.width()/(2*zoom) - (point[0]/100)*map.width(),
    'top': map.height()/(2*zoom) - (point[1]/100)*map.height()
});
  • 0
    При удалении zoom из map.css масштабирует наш наложенный элемент, но не наш элемент карты. Мы ссылаемся на масштабирование в нескольких элементах.
  • 0
    хорошо, если вы ссылаетесь на разные масштабирования, вы можете поместить это в собственную переменную для каждого элемента, к которому применяется масштабирование. Это нехорошо, но должно работать, если нет никаких других факторов, препятствующих этому. Но я также не понимаю, почему атрибут zoom должен применяться первым. Во всяком случае, я изменил код.
Показать ещё 2 комментария

Ещё вопросы

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