这让我疯狂了好几天了,但实际上这是我在过去几年中一直存在的问题:使用HTML/CSS我怎样才能制作出具有宽度和/或宽度的元素高度是它的父元素的100%,仍然有适当的填充或边距?
所谓"适当的"我的意思是,如果我的父元素是200px高大的,我指定height = 100%用padding = 5px我所期望的,我应该得到一个190px高的元素与border = 5px所有各方,很好地集中在父元素.
现在,我知道那不是标准盒子模型指定它应该如何工作(虽然我想知道为什么,确切地说......),所以明显的答案不起作用:
#myDiv {
width: 100%
height: 100%;
padding: 5px;
}
Run Code Online (Sandbox Code Playgroud)
但在我看来,必须有一些方法可以为任意大小的父母可靠地产生这种效果.有谁知道完成这个(看似简单)任务的方法?
哦,为了记录,我对IE兼容性并不十分感兴趣,所以应该(希望)让事情变得更容易一些.
编辑:自从一个例子被要求,这是我能想到的最简单的一个:
<html style="height: 100%">
<body style="height: 100%">
<div style="background-color: black; height: 100%; padding: 25px"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
接下来的挑战是让黑盒子在所有边缘都显示25像素的填充,而页面不会变得足够大以至于需要滚动条.
我最近一直在摆弄WebGL,并且让Collada读者工作了.问题是它很慢(Collada是一种非常冗长的格式),所以我将开始将文件转换为更易于使用的格式(可能是JSON).事实是,我已经有了用Javascript解析文件的代码,所以我也可以将它用作我的导出器!问题在于节省.
现在,我知道我可以解析文件,将结果发送到服务器,并让浏览器从服务器请求文件作为下载.但实际上服务器与这个特定的进程没有任何关系,为什么要让它参与其中呢?我已经在内存中拥有所需文件的内容.有什么方法可以使用纯javascript向用户提供下载吗?(我怀疑它,但不妨问......)
并且要明确:我没有在用户不知情的情况下尝试访问文件系统!用户将提供一个文件(可能通过拖放),脚本将转换内存中的文件,并提示用户下载结果.就浏览器而言,所有这些都应该是"安全"的活动.
[编辑]:我没有提及它,所以回答"Flash"的海报是有效的,但我正在做的部分是尝试强调纯HTML5可以做什么...所以Flash是在我的情况下.(虽然对于任何正在使用"真实"网络应用程序的人来说,这是一个非常有效的答案.)在这种情况下,除非我想要涉及服务器,否则看起来我运气不好.不管怎么说,还是要谢谢你!
在Node.js服务器中使用socket.IO时,是否有一种简单的方法来获取传入连接的IP地址?我知道你可以从标准的HTTP连接中获取它,但socket.io是一个不同的野兽.
我最近一直在玩HTML5音频,虽然我可以让它播放声音但它只播放一次.无论我尝试什么(设置属性,事件处理程序等),我似乎无法让它循环.
这是我正在使用的基本代码:
//myAudio is declared at a global scope, so it doesn't get garbage collected.
myAudio = new Audio('someSound.ogg');
myAudio.loop = true;
myAudio.play();
Run Code Online (Sandbox Code Playgroud)
我正在使用Chrome(6.0.466.0 dev)和Firefox(4 beta 1)进行测试,两者似乎都乐于忽略我的循环请求.有任何想法吗?
更新:现在所有主流浏览器都支持循环属性.
这似乎是Python有一个捷径.我想将一个项目附加到列表N次,实际上这样做:
l = []
x = 0
for i in range(100):
l.append(x)
Run Code Online (Sandbox Code Playgroud)
在我看来应该有一个"优化"的方法,如:
l.append_multiple(x, 100)
Run Code Online (Sandbox Code Playgroud)
在那儿?
非常简单的问题,显然不可能找到一个合适的答案:我怎样才能使Visual Basic 6停止改变我的^ @#*变量套管!?!
我知道很多VB用户的一般意见是这个"功能"实际上非常有用,但我怀疑他们在任何源控制系统中都使用它很多.当您尝试与其他几个开发人员合作开展任何重要项目时,这绝对是一种感染.如果忽略,您会对文件(甚至没有实际代码更改的文件)产生数千个误报"更改",这些更改会污染修订历史记录,并且在某些情况下几乎不可能找到发生的实际更改.
如果你不忽略它(就像我的办公室,我们被迫实施"不需要更改案例"的政策),你花费的时间是你每次提交时的5倍,因为你必须小心地恢复VB的"修正" "在每个文件上,有时会恢复数百行以进行一行更改.
当然必须有一个设置,插件,黑客等可以删除这个不需要的"功能"?我愿意采取任何我能得到的方法,只要它不需要我挑选成堆的幻影差异.并预先解决了几个抱怨:不,我不能在我的差异工具中关闭案例检测,这不是重点.不,我们不能仅仅在全球范围内改变案例.我们正在与跨越多年开发的多个开发人员共同工作的数十万个LOC合作.从业务角度来看,同步是不可行的.最后:不,我们无法升级到VB.net或移植到另一种语言(尽可能多的我喜欢).
(是的,我现在只是有点恼怒.你能说出来吗?我道歉,但这花费了我的时间和我的公司资金,而且我觉得不可接受.)
有几种资源可以解释Chrome中的沙盒是如何工作的,以及它如何保护用户免受恶意代码的侵害.
Chromium博客
Chromium开发人员文档
沙箱常见问题解答
这很棒,我喜欢他们所拥有的以操作系统为中心的设计(有点像"操作系统可能知道如何更好地保护自己,所以我们让它"接近.)他们在几个地方也提到了sandbox本身被设计为不依赖于Chrome,而是或多或少独立,因此理论上只要程序的体系结构兼容,任何进程都可以进行沙盒化(沙盒代码必须作为自己的进程运行,因为它是一个孩子的非沙盒父母.)
我碰巧有一个应用程序,它的设计使沙盒成熟,并且能够让父/子进程使用它.我有Chromium代码并且......不知道下一步该做什么.
有没有人在那里实际上用沙盒装了什么呢?是否有任何资源记录了它的用法或API?我想它应该很简单,但我不知道从哪里开始.
编辑:我的答案在下面找到!
在C++中,你可以在一个类上有一个模板化运算符吗?像这样:
class MyClass {
public:
template<class T>
T operator()() { /* return some T */ };
}
Run Code Online (Sandbox Code Playgroud)
这实际上似乎编译得很好,但混淆在于如何使用它:
MyClass c;
int i = c<int>(); // This doesn't work
int i = (int)c(); // Neither does this*
Run Code Online (Sandbox Code Playgroud)
它编译的事实向我暗示它是可行的,我只是对如何使用它感到茫然!有什么建议,或者这种使用方法是非首发?
我有一个ASP.net Web服务,我用于Web应用程序,它向我返回XML或JSON数据,具体取决于我调用的函数.到目前为止,这一直运作良好,但我遇到了一个问题.我想在我的页面上创建一个"导出"链接,用于下载JSON文件.链接的格式非常简单:
<a href="mywebserviceaddress/ExportFunc?itemId=2">Export This Item</a>
Run Code Online (Sandbox Code Playgroud)
正如您可能想象的那样,这应该导出第2项.到目前为止,这么好,是吗?
问题是因为我并没有特别要求接受的内容类型是JSON,所以ASP.net绝对拒绝发回除XML以外的任何内容,这对于这种情况并不合适.代码基本如下:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Item ExportItem(int itemId)
{
Context.Response.AddHeader("content-disposition", "attachment; filename=export.json"); //Makes it a download
return GetExportItem(itemId);
}
Run Code Online (Sandbox Code Playgroud)
尽管我将ResponseFormat指定为JSON,但除非我通过AJAX(使用Google Web Toolkit,BTW)请求此方法,否则我总是返回XML:
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "mywebserviceaddress/ExportFunc");
builder.setHeader("Content-type","application/json; charset=utf-8");
builder.setHeader("Accepts","application/json");
builder.sendRequest("{\"itemId\":2}", new RequestCallback(){...});
Run Code Online (Sandbox Code Playgroud)
这很好,但AJAX不会给我一个下载对话框.有没有办法迫使ASP.net给我回JSON,无论数据是如何请求的?在我看来,没有手动覆盖这种行为是一个严重的设计疏忽.
快速回答:
首先,我想说,我认为womp的答案可能是长期更好的方式(转换为WCF),但是deostroll让我得到了我将在不久的将来使用的答案.此外,应该注意的是,这似乎主要是因为我只想下载,在所有情况下都可能无法正常工作.在任何情况下,这里是我最终用来获得我想要的结果的代码:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void ExportItem(int itemId)
{
Item item = GetExportItem(itemId);
JavaScriptSerializer js = new JavaScriptSerializer();
string str = js.Serialize(item);
Context.Response.Clear();
Context.Response.ContentType = "application/json";
Context.Response.AddHeader("content-disposition", "attachment; filename=export.json");
Context.Response.AddHeader("content-length", str.Length.ToString());
Context.Response.Flush();
Context.Response.Write(str);
}
Run Code Online (Sandbox Code Playgroud)
请注意 …
我最近一直在玩Direct3D 11并且由于缺乏关于API基础知识的文档(例如简单的几何渲染)而感到沮丧.稀疏文档带来的混淆之一是(明显的)远离着色器效果的使用.
在D3D11中,所有效果(.fx)支持已从D3DX库中删除,并被埋没在难以找到(当然稀疏文档)的共享源库中.所包含的示例都不使用它,而是直接编译HLSL文件.所有这一切都告诉我,微软正试图让人们停止使用效果文件格式.真的吗?是否有任何类型的文件说明了这一点?我很好,无论哪种方式,但多年来他们一直在推广.fx格式,所以他们突然决定放弃它似乎很奇怪.
c++ ×2
html5 ×2
javascript ×2
asmx ×1
css ×1
direct3d ×1
download ×1
html5-audio ×1
ip-address ×1
json ×1
list ×1
node.js ×1
python ×1
sandbox ×1
socket.io ×1
templates ×1
vb6 ×1
web-services ×1