2010-06-21 7 views
15

Я выполнил, но только FF и chrome перемещают текстовое поле 0px сверху и 0px слева, а в IE textarea находится в положении по умолчанию.Изменить стиль из GWT

Вот мой код:

public class MyGWT implements EntryPoint { 

    TextArea ta= TextArea.wrap(DOM.getElementById("t")); 

    public void onModuleLoad() { 

    ta.getElement().setAttribute("style", "position:absolute;top:0px;left:0px;"); 
    } 

} 

есть ли ошибка или как я могу изменить атрибут стиля программно из GWT ??

ответ

28

Не устанавливайте style через setAttribute. В JavaScript атрибут стиля фактически является массивом. Таким образом, в зависимости от того, насколько интеллектуальным является браузер и понимает, что вы хотите установить атрибуты стиля, он будет работать, установив style или не будет работать.

Вы должны установить индивидуальные атрибуты стиля через getElement().getStyle().setProperty(). Или используйте специальные методы, например: ta.getElement().getStyle().setPosition(Position.ABSOLUTE) или с помощью метода setProperty: ta.getElement().getStyle().setProperty("position", "absolute"). И то же самое для 2 других свойств. См. Класс Style, для каких конкретных методов поддерживаются.

+1

+1 Получил этот ответ на вопрос, задав Google: 'атрибут стиля gwt не установлен в ie' :) – jensgram

2

Как насчет использования классов стиля? Я имею в виду, вы можете написать класс стиля, как это:

.someClass { 
    position:absolute; 
    top:0px; 
    left:0px; 
} 

А затем добавить класс стиля к TextArea

ta.addStyleName("someClass"); 

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

+0

Это намного более аккуратный, менее подробный и расширяемый. Определенно, как идти – slonik

+0

Сопоставьте этот подход с CSSResource. Аккуратный и чистый. Затем вы можете использовать ta.addStyleName (CssResource.INSTANCE.someClass()); – StackOverflow