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
с вам придется продублировать код или сделать несколько обходных путей, не считающихся лучшими практиками). margin
или padding
для relative
позиционированных элементов. вместо расстояния top
, использованного в #mission-statement-body
. Кроме того, с ними вам не нужно устанавливать position
Надеюсь, что это помогло
Спящий режим ужасен в Enums. Это странный недостаток ORM. Самый простой способ обойти это - объявить свой Enum настраиваемым спящим типом. К счастью, Hibernate написал пример реализации, которую вы можете дословно зашифровать в своем приложении:
http://www.hibernate.org/265.html
Они даже включают инструкции по его использованию. Это шаблон, который я использую всякий раз, когда у меня возникает необходимость сохранять перечисления.
Хотя это было далеко от идеала, мое решение этой проблемы заключалось в использовании EnumStringType и денормализованного обновляемого представления.
Я создал аналогичный класс, подобный тому, который предлагает спящий режим, только он настраивается, и нет необходимости создавать новый тип только для этого постоянства.
Может использоваться как
@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);
}
}