ОК, поэтому, следя за изменениями и просматривая соответствующий пост, здесь есть много чего распаковать.Между вашим оригинальным закрытым вопросом и новым вопросом с правками я вижу одну (может быть, две?) Проблему, которую вы пытаетесь решить:
- Когда вы применяете фильтры, вFirefox кнопки теряют свою позицию.
- Вы (возможно?) Хотели бы, чтобы кнопки не были затронуты фильтром.
Я создал слегка измененные фрагменты, которые работают сВаш код и адрес обеих проблем:
По вопросу размещения кнопок:
function change()
{
document.getElementsByTagName('html')[0].classList.toggle('new-theme');
}
html {
height: 100%; /* Fixes the buttons losing position in firefox */
}
.new-theme {
filter: invert(100%) hue-rotate(180deg);
-webkit-filter: invert(100%) hue-rotate(180deg);
-moz-filter: invert(100%) hue-rotate(180deg);
-o-filter: invert(100%) hue-rotate(180deg);
-ms-filter: invert(100%) hue-rotate(180deg);
}
#fixedbutton {
position: fixed;
bottom: 20px;
right: 20px;
}
h1{
color:blue;
}
#anotherfixedbutton {
position:fixed;
bottom:20px;
left: 20px
}
<html>
<head>
</head>
<body>
<h1> Some text </h1>
<button id="fixedbutton" onclick="change()">CLICKME</button>
<button id="anotherfixedbutton">please let me sleep me here firefox</button>
</body>
</html>
Решением для кнопок, теряющих свою позицию в Firefox, было добавление height: 100%
к элементу html
.Немного странно, но похоже на ответ Темани Афифа на предполагаемую копию вашего первоначального вопроса ;в основном, потому что фильтр создает новый контекст содержащего блока, нам нужно внести некоторые корректировки.
Для исключения кнопок из эффекта фильтра:
function change()
{
document.getElementsByTagName('html')[0].classList.toggle('new-theme');
}
html {
height: 100%; /* Fixes the buttons losing position in firefox */
}
.new-theme {
filter: invert(100%) hue-rotate(180deg);
-webkit-filter: invert(100%) hue-rotate(180deg);
-moz-filter: invert(100%) hue-rotate(180deg);
-o-filter: invert(100%) hue-rotate(180deg);
-ms-filter: invert(100%) hue-rotate(180deg);
}
.new-theme #fixedbutton,
.new-theme #anotherfixedbutton {
filter: invert(100%) hue-rotate(180deg);
-webkit-filter: invert(100%) hue-rotate(180deg);
-moz-filter: invert(100%) hue-rotate(180deg);
-o-filter: invert(100%) hue-rotate(180deg);
-ms-filter: invert(100%) hue-rotate(180deg);
}
#fixedbutton {
position: fixed;
bottom: 20px;
right: 20px;
}
h1{
color:blue;
}
h2 {
color: orange;
}
#anotherfixedbutton {
position:fixed;
bottom:20px;
left: 20px
}
<html>
<head>
</head>
<body>
<h1> Some text </h1>
<h2> Some other text </h2>
<button id="fixedbutton" onclick="change()">CLICKME</button>
<button id="anotherfixedbutton">please let me sleep me here firefox</button>
</body>
</html>
Опять же, я не совсем уверен, что это был эффект, который вы искали.Но независимо от этого, проблема заключается в том, что цвет кнопок инвертирован не потому, что они выбраны селектором .new-theme
, а потому, что они содержатся в элементе .new-theme
, который имеет фильтрприменяется к нему.Однако, поскольку вы просто инвертируете фильтры, которые используете, вы можете инвертировать их снова для тех конкретных кнопок, когда они находятся внутри элемента .new-theme
, возвращая им их исходные оттенки.