Отображение перечисления к таблице с в спящем режиме аннотация

TL: DR - Просто установите top элемента с фиксированным позиционированием на 0, и он будет, ну, в общем, «зафиксирован в верхней части экрана браузера».

Сначала попробуйте запустить ваш код в качестве примера, чтобы было проще ответить на ваш вопрос. Вы можете смоделировать результат с помощью Codepen (мой личный фаворит) или встроенного фрагмента кода из stackoverflow (я вижу, вы знакомы с некоторыми инструментами, такими как выделение кода, следующим шагом будет симуляция кода, подобного Абед Путра сделал).

Я протестировал ваш код на CodePen и не мог понять, почему у него было это смещение, достаточно странно, когда я убрал #mission-statement-body, когда навигация вернулась наверх (браузеры справа).

В основном позиции типа «плавать вокруг моего браузера», такие как absolute и fixed, наследуют расположение от ближайшего родителя relative, но в вашем случае такого нет (поэтому он наследует от «бог знает что» ).

Таким образом, каждый раз, когда вы используете эти свойства позиционирования, пытайтесь установить определенные позиции (например, top, left, bottom или right). Не полагайтесь на расположение браузера по умолчанию, потому что они всегда вас разочаруют, это может выглядеть нормально в Chrome, но странно в Firefox.

Нажмите, чтобы увидеть код на CodePen

Некоторые другие замечания о вашем коде:

  • Старайтесь не использовать id s для установки правил CSS по нескольким причинам, но в основном они предназначены для очень специфических селекторов (например, JS-обработка), и любой компонент CSS должен быть воспроизводимым и расширяемым (у вас может быть 2 nav с, один фиксированный и один статический и с id с вам придется продублировать код или сделать несколько обходных путей, не считающихся лучшими практиками).
  • Старайтесь не использовать Helvetica, не только на большинстве компьютеров он не установлен, но они сильно отличаются от вашего дополнительного (Arial), и длина слов может быть проблемой, которую вы не увидите при разработке, как навигация, когда ломаются линии или кнопки, которые становятся большими в Helvetica, но не в Arial. (также Helvetica является платным шрифтом, если вы пытаетесь действительно использовать его, вам придется его купить)
  • Я думаю, что было бы лучше использовать margin или padding для relative позиционированных элементов. вместо расстояния top, использованного в #mission-statement-body. Кроме того, с ними вам не нужно устанавливать position

Надеюсь, что это помогло

28
задан Thierry-Dimitri Roy 9 April 2009 в 20:01
поделиться

3 ответа

Спящий режим ужасен в Enums. Это странный недостаток ORM. Самый простой способ обойти это - объявить свой Enum настраиваемым спящим типом. К счастью, Hibernate написал пример реализации, которую вы можете дословно зашифровать в своем приложении:

http://www.hibernate.org/265.html

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

17
ответ дан 28 November 2019 в 03:28
поделиться

Хотя это было далеко от идеала, мое решение этой проблемы заключалось в использовании EnumStringType и денормализованного обновляемого представления.

1
ответ дан 28 November 2019 в 03:28
поделиться

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

Может использоваться как

@Type(type = "ro.raisercostin.hibernate.EnumUserType", parameters = @Parameter(name = "type", value = "DealType"))
DealType dealType;

Я добавил реализацию ParameterizedType для поддержки переданного параметра.

public class EnumUserType implements UserType, ParameterizedType {

    private static final int[] SQL_TYPES = { Types.VARCHAR };
    private Class clazz = null;

    public EnumUserType() {
    }

    @Override
    public void setParameterValues(Properties parameters) {
        String className = (String) parameters.get("type");
        try {
            this.clazz = Class.forName(className);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("Couldn't get the class for name [" + className + "].", e);
        }
    }

    public int[] sqlTypes() {
        return SQL_TYPES;
    }

    public Class returnedClass() {
        return clazz;
    }

    public Object nullSafeGet(ResultSet resultSet, String[] names, Object owner) throws HibernateException,
            SQLException {
        String name = resultSet.getString(names[0]);
        Object result = null;
        if (!resultSet.wasNull()) {
            result = Enum.valueOf(clazz, name);
        }
        return result;
    }

    public void nullSafeSet(PreparedStatement preparedStatement, Object value, int index) throws HibernateException,
            SQLException {
        if (null == value) {
            preparedStatement.setNull(index, Types.VARCHAR);
        } else {
            preparedStatement.setString(index, ((Enum) value).name());
        }
    }

    public Object deepCopy(Object value) throws HibernateException {
        return value;
    }

    public boolean isMutable() {
        return false;
    }

    public Object assemble(Serializable cached, Object owner) throws HibernateException {
        return cached;
    }

    public Serializable disassemble(Object value) throws HibernateException {
        return (Serializable) value;
    }

    public Object replace(Object original, Object target, Object owner) throws HibernateException {
        return original;
    }

    public int hashCode(Object x) throws HibernateException {
        return x.hashCode();
    }

    public boolean equals(Object x, Object y) throws HibernateException {
        if (x == y) {
            return true;
        }
        if ((null == x) || (null == y)) {
            return false;
        }
        return x.equals(y);
    }
}
14
ответ дан 28 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: