您的当前位置:首页表单元素与提示文字无法对齐的问题_HTML/Xhtml_网页制作

表单元素与提示文字无法对齐的问题_HTML/Xhtml_网页制作

2023-11-28 来源:华拓教育
在很多网站涉及到表单的页面中,都存在这种表单元素与提示文字无法对齐的问题。于是打算研究一下这个问题。

最近的项目涉及到很多表单的制作,特别是复选框(checkbox)和单选框(radio)。但是在前端开发过程中发现,单(复)选框和它们后面的提示文字在不进行任何设置的情况下,是无法对齐的,而且在Firefox和IE中相差甚大。即使设置了vertical-align:middle,也依然不能完美对齐。如下图所示:

于是上网查看了一些网站,发现这个问题是普遍存在的,如下图(FF3.5):

在很多网站涉及到表单的页面中,都存在这种表单元素与提示文字无法对齐的问题。于是打算研究一下这个问题。首先,搜索到了wheatlee前辈的文章《大家都对vertical-align的各说各话》。wheatlee在他的文章中关于垂直居中提到了这样几个关键点:

1、vertical-align:middle的时候,是该元素的中心对齐周围元素的中心。

2、这里“中心”的定义是:图片当然就是height的一半的位置,而文字应该是基于baseline往上移动0.5ex,亦即小写字母“x”的正中心。但是很多浏览器往往把ex这个单位定义为0.5em,以至于其实不一定是x的正中心(baseline等名词如果不懂,请先阅读wheatlee的文章)

按照这个思路,对照我遇到的问题,首先想到的是先验证一下浏览器对于“复选框”和图片是不是使用同样的规则来渲染(是不是把复选框当成一个正方形图片来对待)。于是写出下面的代码:

<style>body{font-size:12px;}</style><input style="vertical-align:middle;" name="test" type="checkbox"><img style="vertical-align:middle;" src="testpic.gif" />

测试文字

代码中的testpic.gif是一个尺寸与复选框完全一样的黑色图片。FF3.5下显示如下:

事实证明,FF3.5对于复选框和图片的垂直对齐方式是采用同样的规则进行渲染的,即将复选框当作一个正方形的图片(IE不是)。按照wheatlee“middle的时候,是该元素的中心对齐周围元素的中心”的观点,如果我在复选框后面输入英文字符,那么复选框的中心将与英文中小写字母x的中心对齐。经测试,FF3.5下面基本上是这样的(在一些字号的时候会有一定的误差,比如,如果字体高度是偶数,那么这个中心点有时在一般偏上1px,有时在一半偏下1px)。如图:

但是这对于中文来说,并不是一个好的结果。因为中文是方块字,并且相同字号的情况下,高度会比小写的x高出很多。所以,按照浏览器内置的方式,只用 vertical-align:middle是无论如何也无法对齐中文的(无论是只写中文,中文在前,英文在前,FF3.5都是按照小写x中心那种方法来对齐的)。但是回头再看看wheatlee的文章,他说这个小写x中心对齐的渲染方式,是对于“文字”来说的。那么,如果不是文字呢…?如果复选框后面跟的是一个行内元素,如label,而文字是写在它内部的,会是什么样呢?浏览器会不会将这个内联元素整体看作一个“块”,然后依照类似图片的规则进行渲染呢?如果那样,我们就达到目的了。

但是经过测试,很遗憾,事实并不是这样,加上label后跟没加没有任何区别。FF3.5/IE6/IE7均是如此。在FF3.5中用firebug看一下,证明浏览器并没有按照label的高度值来去对齐中心点。如图:

如果按照之前的设想,红蓝两线应该是重合的。但现在的情况是,它们相差了1px。并且这1px是没有规律的,随着字号的放大,并不恒定,貌似轻易也无法提炼出对应关系来。于是想到,再试一下将label也加上vertical-align:middle。结果如图:

在FF3.5和IE7下面已经很接近于我们希望的状态了,只差1px。IE6下… 无语了。经过以上折腾,我得出了跟wheatlee相同的结论,就是,各种浏览器之间对这个问题的处理貌似没有任何规律。并且,似乎每一种浏览器对于 vertical-align:middle的渲染都不是完全遵从W3C所说的“Align the vertical midpoint of the box with the baseline of the parent box plus half the x-height of the parent.” 但是经过仔细总结和分析,发现好像最终对齐的结果跟label的高度和当前字体中小写x的中心点都有关系,两者同时影响着渲染结果(虽然不明白为什么会这样)。那么,既然现在的情况以及非常接近于希望的状态了,是否可以通过设置字体的方式来改变小写x的中心点的位置,进而对垂直对齐的结果进行“微调”呢? 最终,在不断的测试中发现,如果将font-family中的第一个字体设置为Tahoma,则可以完美的实现对齐(Verdana等字体也可以)。而且在FF3.5/IE6/IE7/IE8和Chrome中均显示正常。最终代码如下:

提示:您可以先修改部分代码再运行

最终效果:

至此,多选框(checkbox)和提示文字对齐的问题已经解决,那么其他表单元素呢?试验了一下单选框(radio),发现,还是有问题。提示文字依然是偏上。用firebug看了一下,发现radio元素默认有5px的左边距和3px的上、右边距,却没有下边距。如图:

于是,尝试去掉radio的外边距,刷新后显示正常。(其实多选框checkbox也是有外边距的,只是它的外边距四个方向都有,并且相等,所以对于垂直对齐没有影响。)下图是一些常用表单元素的最终显示效果以及最终代码,大家可以用不同浏览器看一下实际的效果(注:由于演示使用的12px的中文实际只有11px高,而 IE下文本框等元素的高度是22px,一个是奇数,一个是偶数,所以这些部分在IE中是无论如何也对不齐的,差1px。如果手动控制文本框高度为奇数,或者将文字设置成为偶数的高度,则显示正常):

提示:您可以先修改部分代码再运行

而且我发现,不但解决了中文的问题,如果提示信息换成其他语言,基本上也能够对齐,至少不会像开始那样偏移太多。下面是截图、代码和一些例子:

提示:您可以先修改部分代码再运行

至此,我的研究过程告于段落。但是,还是想不通各浏览器为什么最后会显示出这样的效果,其中的原理是什么。牛人们有空可以解释一下吗?

小编还为您整理了以下内容,可能对您也有帮助:

EXCEL中表格内文字不对齐的问题,有会的老师么?

Excel中经常需要使用到文字对齐的设置技巧,文字对齐具体该如何进行设置呢,具体的方法如下:

设置文字对齐步骤1:Excle中如何设置单元格对齐方式。在处理表格数据的时候,常常会用到单元格对齐方式:居中、靠右、靠左等等。

打开需要操作的表格

选中需要设置的单元格

右击,弹出下拉框,在下拉框中选择“设置单元格格式”

弹出“设置单元格格式”对话框

在对话框中选择“对齐”

在“对齐”中,可设置“文本对齐方式”----------3种

可设置“文本控制”

还可设置“文字方向”

方法二:选择包含要对齐的文本的单元格。

在 "开始" 选项卡上, 选择下列对齐选项之一:

文本的对齐方式

若要垂直对齐文本, 请选择 "顶端对齐" 按钮图像 、"中间对齐" 按钮图像 或 "底端对齐" 按钮图像 。

若要水平对齐文本, 请选择 "使文本左对齐" 按钮图像 、"居中" 按钮图像 或 "向右对齐文本" 按钮图像 。

当您有长行文本时, 部分文本可能不可见。 若要解决此问题而不更改列宽, 请单击 "自动换行"。

若要使文本跨多列或多行居中, 请单击 "合并 & 中心"。

撤消对齐方式更改

若要在应用对齐后立即将其删除, 请单击 "撤消"。

若要在以后更改对齐方式, 请选择要更改的单元格或单元格区域, 然后单击 "清除>清除格式"。

使用“清除格式”按钮删除格式

温馨提示: 在 Excel 网页版 中, 不能旋转单元格中的文本角度。

如何设置网页对齐?

1、P元素对齐。

2、表格文字左对齐。

3、DIV+CSS对齐。

1、P元素对齐,如

<p align="left">文字左对齐</p>

<p align="left">文字左对齐</p>

2、表格文字左对齐,如:

<table width="100%" border="1" cellspacing="1" cellpadding="0">

<tr>

<td height="66" align="left" valign="middle">aa</td>

<td align="center" valign="middle">bb</td>

</tr>

<tr>

<td height="74" align="left" valign="middle">aa</td>

<td align="center" valign="middle">bb</td>

</tr>

<tr>

<td height="83" align="left" valign="middle">aa</td>

<td align="center" valign="middle">bb</td>

</tr>

</table>

3、DIV+CSS对齐

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>文字左对齐</title>

<style type="text/css">

.font{width:200px; text-align:left; font-size:20px;}

.font1{width:200px; text-align: center; font-size:20px;}

</style>

</head>

<body>

<div class="font">aaa</div>

<div class="font1">bbb</div>

</body>

</html>

怎样让html表单内容居中,文字向左靠齐

不能实现.

只能实现左对齐或者右对齐.

但不能两边都对齐.

网页与平常我们用WORD浏览的文档是不同的.

不能两边都对齐.

也许你可以试试居中对齐.

text-align:

center.

不过它只会将内容居中,但不会将两边都对齐.

回答完毕.

Ext的form表单中加了style:"margin-top:20px",后文字与文本框不对齐了,怎么办?

这里的style只管右边的输入框,没有管住左边的FieldLabel,所以FieldLabel和textfield的高度不一致。你给LabelStyle也加上style:"margin-top:20px"试试。追问是labelStyle:"margin-top:20px",真心感谢,激动……

Ext的form表单中加了style:"margin-top:20px",后文字与文本框不对齐了,怎么办?

这里的style只管右边的输入框,没有管住左边的FieldLabel,所以FieldLabel和textfield的高度不一致。你给LabelStyle也加上style:"margin-top:20px"试试。追问是labelStyle:"margin-top:20px",真心感谢,激动……

HTML文字怎么样右对齐

1、创建一个html文件,并使用文本编辑器打开,输入html基本元素:

2、文本对齐全方式可通过设置<p>元素的align属性完成,基本格式如下:

<p align="对齐方式">文本段落</p>,

对齐方式有:left, center, right,如左对齐方式:align="left"

3、右对齐方式为:align="right"

扩展资料:

HTML书写方式:

它其实是文本,它需要浏览器的解释,它的编辑器大体可以分为三种,

1、基本文本、文档编辑软件,使用微软自带的记事本或写字板都可以编写,当然,如果你用WPS来编写,也可以。不过存盘时请使用.htm或.html作为扩展名,这样就方便浏览器认出直接解释执行了。

2、半所见即所得软件,

如:FCK-Editer、E-webediter等在线网页编辑器;

尤其推荐:Sublime Text代码编辑器(由Jon Skinner开发,Sublime Text 2收费但可以无限期试用)。

3、所见即所得软件,使用最广泛的编辑器,完全可以一点不懂HTML的知识就可以做出网页,如:

AMAYA(出品单位:万维网联盟);

FRONTPAGE(出品单位:微软);

Dreamweaver(出品单位:Adobe)。

4、所见即所得软件与半所见即所得的软件相比,开发速度更快,效率更高,且直观的表现更强。任何地方进行修改只需要刷新即可显示。缺点是生成的代码结构复杂,不利于大型网站的多人协作和精准定位等高级功能的实现。

html里面table表格中如何移动图片使其和文字对齐

按照如下修改就可以对齐了

<!DOCTYPE html">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

<style type="text/css">

table{width:1200px;margin:0px auto;}

tr{width:1200px;height:30px;list-style-type:none;}

th{border:1px solid #000;font-size:12px;font-family:"微软雅黑";line-hegiht:30px;}

/*修正1 设置垂直对齐为居中*/

th>span,th>img {

vertical-align: middle;

}

</style>

</head>

<body>

<table cellspacing="0">

    <tr>

        <th class="th_1">2</th>

<!-- 修正2 给文字加一个容器 -->

        <th class="th_2"><span>乌鲁木齐</span><img src="2.jpg" height="12" title="加班过长"/></th>

    </tr>

</table>

</body>

</html>

追问大神 问一个问题 th>span,th>img 这是什么写法?是啥意思

追答匹配所有th标记下的子代span和img标记

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。