Это довольно близко к задаче XY . То есть, задаваемый вопрос заключается в том, как мутировать захваченную локальную переменную из лямбда. Но фактическая задача заключается в том, как подсчитать элементы списка.
По моему опыту, в 80% случаев возникает вопрос о том, как мутировать захваченный локальный изнутри лямбда, есть лучший способ продолжить. Обычно это связано с сокращением, но в этом случае техника управления потоком по индексам списка применяется хорошо:
IntStream.range(0, list.size())
.forEach(i -> list.get(i).setOrdinal(i));
Единственное пуленепробиваемое решение состоит в том, чтобы ваш элемент занимал четное количество пикселей. Если высота (или ширина) не делится на 2, он попытается отобразить ваш элемент на полпикселя, что приведет к размытости.
Firefox не имеет этой проблемы, потому что он поддерживает настоящий субпиксельный рендеринг. Таким образом, даже если ваш элемент имеет полпикселя, Firefox элегантно с ним справляется.
По моему опыту, Webkit обычно привязывает элементы к ближайшему пикселю - (например, при использовании свойства letter-spacing
) - поэтому странно, что он не ведет себя так же для translate
. 115]
Я всегда использую perspective: 1px;
, например:
{
margin: 50% 0 0 50%;
perspective: 1px;
transform: translate(-50%, -50%);
}
Поскольку я столкнулся с той же проблемой с субпикселями в Chrome, а в версии 64 он все еще не может обрабатывать значения преобразования субпикселей, я решил написать небольшой js-скрипт, который устраняет проблему с субпикселями. Вы можете найти его на github . Он просто округляет значение преобразования до полного пикселя.
Надеюсь, кто-то найдет это полезным!