使用乱序标签来控制HTML的输出效果

在HTML的元素中,有一个比较特殊的元素form。我们用它来收集表单数据并提交给服务器,并且理论上说来它是没有任何的UI被呈现的。当然如果我们在body元素后紧跟一个form,这样一来似乎看不出来有什么UI呈现的问题,可是当form存在于别的元素之中时,就有问题了。

    什么问题呢?看下面的示例,由于页面布局的需要,我需要控制页面的滚动条。我把body的滚动条隐藏掉,然后使用一个div元素来"自制"一个滚动条,html代码如下:
None.gif<html>
None.gif    
<head>
None.gif        
<title>Layout Demo</title>
None.gif        
<meta name="author" content="birdshome@cnblogs.com">
None.gif    
</head>
None.gif    
<body style="border: 2px solid red; overflow: hidden; margin:0">
None.gif        
<div style="border: 2px solid yellow; width:100%; height: 100%; overflow: auto;">
None.gif            
<form>
None.gif                
<div style="width:800; height:800; border: 2px solid blue"></div>
None.gif            
</form>
None.gif        
</div>
None.gif    
</body>
None.gif
</html>
None.gif

    挺好的一个自制的滚动条就出来了,可是如果这时把垂直滚动条拉到底,会发现一个页面布局缺陷,原来在form后IE会默认的加上一个<br>效果显示,如下图:
    IELayout-1.png

    按么把div移到form里面去呢?代码示例为:
None.gif        <form>
None.gif            
<div style="border: 2px solid yellow; width:100%; height: 100%; overflow: auto;">
None.gif                
<div style="width:800; height:800; border: 2px solid blue"></div>
None.gif            
</div>
None.gif        
</form>
    
    这下显示完全乱套了,见下图:
    IELayout-2.png

    产生这样的效果是为什么呢?我记得我原来说过,要让div在overflow为auto的情况下,自动出滚动条有个条件。我当时的实验表明的结论是,不能再width上使用百分比作为度量,而可以在height上使用百分比,后者都是指定的width和height就可以在over条件满足时出滚动条。由于当时我的实验样本有限,我得到这个结论是很不确切的。

    因为从第一个图中,我们看到div的width和height都是百分比度量,而水平和垂直滚动条都出来了。而能不能出滚动条的确切条件是能否更具其容器关系得到确切的width和height值,不管是不是使用百分比来做度量。当然如果容器div使用的是指定的度量,那么出滚动条是很自然的事情。可是如果是百分比怎么办呢?如果百分比度量的parent容器的width和height是确定的值或是可以再通过其parent容器来确定的值,那么就是可以出现滚动条的。比如示例一中,由于body的width和height是确切的值,所以div的width和height都是百分比度量,仍然可以计算出确切的值。对于示例二中的情况,由于form元素没有width和height一说,所以在其内部的元素如果使用百分比度量,就不能计算出确切的width和height的值,所以不能正确的现实overflow的状态。

    一下又扯远了,继续说使用乱序html标签来控制输出效果的事情。显然通过上面的解释,我们只能把div放到body的第一级child上了,可是图一中那个多出来的空白怎么弄掉呢?这里由于form标签本身在解析时的高优先级,使得它对标签是否时well format格式不太敏感,就是说只要有<from>和</form>成对出现就行了,管它位置上是否正确呢。所以我们把代码改为这样:
None.gif<html>
None.gif    
<head>
None.gif        
<title>Layout Demo</title>
None.gif        
<meta name="author" content="birdshome@cnblogs.com">
None.gif    
</head>
None.gif    
<body style="border: 2px solid red; overflow: hidden; margin:0">
None.gif        
<div style="border: 2px solid yellow; width:100%; height: 100%; overflow: auto;">
None.gif            
<form>
None.gif                
<div style="width:800; height:800; border: 2px solid blue"></div>
None.gif            
</div>
None.gif        
</form>
None.gif    
</body>
None.gif
</html>
None.gif

    注意div和form是相互嵌套的,这样的html就能得到我们说期望的UI了,如下图:

    IELayout-3.png

    关于为什么要把body的滚动条hidden掉,然后自己用div来模拟?有空再来说了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杭电2019多校第一场,Problem I,String 2019

题目描述 Tom has a string containing only lowercase letters. He wants to choose a subsequence of the string whose length is k and lexicographical order is the smallest. Its simple and he solved it with ease.But Jerry, who likes to play with Tom, tells him …

2024年最新Python爬虫入门『最强教程』新鲜出炉!

近年来&#xff0c;大数据成为业界与学术界最火热的话题之一&#xff0c;数据已经成为每个公司极为重要的资产。互联网大量的公开数据为个人和公司提供了以往想象不到的可以获取的数据量。而掌握网络爬虫技术可以帮助你获取这些有用的公开数据集。 爬虫能干什么呢&#xff1f;一…

使用LUA构建页面

Android&#xff0c;LUA&#xff0c;CoronaCard 使用CoronaCard引擎构建页面&#xff0c;只需要嵌入CoronaView&#xff0c;就可以构建灵活多样的页面。 微游手柄游戏厅 4.0版本&#xff0c;全面改版&#xff0c;使用LUA语言&#xff0c;通过CoronaCard引擎构建。 一 界面效果&…

C#实现Singleton (转载)

您要在 C# 中构建应用程序。您需要只有一个实例的类&#xff0c;并且需要提供一个用于访问实例的全局访问点。您希望确保您的解决方案高效&#xff0c;并且能够利用 Microsoft? .NET 公共语言运行库功能。您可能还希望确保解决方案是线程安全的。 实现策略 尽管 Singleton 是一…

JQuery VS JS DOM

JQ断断续续的也用了一阵子了.对我来说确实是个小小的突破。之前的javascript 简直是 一塌糊涂。。糊涂到 连:document.getElementById("") 这个语句都不会写。哈哈这也算是选择JQ的一个理由吧&#xff0c;因为JQ 只需要$("#ID") $(".Class") 就可…

java设计模式组合模式详解_《JAVA设计模式》之组合模式(Composite)

在阎宏博士的《JAVA与模式》一书中开头是这样描述合成(Composite)模式的&#xff1a;html合成模式属于对象的结构模式&#xff0c;有时又叫作“部分——总体”模式。合成模式将对象组织到树结构中&#xff0c;能够用来描述总体与部分的关系。合成模式可使客户端将单纯元素与复合…

XAF Excel数据导入模块使用说明与源码

我实现了XAF项目中Excel数据的导入&#xff0c;使用Devexpress 新出的spreadsheet控件&#xff0c;可能也不新了吧:D 好&#xff0c;先看一下效果图&#xff1a;下图是Web版本的。 下面是win版&#xff1a; 功能说明&#xff1a; 支持从Excel任意版本导入数据&#xff0c;可以使…

ASP注入漏洞基础教程(二)

进 阶 篇 在入门篇&#xff0c;我们学会了&#xff33;&#xff31;&#xff2c;注入的判断方法&#xff0c;但真正要拿到网站的保密内容&#xff0c;是远远不够的。接下来&#xff0c;我们就继续学习如何从数据库中获取想要获得的内容&#xff0c;首先&#xff0c;我们先看看&…

linux 内存清理/释放命令

1.清理前内存使用情况 free -m2.开始清理 echo 1 > /proc/sys/vm/drop_caches3.清理后内存使用情况 free -m4.完成!查看内存条数命令&#xff1a; dmidecode | grep -A16 "Memory Device$" # sync# echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys…

dotnet程序优化心得(三)

&#xff08;4&#xff09;继续优化――用空间换取时间 现在对每一个字符&#xff0c;都要用get_Item(object key)方法过一遍&#xff0c;可这个乖乖方法那么长&#xff0c;肯定太耗时间了&#xff0c;能不能用更简单的手段呢&#xff1f;改Hashtable&#xff1f;哇&#xff0c…

【Mininet】Mininet使用源码安装

实验参考&#xff1a; Mininet使用源码安装 实验步骤&#xff1a; 1. 更新软件&#xff08;用#sudo apt-get update与#sudo apt-get upgrade&#xff09;。 2. 从github上获取mininet源码&#xff08;#git clone git://github.com/mininet/mininet&#xff09;。 3. 获取完后&a…

【Mininet】Mininet可视化应用

实验参考&#xff1a; Mininet可视化应用 实验步骤&#xff1a; 1. 用命令启动mininet可视化界面&#xff08;#cd mininet/mininet/example #./miniedit.py&#xff09;&#xff0c;同时开启另一终端打开Opendaylight。 2. 用鼠标选择左侧的对应的网络组件&#xff0c;然后在空…

【Mininet】Mininet命令延伸实验扩展

实验参考&#xff1a; Mininet命令延伸实验扩展 实验步骤&#xff1a; 1.用命令实现 #sudo mn --topo minimal #最小的网络拓扑&#xff0c;一个交换机下挂两个主机。 #sudo mn --topo linear,4 #每个交换机连接一个主机&#xff0c;交换机间相连接。本例&#xff1a;4个主机&a…

java非检查性异常有哪些_Java异常处理-检查性异常、非检查性异常、Error

一、Java异常处理详解异常.png目录&#xff1a;1.java中异常的分类1.1 异常(Exception)1.1.1 运行时异常(RuntimeException)可以不需要捕获1.1.2 编译异常(IOException)编译器会提示要捕获&#xff0c;如果不进行捕获则编译器会报错1.2 错误(Error)3.java处理异常机制4.throw和…

【Mininet】基于Mininet测量路径的损耗率

实验参考&#xff1a; 基于Mininet测量路径的损耗率 SDN常用控制器安装部署之POX篇 实验步骤&#xff1a; 1. 在装有mininet的虚拟机中新建文件mymininet.py并编辑以下内容&#xff0c;这里要注意一点&#xff0c;文中的dp0与dp1须填POX安装的虚拟机的地址&#xff0c;由于本次…

【Mininet】Mininet设置带宽之简单性能测试

实验参考&#xff1a; Mininet设置带宽之简单性能测试 实验步骤&#xff1a; 1. 进入mininet/custom目录下&#xff0c;通过vi mymininet1.py创建脚本并添加内容&#xff08;本实验通过python脚本自定义拓扑&#xff0c;创建包含一个交换机、四个主机的网络拓扑&#xff09;&am…

java 配置tocat_Tomcat安装配置及Eclipse配置详解

整个安装过程我们先学习安装jdk和配置然后是安装tomcat和配置&#xff0c;最后我们学习安装eclipse和配置以及web程序的使用和发布举例1. 安装jdk和配置(1)下载jdk安装包&#xff1a;(2)按照步骤点击下一步进行jdk软件的安装。(3)配置javajdk的环境变量**配置环境变量包括java_…

【Mininet】Mininet动态改变转发规则实验

实验参考&#xff1a; Mininet动态改变转发规则实验 SDN常用控制器安装部署之POX篇 实验步骤&#xff1a; 1. 在装有POX的虚拟机里&#xff0c;/root/pox目录下新建文件lab_controller.py&#xff0c;并编辑以下内容&#xff1a; 1 from pox.core import core2 3 import pox.o…

php搜索图片不显示不出来了,PHP CURL采集百度搜寻结果图片不显示问题的解决方法【第1/4页】...

1.根据关键字采集百度搜寻结果根据关键字采集百度搜寻结果&#xff0c;可以使用curl实现&#xff0c;代码如下&#xff1a;<?php function doCurl($url, $dataarray(), $headerarray(), $timeout30){$ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch…

数据库,XML,MDB --- 我们来TXT...

数据库,XML,MDB --- 我们来TXT... 转贴请注明来自http://blog.csdn.net/a11s 作者:董含君 blog已经迁移到http://a11s.cnblogs.com呵呵,有数据库当然用数据库,SQL Server多好用, mySQL多好用... 不能给客户端随便装服务啊,那就access或者其他单机的xsl之类,或者干脆XML XML是…