在具有 512mb 内存的设备上 Chrome for Android 中的渐变绘画问题
Gradient paint issue in Chrome for Android on device with 512mb memory
我有 Cordova 应用程序(使用 crosswalk-webview),它包含多个视图,有些视图具有滚动列表。此列表中的每一行在行尾都有渐变,以便平滑地隐藏文本。问题是:
我有这个标记和样式。
HTML:
<div class="view-block list-block" style="padding-top: 0px;">
<div class="view-block view-list">
<div>
<div class="row-wrapper status-row " style="touch-action: manipulation; -webkit-user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);">
<div class="middle-container">
<span class="name"><i class="icon-status icon-status-ok"></i> Звонящий Для Тестов</span><br>
</div>
</div>
:after
</div>
<div>
<div class="row-wrapper status-row " style="touch-action: manipulation; -webkit-user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);">
<div class="middle-container">
<span class="name"><i class="icon-status icon-status-off"></i> Емец Владимир Александрович</span><br>
<span class="sub-name">Программист</span>
</div>
</div>
:after
</div>
...
</div>
</div>
CSS:
.view-main .list-block {
position: absolute;
height: 100%;
width: 100%;
top: 0;
left: 0;
}
.view-block {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.view-main .view-list {
position: relative;
height: 100%;
width: 100%;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
z-index: 0; /* For stack context using when paint */
}
.view-list > div {
overflow: hidden;
position: relative;
margin-bottom: 0.2em;
}
.view-list > div .row-wrapper {
height: 3em;
padding: 0 0.5em 0 0.5em;
overflow: hidden;
position: relative;
}
.view-list > div .row-wrapper:after {
content: '';
position: absolute;
height: 3em;
width: 10%;
right: 0.5em;
top: 0;
background: #ffffff;
background: -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), to(#ffffff));
background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, #ffffff 100%);
background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #ffffff 100%);
}
如果我在 .view-main .view-list
上禁用 overflow-y
,渐变将正常绘制,但禁用此元素上的滚动。
如果模拟器有 1024mb 内存或 Android 版本 >= 5,渐变绘制正常。
如何解决这个问题?
这是 Chromium TRIM 项目中的错误,topic 在 Google 组中。
我的解决方案 - 将 --disable-low-end-device-mod
用于 crosswalk-webview。
我有 Cordova 应用程序(使用 crosswalk-webview),它包含多个视图,有些视图具有滚动列表。此列表中的每一行在行尾都有渐变,以便平滑地隐藏文本。问题是:
我有这个标记和样式。
HTML:
<div class="view-block list-block" style="padding-top: 0px;">
<div class="view-block view-list">
<div>
<div class="row-wrapper status-row " style="touch-action: manipulation; -webkit-user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);">
<div class="middle-container">
<span class="name"><i class="icon-status icon-status-ok"></i> Звонящий Для Тестов</span><br>
</div>
</div>
:after
</div>
<div>
<div class="row-wrapper status-row " style="touch-action: manipulation; -webkit-user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);">
<div class="middle-container">
<span class="name"><i class="icon-status icon-status-off"></i> Емец Владимир Александрович</span><br>
<span class="sub-name">Программист</span>
</div>
</div>
:after
</div>
...
</div>
</div>
CSS:
.view-main .list-block {
position: absolute;
height: 100%;
width: 100%;
top: 0;
left: 0;
}
.view-block {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.view-main .view-list {
position: relative;
height: 100%;
width: 100%;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
z-index: 0; /* For stack context using when paint */
}
.view-list > div {
overflow: hidden;
position: relative;
margin-bottom: 0.2em;
}
.view-list > div .row-wrapper {
height: 3em;
padding: 0 0.5em 0 0.5em;
overflow: hidden;
position: relative;
}
.view-list > div .row-wrapper:after {
content: '';
position: absolute;
height: 3em;
width: 10%;
right: 0.5em;
top: 0;
background: #ffffff;
background: -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), to(#ffffff));
background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, #ffffff 100%);
background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #ffffff 100%);
}
如果我在 .view-main .view-list
上禁用 overflow-y
,渐变将正常绘制,但禁用此元素上的滚动。
如果模拟器有 1024mb 内存或 Android 版本 >= 5,渐变绘制正常。
如何解决这个问题?
这是 Chromium TRIM 项目中的错误,topic 在 Google 组中。
我的解决方案 - 将 --disable-low-end-device-mod
用于 crosswalk-webview。