如果我像这样设置div的CSS margin属性:
div { margin-left: auto; margin-right: auto; }
Run Code Online (Sandbox Code Playgroud)
我得到一个在页面中水平居中的div,就像这样.
但是,如果我将CSS更改为:
div { margin-top: auto; margin-bottom: auto; }
Run Code Online (Sandbox Code Playgroud)
我的div不是垂直居中的.我不需要知道一个解决方法(有很多 可用的解决方案),但我想知道这种行为的原因.为什么margin-top和margin-bottom的工作方式不一样?我错过了什么?
该.contents()
方法返回一个包含 元素的子节点和文本节点的jQuery对象.
当选择器用作参数时,.not()
它将删除所选元素以及所有文本节点.
当一个对象被用作争论时,.not()
它会删除对象而不是文本节点.
例:
<p>This is a <span id="aSpan">paragraph</span> tag</p>
$("p").contents().not("span");
> []
Run Code Online (Sandbox Code Playgroud)
但!
var $sp = $("p span");
$("p").contents().not($sp);
> ["This is a ", " tag"]
Run Code Online (Sandbox Code Playgroud)
也
var sp = document.getElementById("aSpan");
$("p").contents().not(sp);
> ["This is a ", " tag"]
Run Code Online (Sandbox Code Playgroud)
为什么文本节点由"span"选择器(或任何其他选择器)选择,而不是由对象实例选择?
我正在通过Internet Explorer 9的缓存撕掉我的头发.
我根据查询字符串值从perl脚本设置了一系列cookie.这些cookie包含有关页面上各种内容的信息,如横幅和颜色.
我遇到的问题是,在IE9中,它总是会一直使用缓存而不是使用新值.事件序列如下所示:
因此,每次访问新URL时,它都会获得新鲜的资源,但每次访问以前访问过的URL时,它都会从缓存中检索它们.
以下元标记位于example.com的<head>中,我认为这会阻止缓存的使用:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="0">
Run Code Online (Sandbox Code Playgroud)
对于它的价值 - 我也尝试过 <META HTTP-EQUIV="EXPIRES"
CONTENT="-1">
IE9似乎忽略了所有这些指令.到目前为止,我在该浏览器中唯一一次成功是使用开发人员工具并确保将其手动设置为"始终从服务器刷新"
IE为什么忽略我的标题,我怎样才能强制它每次检查服务器?
我今天注意到,:visible
当与属性选择器结合使用时,jQuery的选择器会显示意外行为.它的行为取决于
a)它是在内联使用还是在过滤器方法中使用
b)它与之结合的属性选择器的类型
例子:
鉴于以下标记
<input required name="name" type="text" />
Run Code Online (Sandbox Code Playgroud)
以下是jQuery的情况
$('[required="required"]').filter(':visible').length == 0; //true
$('[required="required"]:visible').length == 0; //false - why does jquery find the input?
Run Code Online (Sandbox Code Playgroud)
该disabled
属性显示类似的行为.但是,数据属性不会显示相同的行为:
鉴于以下标记
<input data-boolean name="name" type="text" />
Run Code Online (Sandbox Code Playgroud)
以下是jQuery的情况
$('[data-boolean="true"]').filter(':visible').length == 0; //true
$('[data-boolean="true"]:visible').length == 0; //true
Run Code Online (Sandbox Code Playgroud)
这是一个演示问题的小提琴的链接.
我不希望[required ="required"]匹配具有空白必需属性的元素,并且当它自己用作选择器时它不会,但是当它与:visible选择器配对时它不会.为什么是这样?
在Google自定义搜索引擎代码的第一版(v1)中,有一种方法.setSearchCompleteCallback
可以让您在搜索结果返回时调用一些Javascript.该代码的文档可以在这里找到.
搜索引擎对象已从google.search.CustomSearchControl
v1移至google.search.cse.element
v2.
在目前的版本(V2)似乎并不有.setSearchCompleteCallback
方法,我看不到的方式来注册时,搜索结果中完成回调.我已经使用Jquery的ajaxStart和ajaxEnd方法尝试了不同程度的成功,但我想知道是否有一种"官方"方式来构建Google CSE代码.
这是我的HTML:
<input class='user_roles' id="chk" type=checkbox />
<input id="btn_on" type="button" value="on" />
<input id="btn_off" type="button" value="off" />
而我的jQuery:
$('#chk').click(function() {
if($(this).prop("checked") === true) {
alert ("checked");
}
else{
alert ("not checked");
}
});
$("[id$=btn_on]").click(function () {
$('#chk').click();
});
$("[id$=btn_off]").click(function () {
$('#chk').click();
});
Run Code Online (Sandbox Code Playgroud)
这里有一个工作的例子.
使用鼠标单击复选框时,会立即检查它 - 即警报显示"已选中".但是,当单击其中一个按钮(间接调用复选框上的单击方法)时,在单击代码运行之后才会单击该复选框.
要对此进行测试,请使用鼠标单击复选框几次,您将分别看到"已选中"和"未选中"警报.单击"开",您将看到警告"未选中",然后选中复选框.如果您再单击"关闭",您将看到"已选中",然后选中取消选中自己的复选框.
这种行为的原因是什么?在按照鼠标行为调用单击侦听器代码之前,如何确保复选框"检查"发生?
我希望webpack开发服务器在所有没有资源请求的资源请求后面附加一个斜杠。
例如:
我的索引位于,/my/project/root/index.html
我可以通过Webpack开发服务器在
1. /my/project/root
和
2 处访问它。/my/project/root/
(请注意此处的斜杠)
我希望将请求1重定向到2。
我已经尝试过使用historyAPIFallback选项,但是您可以提供给该选项的重写仅通过请求,它们不会更改URL。
是否可以使用webpack开发服务器重定向请求?
我在网站上操作内容时经常使用的做法是绝对定位左侧(或有时顶部)值约为-2000px的元素,以确保它不会在屏幕上看到.
现在,我知道我可以使用它display: none
来使我的对象消失,但是一些元素在不显示时不会很好看,有时我需要引用一些属性,例如它的宽度,例如,当无法访问时该display
属性设置为none
.所以我经常将元素定位,使其隐藏在屏幕上.
那么,我的假设是这样的:
由于对象不在屏幕上呈现的应该是,当我使用的网站*的性能没有区别left: 2000px
,而不是left: 200000000px
.
所以我假设如果使用以下代码,两个页面的性能没有区别:
第一页:
<div style="height:100px; width:100px; left:-2000px"></div>
Run Code Online (Sandbox Code Playgroud)
第二页:
<div style="height:100px; width:100px; left:-200000000px"></div>
Run Code Online (Sandbox Code Playgroud)
我的假设是否正确?如果该元素是两个给定页面之间的唯一差异,那么性能会有差异(无论多小)吗?
*也就是说加载时间,页面大小,响应性或任何其他性能指标
=================================
我按照Michael的建议对页面进行了分析,发现了以下内容:Spark说正确的加载时间会受到文件大小的影响.文件大小有四个字节的差异,这相当于加载时间约4ms的差异.
其次,IE和Firefox正确解释了我难以置信的大左值,但不是Chrome.Chrome似乎无法识别大于1.35亿像素的值.但是,鉴于性能差异似乎很小,我无法推测为什么他们会决定将其限制在如此任意的数量.
今天早上我注意到了JavaScript setFullYear方法的一个特殊问题.
使用这样的方法时:
d.setFullYear(2012,2,8);
Run Code Online (Sandbox Code Playgroud)
返回正确的值:
Thu Mar 08 2012 10:30:04 GMT+0000 (GMT Standard Time)
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用parseInt方法返回整数,则返回的日期不正确:
d.setFullYear(parseInt("2012"), parseInt("02"), parseInt("08"));
Run Code Online (Sandbox Code Playgroud)
收益:
Wed Feb 29 2012 10:31:30 GMT+0000 (GMT Standard Time)
Run Code Online (Sandbox Code Playgroud)
看来parseInt方法返回的值不正确,但是当我测试它时:
document.write(parseInt("2"));
然后返回正确的值(2)
这里有一个工作小提琴:http://jsfiddle.net/rXByJ/
问题在于parseInt还是setFullYear?
我最近继承了一些Web代码,发现所有Java Script脚本都包含在HTML注释标记中
例如:
<script type="text/javascript" language="javascript"><!--
function ValidateForm() { ... }//-->
Run Code Online (Sandbox Code Playgroud)
据我了解,这种方法可以防止较旧的,不受支持的浏览器解释您的Java脚本.然而,这不是我曾经教过的事情,我想知道现在这被认为是不必要的,还是这仍然是一种常见的做法?如果是这样,为什么?
更新:感谢kennebec建议你留下他们,我现在已经做了,感谢Emmett:我一定会把它们留在我编写的任何未来代码中!
这是一个人为的例子:
我想划分两个数字,我需要写一个方法来做到这一点.我可以这样写:
function divide(dividend,divisor) {
return dividend/divisor;
};
//Assign the result of the divide function to an element on the page.
$(".firstanswer").html(divide(6,2));
Run Code Online (Sandbox Code Playgroud)
我也可以写这样的东西:
Number.prototype.dividedBy = function (divisor)? {
var dividend = this;
return dividend/divisor;
};
var six = 6;
var two = 2;
$(".secondanswer").html(six.dividedBy(two));
Run Code Online (Sandbox Code Playgroud)
这两种方法都有相同的答案,所以我想知道的是:
使用这两种方法有什么优点或缺点.是否有显着的性能(负载/运行时间)差异?在内存影响方面,是否比另一个更可重用?理解的容易程度如何?最终,对于一个像这样简单的例子,它是否重要?
我还创建了一个小提琴,因为代码更好.
本页讨论如何使用docker-compose控制启动顺序.它推荐了三种工具:wait-for-it,dockerize或wait-for.
我一直在努力争取等待或等待按预期工作,但在这个问题上,我将专注于等待.
每次我的docker容器启动时,它都会退出"Operation Timed Out".
这是我非常简单的docker文件作为示例:
FROM ubuntu
COPY ./wait-for.sh /
WORKDIR /
RUN chmod +x ./wait-for.sh
CMD sh -c './wait-for.sh www.eficode.com:80 -- echo "Eficode site is up"'
Run Code Online (Sandbox Code Playgroud)
这应该将脚本从当前目录复制到root,使其可执行并设置run命令以执行脚本并检查eficode网站的状态(例子来自eficode github页面).
我已经尝试提供超时标志,它会调整超时,但不会影响结果.我也尝试将此脚本作为docker-compose命令的一部分运行(遵循上面链接的docker-compose文档页面上的示例),但同样的结果也是如此.
我究竟做错了什么?
javascript ×5
html ×3
jquery ×3
css ×2
checkbox ×1
docker ×1
http-headers ×1
meta-tags ×1
notation ×1
performance ×1
prototype ×1
webpack ×1