- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
考虑来自 David Nuon 的这个演示:
http://zunostudios.com/demos/css32014-demos/filters.html
正如 David 在他的帖子中指出的那样:
You'll notice that the more the sliders are to the right, the less responsive the page becomes.
这是真的。更改图像后,我看到我的 CPU 如何开始大量工作。
我自己无法回答的是,为什么在所有 css 修改之后页面仍然没有响应。就像所有的动画都是 2fps。
如果工作完成了,为什么还要继续工作?
编辑:在 xengravity 的帮助下,我可以看到也许在所有过滤器都向右之后,GPU 似乎以疯狂的速度执行以下操作:
1.- 获取原始图像。
2.- 修改它(数学计算、blabla 等)。
但总是从原始图像开始。也许这就是为什么它看起来如此缓慢......
编辑:将演示添加到片段中以供将来使用
var update_filter = function () {
var styles = [
'grayscale( ' + parseInt($('#grayscale').val()) * .01 + ')',
'blur( ' + $('#blur').val() + 'px)',
'sepia( ' + $('#sepia').val() + '%)',
'brightness( ' + parseInt($('#brightness').val()) * .01 + ')',
'contrast( ' + $('#contrast').val() * .1 + ')',
'hue-rotate( ' + $('#hue-rotate').val() * 3.6 + 'deg)',
'invert( ' + $('#invert').val() + '%)',
'saturate( ' + parseInt($('#saturate').val()) * .1 + ')',
'opacity( ' + parseInt($('#opacity').val()) * .01 + ')',
'drop-shadow( ' + (function (n) {
return '0px ' +
'0px ' +
n + 'px ' +
'black)'; }
)($('#drop-shadow').val()) ,
];
var styles = '-webkit-filter:\n' + styles.map(function (e) { return '\t' + e;} ).join('\n') + ';';
$('#image').attr('style', styles);
$('#code').val(styles);
};
$('#reset').click( function () {
$('#grayscale').val( $('#grayscale').data('default') );
$('#blur').val( $('#blur').data('default') );
$('#sepia').val( $('#sepia').data('default') );
$('#brightness').val( $('#brightness').data('default') );
$('#contrast').val( $('#contrast').data('default') );
$('#hue-rotate').val( $('#hue-rotate').data('default') );
$('#invert').val( $('#invert').data('default') );
$('#saturate').val( $('#saturate').data('default') );
$('#opacity').val( $('#opacity').data('default') );
$('#drop-shadow').val( $('#drop-shadow').data('default') );
update_filter();
});
$( 'input[type="range"]').change(update_filter );
update_filter();
body, html {
background: #fff;
}
.wrapper {
width: 800px;
height: 400px;
background: #fff;
border-radius: 5px;
position: relative;
margin: 60px auto 0 auto;
}
.controls {
background: #ddd;
width: 250px;
position: absolute;
right: 0;
bottom: 0;
top: 0;
}
.image {
background: url(transparency.png);
width: 550px;
position: absolute;
left: 0;
bottom: 0;
top: 0;
}
.controls {
padding: 0 0 0 0;
}
.controls li {
list-style: none;
margin: 0;
padding: 5px 15px;
border-bottom: 1px solid #aaa;
}
.controls li span {
font-size: 13px;
}
.controls li span::after {
content: '()';
}
.controls li input {
color: #333;
float: right;
}
#code {
position: absolute;
left:0;
right: 0;
bottom: -155px;
border:0;
font-family: monospace;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div class="wrapper">
<div class="image">
<img id="image" src="http://i.imgur.com/WdIGZ1t.png" alt="">
</div>
<div class="controls">
<ul class="controls"><li>
<span>blur</span>
<input type="range" id="blur" min="0" max="100" value="0" data-default="0">
</li>
<li>
<span>grayscale</span>
<input type="range" id="grayscale" min="0" max="100" value="0" data-default="0">
</li>
<li>
<span>drop-shadow</span>
<input type="range" id="drop-shadow" min="0" max="100" value="0" data-default="0">
</li>
<li>
<span>sepia</span>
<input type="range" id="sepia" min="0" max="100" value="0" data-default="0">
</li>
<li>
<span>brightness</span>
<input type="range" id="brightness" min="0" max="100" value="100" data-default="100">
</li>
<li>
<span>contrast</span>
<input type="range" id="contrast" min="0" max="100" value="10" data-default="10">
</li>
<li>
<span>hue-rotate</span>
<input type="range" id="hue-rotate" min="0" max="100" value="0" data-default="0">
</li>
<li>
<span>invert</span>
<input type="range" id="invert" min="0" max="100" value="0" data-default="0">
</li>
<li>
<span>saturate</span>
<input type="range" id="saturate" min="0" max="100" value="10" data-default="10">
</li>
<li>
<span>opacity</span>
<input type="range" id="opacity" min="0" max="100" value="100" data-default="100">
</li>
<li><button id="reset">Reset</button></li>
</div>
<textarea id="code" cols="20" rows="11"></textarea>
</div>
最佳答案
这个“应用程序”的主要问题是绘画。如果你应用了一些滤镜效果,或者甚至疯狂地使用 slider ,你实际上是在用非常适合 GPU 的计算量大的操作来杀死 CPU。它非常擅长这个东西。如果您使用时间轴工具并跟踪您的应用程序,您将看到大量的绿色条,这表明主线程 (CPU) 正在绘制和绘制。您需要做的是手动将使用这些滤镜效果的元素提升到一个层。您可以使用 transform: translateZ(0);
或新的 will-change: transform;
等一些 hack 来做到这一点,之后您将看到应用程序响应能力的巨大改进.但在 2012 年及以下一代的移动设备上,您可能会忘记良好的性能,这对他们来说太过分了。
尝试通过开发工具添加此代码并观察结果,如果不是更快请告诉我?
img#image {
transform: translateZ(0); /*for older browsers*/
will-change: transform;
}
关于jquery - CSS3 过滤器性能和 CPU 使用率 : Why do certain filters tax the CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29550422/
GROUP_CONCAT(if(type = 'tax',amount,NULL)) AS 'tax' 当我在查询中使用它时,它返回一个逗号分隔的值,如 53.00,42.34 我想检索这个值作为总和
Closed. This question is off-topic。它当前不接受答案。 想改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。 已关闭8
我有下面的代码可以从 paypal 获取 token ,但不知何故 paypal 一直向我发送错误消息,提示购物车商品总数与订单金额不符。我在这里做错了什么?
我正在尝试将我的税率设置为 21%。但是前端计算0%。 有人知道我在这里忘记了什么吗? 注意:BTW是TAX的翻译 最佳答案 您还必须在运输设置中设置原产地: 此外,检查您的产品是否有增值税类别:应税
我正在浏览 Turbo Tax 网站 (www.turbotax.com),结果显示,一旦您登录,只有中心面板发生变化,其他部分保持静态,整个页面永远不会进行整页回发。这是如何运作的 ?我意识到这可能
我有 2 个集合“交易”和“税收”。 模型示例为: Transaction { "_id" : ObjectId("5cff102b4ef90140801af1e9"), "total
在 PHP 中我做了一个简单的计算。在我们所在的地方,税费 (GST) 收取 10%。所以,我在我的 php 代码中做的是: $a=$_REQUEST["amount"]; // this conta
对于 WooCommerce,我使用的是 Traveler高级主题 我需要在旅游和酒店中停用 (TAX),我正在尝试为此使用此代码: add_filter( 'woocommerce_product_
因此,我有一个填充了产品的列表元素,我需要计算最终价格,但要做到这一点,我需要找到具有相同税费的女巫产品。 这样做我可以隔离它们,但是我怎样才能自动做到这一点呢?我的意思是,如果我不知道税费,我如何找
使用 Woocommerce 插件。 我得到此代码以根据买方角色添加税。 它工作正常,但税收仅适用于产品价格。我还需要对运费应用相同的税。 我想我需要使用另一个过滤器参数,但我不知道是哪个。 这是真正
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 5 年前。 Improve
SMF foo tax foo 我有一个来自网页的 html 源代码,上面给出了其中的一部分。现在我想获取 HREF仅当 tax 时的值?所
如何将“启用”、“无”设置为管理员中“状态”、“税种”字段的默认值? 最佳答案 以下是一些您可以明智地设置默认值的示例。我包括了一些额外的东西来预示你的下一个问题: UPDATE `eav_attri
我使用了 Taxcloud POST API https://api.taxcloud.com/1.0/TaxCloud/Lookup使用请求 NPM 包查找销售税。我刚刚使用 uuid NPM 包为
考虑来自 David Nuon 的这个演示: http://zunostudios.com/demos/css32014-demos/filters.html 正如 David 在他的帖子中指出的那样
如果我使用等于经常性付款金额的 INITAMT 发出请求,它会起作用。 但是如果我尝试对不同的 INITAMT(以及不同的 TAX)进行计费,我会收到此错误: Tax calculation mism
我正在开设一家商店,并且已经获得了产品价格。现在,我正在研究增值税问题,并在“销售”>“税收”下设置了税收详细信息,以应用 20% 的英国增值税税率。 产品目录中输入的价格均包含增值税,因此在“系统”
我想在 jquery Ajax 模板 中添加两个或更多的变量值(保存 XML 文件中的一些值)。 我正在尝试像 ${amount}+${tax} 这样的操作,结果我得到两个数字,例如 1000 + 1
我的网站上的税收计算有问题。 价格设置为含税价格。我为贸易客户设置了团体价格(也包括税)。如果我没有登录并以访客用户身份进行结帐,一切正常。 但是当我以贸易客户身份登录并转到购物车时,不含税和含税的值
我是网站站长工具的新手。我在网站站长工具中遇到 3 个错误: 1.2:我们在尝试访问您的站点地图时遇到错误。请确保您的站点地图符合我们的指南,并且可以在您提供的位置访问,然后重新提交。 *一般 HTT
我是一名优秀的程序员,十分优秀!