Вращающиеся интерактивные элементы в IE8 + - PullRequest
1 голос
/ 16 января 2012

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

Пример кода, который отображает эту проблему:

Содержимое HTML:

<html>    
    <head>
        <link rel="stylesheet" href="test.css"/>
        <script src="jquery.js"></script>
        <script src="test.js"></script>
    </head>
    <body>
        <div class="rotated">
            Element which is longer than it is wide...
        </div>
    </body>
</html>

Содержимое CSS:

.rotated {
    height: 15px; /* required for IE7 to perform rotation */
    filter: progid:DXImageTransform.Microsoft.Matrix(M11=0, M12=-1, M21=1, M22=0, sizingMethod='auto expand');
}

Содержимое JS:

jQuery(function($) {
    $('.rotated').click(function() {
        alert('You clicked within the original boundary');
    });
});

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

Я также пытался использовать progid:DXImageTransform.Microsoft.BasicImage(rotation=3); вместо матричного фильтра, однако это дает те же результаты.

Кто-нибудь сталкивался с этим впрошлое или у вас есть какая-либо информация, которая будет полезна в этом случае?

РЕДАКТИРОВАТЬ: Я повторил это на jsFiddle: http://jsfiddle.net/e46jD/

РЕДАКТИРОВАТЬ: Оказывается, я сгорел за то, что полагался на IE9 для обеспечения точной эмуляции IE8.Тестирование кода в реальной установке IE8 работает нормально.Итак, теперь единственная проблема с самим IE9.

Ответы [ 3 ]

0 голосов
/ 20 января 2012

Я достиг эффективного результата во всех браузерах, на которые нацелился, разделив правила CSS с помощью поддержки браузера и применяя классы с помощью условных комментариев для работы с IE.IE9 будет вращать элемент визуально в результате DXImageTransform.Microsoft.Matrix(M11=0, M12=-1, M21=1, M22=0, sizingMethod='auto expand'), но не будет вращать интерактивную ограничивающую рамку.После публикации этого вопроса я прочитал, что в IE9 уменьшена поддержка фильтров, поэтому я настроил его так, чтобы для IE7 / 8 он использовал фильтр, а для IE9 - -ms-transform.

Менее элегантно, но теперь это работает.

0 голосов
/ 11 июля 2013

это решило мою проблему во всех браузерах. Мой текст обрезался после поворота, мне помогли свойства position, top и padding. ширина 100% важна. Фильтр и преобразование мс является имп для IE

#rotationCSS    { 
    width:100%;
    font-size:1.3em;
    font-weight:bold;
    float:right;  
    -webkit-transform: rotate(90deg);  /* Chrome, Safari 3.1+ */
    -moz-transform: rotate(90deg);  /* Firefox 3.5-15 */
    -ms-transform: rotate(90deg)!important;  /* IE 9 */
    -o-transform: rotate(90deg);  /* Opera 10.50-12.00 */
    transform: rotate(90deg);  /* Firefox 16+, IE 10+, Opera 12.10+ */
    position: absolute;
    top: 20px;
    padding: 35px 20px 0px 10px;
    filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
}
0 голосов
/ 16 января 2012

Я попытался немного изменить вашу разметку, обернув ваш текст внутри дополнительного элемента <span>, таким образом

<div class="rotated">
    <span>Element which is longer than it is wide...</span>
</div>

, затем я соответственно изменил стиль (заметьте, я также изменил height: auto, потому что некоторые буквы были обрезаны)

.rotated { 
    border: 1px red solid;
    height: auto; /* required for IE7 to perform rotation */ 
    filter: progid:DXImageTransform.Microsoft.Matrix(
            M11=0, M12=-1, M21=1, M22=0, sizingMethod='auto expand'); 
}

span { display: block; }

и javascript, поэтому событие нажатия прикреплено к span

jQuery(function($) { 
    $('.rotated span').click(function() { 
        alert('You clicked within the original boundary'); 
    }); 
});

В IE8 вы можете нажать также в нижней областине охвачены персонажами.

См. Вилка: http://jsfiddle.net/wdbK8/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...