html - 为什么样式为“inline-block”的表单在“div”中有效,但在“p”中无效?
问题描述
以下包含在“div”中的“表单”代码正确:
<div>
Please logout with a Click:
<form style="display: inline-block;">
<input type="hidden" name="var1" value="val1">
<button type="submit">Logout-Button</button>
</form>
</div>
注意:表单的样式为inline-block
. 代码放在一个<div>
.
包裹在<div>
this 中可以正常工作,并且在页面上它在一行中显示正确:
请单击注销:[注销按钮]
但是将包装器从 'div' 更改为 'p' 会导致意外行为:
当表单被包裹在 a<p>
而不是<div>
按钮时,会换行:
编码 ...
<p>
Please logout with a Click:
<form style="display: inline-block;"> ... </form>
</p>
结果是 ...
请单击注销:
[注销按钮]
(当我使用inline
而不是inline-block
设置表单样式时的行为相同。)
我想知道:
- 就像
<div>
和<p>
都是块元素:在<div>
和中这种意想不到的不同行为的基本原因是什么<p>
? - 有谁知道一个简单的 CSS 解决方案来使表单/按钮的“内联视图”在“p-tag”中工作?
感谢您的任何提示和答案!
解决方案
p 标签用于段落。当在 p 标签内使用 form 标签时,它所做的只是关闭前一个打开的 p,然后在关闭 form 标签之后再次打开它。(至少在谷歌浏览器上)也许网上有一些官方文档,但找不到。
IE
这个
<p>
Please logout with a Click:
<form style="display: inline-block; ">
<input type="hidden" name="var1" value="val1">
<button type="submit">Logout-Button</button>
</form>
渲染时会变成
<body>
<p>Please logout with a Click: </p>
<form style="display: inline-block; ">
<input type="hidden" name="var1" value="val1">
<button type="submit">Logout-Button</button>
</form>
<p></p>
</body>
希望能帮助你理解。检查 chrome 上的 html 代码。
推荐阅读
- vuejs2 - 如何在 vuetify 中禁用的文本字段上启用工具提示?
- mongodb - Perl如何在mongodb中插入日期时间
- node.js - 在 ejs 脚本中调用环境变量
- flowtype - String literals incompatible with string type when intersecting object
- swift - 线性回归结果不如预期,经过简单测试
- karate - 在空手道中,我如何找到长度 os json 对象(地图)?
- c# - 如何使用 JSON 路径获取 JSON 字符串的一部分而不是 JToken?
- java - 实现模拟线程#sleep()
- sql - SQL注入攻击布尔运算符
- php - Imagemagick 和 GD 漏洞问题