Псевдоэлемент с позицией: исправлено неработающее в теге <button> в Firefox

У меня проблема. В Firefox - псевдоэлемент с position: fixed в кнопке тега, не закрывающей эту кнопку.

Пример

<button class='test'>lalal</button>

.test {
    position: relative;
}
.test::after {
    content: '';
    position: fixed;
    cursor: pointer;
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
    background-color: rgba(0,0,0,0.5);
    z-index: 1;
}

https://jsfiddle.net/xt9eLb8z/4/

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
0
49
1

Ответы 1

Не используйте position:fixed, используйте position:absolute.

В position:fixed элемент связан и имеет размер область просмотра, а не родительский элемент.

The element is removed from the normal document flow, and no space is created for the element in the page layout. It is positioned relative to the initial containing block established by the viewport, except when one of its ancestors has a transform, perspective, or filter property set to something other than none (see the CSS Transforms Spec), in which case that ancestor behaves as the containing block. (Note that there are browser inconsistencies with perspective and filter contributing to containing block formation.) Its final position is determined by the values of top, right, bottom, and left.

MDN

.test::after {
  content: '';
  position: absolute;
  cursor: pointer;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 1;
}

.test {
  position: relative;
}
<button class='test'>lalal</button>

Но в моем случае у меня должен быть псевдоэлемент над всеми блоками (например, фон для всплывающего окна). Поэтому я должен использовать position: fixed.

Kostiantyn 21.06.2018 20:05

Почему вы используете для этого псевдоэлемент. Непонятно, что вы пытаетесь сделать.

Paulie_D 21.06.2018 20:07

Другие вопросы по теме