小编chr*_*isf的帖子

CSS百分比中的小数位数

好吧,我已经进行了广泛的搜索,并且只提出了轶事证据,表明CSS规范中没有推荐的标准行为来确定浮点数的精度.

NB我不是在询问众所周知的亚像素舍入问题.

我问的原因是IE似乎将基于百分比的浮点值舍入到小数点2位,而Webkit和Gecko至少允许3或甚至更多(我没有测试过).

例如:

li {
    width: 14.768%;
}
Run Code Online (Sandbox Code Playgroud)

在Chrome的Web Inspector或Firebug中进行检查时,<li>s的正确显示宽度为14.768%.但是,在IE开发工具(IE9/8/7模式)中,它们的宽度为14.76%.这导致实际的基于像素的值也完全消失.

任何人都可以对这种行为有所了解,或提供合适的解决方法吗?如果可能的话,我宁愿不必使用基于像素的值,因为内容需要是流体宽度.

我知道处理这么多的小数位是非常粗糙的,但是我很想知道这些浏览器中哪些是"正确的"?

编辑

Firefox 似乎在检查器中显示时使用正确的百分比值(未舍入到2个小数位),但在实际像素位置方面显示与IE相同的行为.

css rounding percentage

16
推荐指数
1
解决办法
1万
查看次数

`abbr` 元素的语义使用

在以下情况下,<abbr>标签在语义上肯定是合适的:

<p>The Olympic games coverage by the <abbr title="British Broadcasting Corporation">BBC</abbr> was highly praised.</p>

但是,在某些情况下,由于空间限制,我需要用省略号截断内容(而不是使用缩写缩写),并使用title属性来描述完整内容。

例如,假设“英国广播公司”变为“英国广播公司... ”。该<abbr>元素在语义上仍然是最正确的吗?

<abbr title="British Broadcasting Corporation">British Broadcas...</abbr>

笔记

我知道CSStext-overflow属性,但据我所知,它仅适用于单行文本,而我需要文本在适当的情况下自然换行。我也不是在寻找 jQuery/Javascript 解决方案,因为截断发生在后端。

html semantic-markup abbr

5
推荐指数
1
解决办法
374
查看次数

Javascript new Array和join()方法

受到这个流行演讲的启发,我想弄清楚与创建数组相关的一些问题.假设我正在创建新数组:

Array(3)

在控制台我得到:

[undefined, undefined, undefined]

这很明显.假设我正在加入该阵列:

Array(3).join()

作为回应我得到:

",,"

这也是可以理解的,因为这些是三个空字符串,用逗号分隔,我想.但是当我想要做的时候:

Array(3).join("lorem")

我得到的字符串只有两个重复的"lorem":

"loremlorem"

为什么有两个,而不是三个重复的那个词?

javascript

5
推荐指数
1
解决办法
1081
查看次数

jQuery Deferred/Promises动态数组没有以正确的顺序执行回调

感谢任何有关我在这里误解的内容的见解.我的要求如下:

我有一系列的网址.我想同时为每个URL发出一个AJAX请求,并在第一个请求完成后立即调用第一个回调.然后,如果第二个请求完成,请调用该回调,依此类推.

选项1:

for (var i = 0; i < myUrlArray.length; i++) {
    $.ajax({
        url: myUrlArray[i]
    }).done(function(response) {
        // Do something with response
    });
}
Run Code Online (Sandbox Code Playgroud)

显然这不起作用,因为无法保证响应将以正确的顺序完成.

选项2:

var promises = [];
for (var i = 0; i < myUrlArray.length; i++) {
    promises.push($.ajax({
        url: myUrlArray[i]
    }));
}
$.when.apply($, promises).then(function() {
    // Do something with each response
});
Run Code Online (Sandbox Code Playgroud)

这应该有效,但缺点是它会等待所有 AJAX请求完成,然后再触发任何回调.

理想情况下,我应该能够在完成后立即调用第一个回调,然后将第二个回调链接到每当收到响应时执行(或者如果已经解决则立即执行),然后是第三个,依此类推.

数组长度是完全可变的,并且在任何给定时间都可以包含任意数量的请求,因此只需对回调链进行硬编码就不是一种选择.

我的尝试:

var promises = [];
for (var i = 0; i < myUrlArray.length; i++) {
    promises.push($.ajax({
        url: myUrlArray[i] // …
Run Code Online (Sandbox Code Playgroud)

javascript jquery asynchronous promise jquery-deferred

5
推荐指数
2
解决办法
2849
查看次数