【问题标题】:linear-gradients not working in mobile web browsers线性渐变在移动网络浏览器中不起作用
【发布时间】:2012-07-11 20:56:21
【问题描述】:

我正在编写一个移动网络应用程序,我想知道是否有人可以帮助我理解和修复这些线性渐变,以便它们在 Safari-mobileAndroid-browser 中都有效。

我相信我正确使用了每个供应商前缀,我什至提供了备用背景颜色,但是每当我在移动设备上查看应用程序时,应用渐变背景的元素是透明的。换句话说,背景是透明的,渐变不会显示在移动设备上。意思是,即使是后备颜色也不起作用。

更奇怪的是它们(渐变)出现在 android 和 iOS 的移动模拟器上。

有人可以帮我修复这些渐变,以便它们可以在桌面和移动设备上使用,还可以教我如何使用后备背景颜色和背景图像?

我非常感谢任何和所有的帮助!

这是我目前所拥有的:

background:#fff;
background:transparent -ms-linear-gradient(top, rgba(255,255,255,.65), rgba(255,255,255,.9));
background:transparent url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSI1MCUiIHkxPSIxMDAlIiB4Mj0iNTAlIiB5Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjY1Ii8+CjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjkiLz4KICAgPC9saW5lYXJHcmFkaWVudD4KCjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJ1cmwoI2hhdDApIiAvPgo8L3N2Zz4=);
background:transparent -o-linear-gradient(90deg, rgba(255,255,255,.65) 0%, rgba(255,255,255,.9) 100%);
background:transparent -moz-linear-gradient(90deg, rgba(255,255,255,.65) 0%, rgba(255,255,255,.9) 100%);
background:transparent -webkit-gradient(linear, 0%, 0%, 0%, 100%, from(rgba(255,255,255,.65), to(rgba(255,255,255,.9));
background:transparent -webkit-linear-gradient(90deg, rgba(255,255,255,.65) 0%, rgba(255,255,255,.9) 100%);
background:transparent linear-gradient(90deg, rgba(255,255,255,.65) 0%, rgba(255,255,255,.9) 100%);

提前致谢!

【问题讨论】:

  • 如果你的平面后备颜色没有出现,听起来浏览器“认为”它正在应用其中一种渐变,但没有正确渲染它。也许尝试删除除特定设备之外的所有渐变(例如,在 Mobile Safari 上仅尝试 -webkit-linear-gradient())并查看它是否呈现。
  • @daGUY 我只尝试了 -webkit-linear-gradient() ,然后单独尝试了 -webkit-gradient ,两者都产生了相同的结果。浏览器似乎认为它正确显示了这两个,但事实并非如此。
  • 记住你给标记的问题加点

标签: android css ios mobile


【解决方案1】:

这应该适用于刚刚测试过的所有浏览器(甚至是移动浏览器):

#element {
    background: -moz-linear-gradient(black, transparent); /* FF 3.6+ */  
    background: -ms-linear-gradient(black, transparent); /* IE10 */  
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #000000), color-stop(100%, #ffffff)); /* Safari 4+, Chrome 2+ */  
    background: -webkit-linear-gradient(black, transparent); /* Safari 5.1+, Chrome 10+ */  
    background: -o-linear-gradient(black, transparent); /* Opera 11.10 */  
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#000000', endColorstr=transparent); /* IE6 & IE7 */  
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#000000', endColorstr=transparent)"; /* IE8+ */  
    background: linear-gradient(black, transparent); /* the standard */  
    z-index: 1;
}

在浏览器上查看这两个不错的 CSS 网站:

希望对你有帮助!

【讨论】:

  • 我所做的只是用我的开始颜色和结束颜色替换颜色,但它不起作用(我现在在桌面和移动浏览器中都获得了透明填充)。我有一种感觉,这是因为我的颜色是 rgba 值。我想我要回到透明PNG图像作为背景......
  • 很高兴它有帮助,在小提琴中我刚刚更新我使用了你需要的透明度。
  • 桑切斯哦,好的,谢谢你的小提琴。这有助于解释一些如何使颜色变为透明渐变:-)
  • @user1518176 没问题,请记住,如果解决方案对您有帮助,您可以投票赞成,这样我们就可以互相帮助,欢迎使用 stackoverflow!
  • @FarzadA 抱歉耽搁了,还不行吗?你用的是什么浏览器?
【解决方案2】:

至少在移动 Safari 中,不能使用关键字 transparent,而必须使用 rgba(255,255,255,0)。证明:https://developer.apple.com/library/archive/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Gradients/Gradient.html

搜索透明,你甚至会在他们的官方文档中看到,他们使用rgba作为透明颜色。

【讨论】:

  • 这对于带有 firefox 和 chrome 的 iOS 14.4 中的透明关键字仍然适用。此修复工作 +1
【解决方案3】:

属性透明有必要吗?

见:http://www.colorzilla.com/gradient-editor/

【讨论】:

  • 我使用 transparent 关键字的唯一原因是如果接受了其中一种渐变方法,则覆盖备用背景颜色。我删除了关键字,但仍然得到相同的结果。移动设备中的透明度而不是渐变。
猜你喜欢
  • 2016-06-17
  • 1970-01-01
  • 2011-11-24
  • 2021-07-17
  • 1970-01-01
  • 2011-11-10
  • 2011-04-27
  • 2016-08-14
  • 2015-08-25
相关资源
最近更新 更多