为什么display:block;width:auto;我的文本输入不像div那样填充容器宽度?
我的印象是div只是一个具有自动宽度的块元素.在下面的代码中,div和输入不应该有相同的尺寸吗?
如何获得填充宽度的输入?100%宽度不起作用,因为输入具有填充和边框(导致最终宽度为1像素+5像素+ 100%+ 5像素+ 1像素).固定宽度不是一个选项,我正在寻找更灵活的东西.
我更喜欢直接回答变通方法.这似乎是一个CSS怪癖,理解它可能会有用.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>width:auto</title>
<style>
div, input {
border: 1px solid red;
height: 5px;
padding: 5px;
}
input, form {
display: block;
width: auto;
}
</style>
</head>
<body>
<div></div>
<form>
<input type="text" name="foo" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我应该指出我已经可以使用包装器解决方法做到这一点.除了与页面语义和CSS选择器关系的这种联系之外,我试图理解问题的本质以及是否可以通过改变INPUT本身的性质来克服它.
好的,这很奇怪!我发现解决方案是简单地添加max-width:100%到输入width:100%;padding:5px;.然而,这引发了更多问题(我将在另一个问题中提出),但似乎宽度使用普通的CSS框模型,max-width使用Internet Explorer边框模型.真奇怪.
好吧,最后一个似乎是Firefox 3中的一个错误.Internet Explorer 8和Safari 4将最大宽度限制为100%+填充+边框,这是规范所要做的.最后,Internet Explorer做对了.
天啊,这真棒!在玩这个游戏的过程中,在尊敬的大师Dean Edwards和Erik Arvidsson的帮助下,我设法将三个独立的解决方案拼凑在一起,在具有任意填充和边框的元素上实现真正的跨浏览器100%宽度.见下面的答案.此解决方案不需要任何额外的HTML标记,只需要一个类(或选择器)和旧版Internet Explorer的可选行为.
我有一个看起来像这样的servlet:
public class ExampleServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println(request.getPathInfo());
}
}
Run Code Online (Sandbox Code Playgroud)
使用web.xml映射,如:
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>com.example.ExampleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>/example/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
它给了我我期望的结果......如果我去http:// localhost:8080/example/foo它打印"/ foo".但是,如果我将servlet更改为转发到JSP文件:
public class ExampleServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// do something here to check the value of request.getPathInfo()
request.getRequestDispatcher("whatever.jsp").forward(request, response);
}
}
Run Code Online (Sandbox Code Playgroud)
然后当我检查getPathInfo()的值时,它现在报告"whatever.jsp"而不是"foo".
编辑:以防万一,这是在谷歌应用引擎上.不要以为应该这样.
我正在尝试在运行OSX 10.5.7的计算机上使用gprof配置C++应用程序.我以通常的方式使用g ++编译,但是使用-pg标志,运行应用程序并尝试使用gprof查看调用图.
不幸的是,我的调用图包含所有时间列的全零."被调用"列中的值具有合理的值,因此看起来有些内容被分析但我对其他数据的缺乏感到困惑.
我的所有源文件都以类似的方式编译:
g++ -pg -O2 -DNDEBUG -I./ -ansi -c -o ScenarioLoader.o ScenarioLoader.cpp
Run Code Online (Sandbox Code Playgroud)
然后我运行'ar'将所有目标文件捆绑到一个库中.后来,我链接并运行gprof如下:
g++ -pg -lm -o vrpalone vrpalone.o ../src/atomicprof.a lastbuild.o
./vrpalone
gprof gmon.out | less
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在开发一个ColdFusion站点,其中数据存储在数据库内的WDDX数据包中,这真的很痛苦.(我不知道为什么这些值不只是存储在另一个表中.)
我之前没有使用过WDDX,我能找到的唯一文档看起来很旧.所以我很好奇是否还有人使用WDDX,如果有的话,为什么?
我需要使用asp.net控件生成此结构,但ListItem不允许添加属性和类.
最好的方法是什么?
<ul>
<li class="1">SomeText</li>
<li class="2">SomeText2</li>
</ul>
Run Code Online (Sandbox Code Playgroud) 在SQL Server 2008中,我们可以定义表类型并将其用作存储过程的参数.但是如何在这个SP的C#调用中使用它呢?换句话说,如何使用SQL Server 2008的这一新功能创建表或列表并将其传递到C#代码中的存储过程?
我昨天辞去了我目前的工作地点,而且我正在自己记录我的项目,所以我可以轻松地将它们交给我.
请记住,我的代码已被评论为一个良好的标准,我还应该把其他什么组合起来帮助我的开发人员接管我的项目?
我想在Objective-C应用程序中添加一些自动化性能测试.(这是一款游戏,因此我想通过简单地运行一组测试来查看引擎关键部分的当前性能.)为此,我想编写一些时序支持例程,如下所示:
- (void) benchmarkSelector: (SEL) msg onObject: (id) target
{
// run the selector thousands of times, print detailed stats
}
Run Code Online (Sandbox Code Playgroud)
问题是我对毫秒感兴趣,我担心调用performSelector基准测试代码会使结果偏差很多.你会怎么回事?我应该去objc_msgSend吗?
为了在给定的两个日期的几分钟内获得TimeSpan,我将执行以下操作
int totalMinutes = 0;
TimeSpan outresult = end.Subtract(start);
totalMinutes = totalMinutes + ((end.Subtract(start).Days) * 24 * 60) + ((end.Subtract(start).Hours) * 60) +(end.Subtract(start).Minutes);
return totalMinutes;
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
c# ×2
ado.net ×1
asp.net ×1
benchmarking ×1
c++ ×1
coldfusion ×1
css ×1
entity ×1
gprof ×1
html ×1
java ×1
jsp ×1
listitem ×1
macos ×1
objective-c ×1
performance ×1
servlets ×1
unix ×1
wddx ×1
webforms ×1