带有小 JS 脚本的背景图像不透明度不适用于 iOS

迈克尔·埃德斯通

我有一些简单的标记和 CSS,可以在背景图像上生成一个稍微透明的彩色屏幕。添加了一个小脚本,它允许在添加新类并从纯色过渡到透明之前完全加载背景图像。

在桌面浏览器上看起来不错,但是问题是不透明性似乎在我的iOS设备(可能还有其他设备)上不起作用。它只是纯色,没有可见的背景图像。我不太擅长 JS,所以我认为问题出在那里,但可能是 CSS。

这是一个 JSFiddle,代码也嵌入在下面。提前致谢; 任何帮助是极大的赞赏。

(function(el) {
    el.forEach(function(e) {
        var style = e.currentStyle || window.getComputedStyle(e, false),
            bi = style.backgroundImage.slice(5, -2);
        var img = new Image();
        img.onload = function() {
            e.classList.add('loaded');
        }
        img.src = bi;
    });
})(document.querySelectorAll('.title-area'));
.title-area * {
    position: relative;
    color: #fff;
    padding: 5px;
}

.title-area {
    background-color: #d9554c;
    background-size: cover;
    background-position: 50%;
    position: relative;
    background-image: url(https://unsplash.it/1000/500?image=206);
}

.title-area::before {
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    background: #d9554c;
    opacity: 1;
    transition: opacity 0.5s;
}

.title-area.loaded::before {
    opacity: 0.5;
    transform: translateZ(0);
}
<div id="content" class="title-area title-area-3">
    <div class="title-area-wrapper">
        <div class="title-area-content constrain">
            <h2 class="sub-header portfolio-header">Content header</h2>
        </div>
    </div>
</div>

编辑:显然 javascript 有一些缺陷。当使用 like this 时没有问题:

(function(el){
  el.forEach(function(e) {
    var style = e.currentStyle || window.getComputedStyle(e, false),
    bi = style.backgroundImage.slice(4, -1).replace(/["|']/g, "");
    var img = new Image();
    img.onload = function() { e.classList.add('loaded'); }
    img.src = bi;  
  });
})(document.querySelectorAll('.title-area'));
.title-area * {
    position: relative;
    color: #fff;
    padding: 5px;
}

.title-area {
    background-color: #d9554c;
    background-size: cover;
    background-position: 50%;
    position: relative;
    background-image: url(https://unsplash.it/1000/500?image=206);
}

.title-area::before {
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    background: #d9554c;
    opacity: 1;
    transition: opacity 0.5s;
}

.title-area.loaded::before {
    opacity: 0.5;
    transform: translateZ(0);
}
<div id="content" class="title-area title-area-3">
    <div class="title-area-wrapper">
        <div class="title-area-content constrain">
            <h2 class="sub-header portfolio-header">Content header</h2>
        </div>
    </div>
</div>

迈克尔·埃德斯通

显然 JS 有几个问题。使用这个 Javascript 可以解决这个问题。

(function(el){
  el.forEach(function(e) {
    var style = e.currentStyle || window.getComputedStyle(e, false),
    bi = style.backgroundImage.slice(4, -1).replace(/["|']/g, "");
    var img = new Image();
    img.onload = function() { e.classList.add('loaded'); }
    img.src = bi;  
  });
})(document.querySelectorAll('.title-area'));
.title-area * {
    position: relative;
    color: #fff;
    padding: 5px;
}

.title-area {
    background-color: #d9554c;
    background-size: cover;
    background-position: 50%;
    position: relative;
    background-image: url(https://unsplash.it/1000/500?image=206);
}

.title-area::before {
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    background: #d9554c;
    opacity: 1;
    transition: opacity 0.5s;
}

.title-area.loaded::before {
    opacity: 0.5;
    transform: translateZ(0);
}
<div id="content" class="title-area title-area-3">
    <div class="title-area-wrapper">
        <div class="title-area-content constrain">
            <h2 class="sub-header portfolio-header">Content header</h2>
        </div>
    </div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用js更改背景图像不透明度而不影响前景图像

来自分类Dev

使用插件将所有背景图像的不透明度设置为0

来自分类Dev

增量不透明度,需要恒定的不透明度,带有Drawable的图像视图

来自分类Dev

有关不透明度滑块的建议(纯CSS,无JS)

来自分类Dev

Sass的背景不透明度没有RGBA

来自分类Dev

:not(:hover)不适用于不透明度

来自分类Dev

背景图像适用于 CSS 但不适用于 Webpack 的 JS

来自分类Dev

如何使用Magick ++将具有透明背景的png图像设置为不透明度

来自分类Dev

如何创建具有适当不透明度的UITextField附件视图iOS7,甚至复制键?

来自分类Dev

带有文本的翻转图像上的 CSS 不透明度,但文本上的不透明度没有变化

来自分类Dev

如何调整CSS背景图片的不透明度,而不是带有图标覆盖层的单选按钮

来自分类Dev

带有fabric js的画布中的新图像不适用于chrome

来自分类Dev

iOS AlertController 背景的默认不透明度是多少?

来自分类Dev

Java:使不透明度仅适用于JPanel而不适用于组件

来自分类Dev

CSS不透明度不适用于chrome,但适用于firefox

来自分类Dev

将 Three.js 背景更改为不透明度 .5

来自分类Dev

使用鼠标指针下的JS或CSS更改图像不透明度?

来自分类Dev

React js 应用程序具有相同的文件夹图像,但在 ios png 图像中显示 alpha 透明度问题

来自分类Dev

CSS / JS:更改滑动时的不透明度

来自分类Dev

Velocity.js //不透明度问题

来自分类Dev

THREE.js中材料的不透明度

来自分类Dev

背景图像不透明度问题

来自分类Dev

背景图像不透明度问题

来自分类Dev

CSS clear:两者都不适用于带有背景图像的表格单元吗?

来自分类Dev

有没有办法设置fullScreenCover背景不透明度?

来自分类Dev

Famo.us-如何创建具有背景不透明度而不是文本的表面

来自分类Dev

具有不透明度的BottomNavigationView背景色无法正常工作

来自分类Dev

有色背景图像不适用于 Bootstrap

来自分类Dev

CSS不透明度转换不适用于添加类

Related 相关文章

  1. 1

    使用js更改背景图像不透明度而不影响前景图像

  2. 2

    使用插件将所有背景图像的不透明度设置为0

  3. 3

    增量不透明度,需要恒定的不透明度,带有Drawable的图像视图

  4. 4

    有关不透明度滑块的建议(纯CSS,无JS)

  5. 5

    Sass的背景不透明度没有RGBA

  6. 6

    :not(:hover)不适用于不透明度

  7. 7

    背景图像适用于 CSS 但不适用于 Webpack 的 JS

  8. 8

    如何使用Magick ++将具有透明背景的png图像设置为不透明度

  9. 9

    如何创建具有适当不透明度的UITextField附件视图iOS7,甚至复制键?

  10. 10

    带有文本的翻转图像上的 CSS 不透明度,但文本上的不透明度没有变化

  11. 11

    如何调整CSS背景图片的不透明度,而不是带有图标覆盖层的单选按钮

  12. 12

    带有fabric js的画布中的新图像不适用于chrome

  13. 13

    iOS AlertController 背景的默认不透明度是多少?

  14. 14

    Java:使不透明度仅适用于JPanel而不适用于组件

  15. 15

    CSS不透明度不适用于chrome,但适用于firefox

  16. 16

    将 Three.js 背景更改为不透明度 .5

  17. 17

    使用鼠标指针下的JS或CSS更改图像不透明度?

  18. 18

    React js 应用程序具有相同的文件夹图像,但在 ios png 图像中显示 alpha 透明度问题

  19. 19

    CSS / JS:更改滑动时的不透明度

  20. 20

    Velocity.js //不透明度问题

  21. 21

    THREE.js中材料的不透明度

  22. 22

    背景图像不透明度问题

  23. 23

    背景图像不透明度问题

  24. 24

    CSS clear:两者都不适用于带有背景图像的表格单元吗?

  25. 25

    有没有办法设置fullScreenCover背景不透明度?

  26. 26

    Famo.us-如何创建具有背景不透明度而不是文本的表面

  27. 27

    具有不透明度的BottomNavigationView背景色无法正常工作

  28. 28

    有色背景图像不适用于 Bootstrap

  29. 29

    CSS不透明度转换不适用于添加类

热门标签

归档