Плавный вывод прозрачного фона
Я просто пытаюсь найти способ использовать анимацию HTML5 с быстрым выводом в приложении для iOS, но не могу отбросить серый фон. Я думал, что это будет способ добавить анимацию и обойти проблемы хранения при использовании png на сетчатке iPad. Теперь я не могу сделать фон ясным. Что я должен делать?
6 ответов
В коде, который сгенерировал Swiffy, найдите backgroundColor и удалите его, включая его значение.
Попробуйте найти элемент со сплошным фоном и динамически изменить его на прозрачный, например:
document.getElementById('swiffycontainer').childNodes[1].style.background = "rgba(255, 255, 255, 0)";
или никому
document.getElementById('swiffycontainer').childNodes[1].style.background = "none";
Добавьте это к вашему CSS или что-то подобное.
#containerdivid svg > g > g > rect {
display: none;
}
Удаление элемента backgroundColor: не работало до тех пор, пока я не обнаружил, что Google нарушил эту возможность в текущей версии среды выполнения Swiffy. Если вы также измените:
SRC ="https://www.gstatic.com/swiffy/v5.2/runtime.js"
в
SRC ="https://www.gstatic.com/swiffy/v5.1/runtime.js"
вверху файла вы обнаружите, что прозрачный фон работает правильно (хотя, конечно, любые улучшения в библиотеке 5.2 больше не будут доступны).
РЕДАКТИРОВАТЬ: Майкл Прескотт указал, что это решение не будет работать надежно из-за несоответствия между версией конвертера Swiffy и временем выполнения. Альтернативное решение, которое не зависит от присутствия экспортера 5.1, - это использовать другие решения, предложенные здесь. Попробуйте добавить следующую функцию в скрипт. Он опрашивает, чтобы увидеть, когда объект Swiffy установил свой предпочитаемый цвет фона, а затем он его заменяет.
(function() {
var firstNode=document.getElementById('swiffycontainer').childNodes[1];
//firstNode.style.visibility = "hidden";
if (firstNode.style.background=="") {
setTimeout(arguments.callee, 10);
} else {
firstNode.style.background = "none";
//firstNode.style.visibility = "visible";
}
})();
Это, кажется, не показывает сбой, когда Swiffy сначала устанавливает сплошной фон, а затем его заменяют. Однако для большей уверенности вы можете разрешить закомментированным строкам скрывать первый узел, пока не будет установлена правильная прозрачность.
с уважением
Согласно http://css-tricks.com/override-inline-styles-with-css/, вы можете использовать этот CSS-хак
div[id=swiffycontainer] > div{
background-color: transparent!important;
}
Ничто из этого не сработало для меня (используя версию 5.2), решено установкой нового стиля:
<script>
var stage = new swiffy.Stage(document.getElementById('swiffycontainer'),swiffyobject);
stage.start();
</script>
<style>
div {background: url("../bgimg.jpg") repeat scroll 0 0 transparent !important;}
</style>