空白符对HTML结构的影响与解决方案

何为空白符?

空白符: 空格、制表符、换行符

注意:浏览器在解析HTML时会把所有空白符合并成一个空格

空白符对HTML结构的影响

HTML5中<textarea>标签placeholder无法正确显示

不好的结构造成意外的结果:

标签换行了:

1 <!--文本域结束标签 换行导致placeholder无法正确表示-->
2 <textarea id="description" name="description" rows="5" cols="30" wrap="physical" placeholder="这是一个多行输入框,输入您的个人描述"></textarea>

标签之间有空格:

1  <!--文本域标签之间有空格,导致placeholder无法正确表示-->
2  <textarea id="description" name="description" rows="5" cols="30" wrap="physical" placeholder="这是一个多行输入框,输入您的个人描述">    </textarea>

结果:一片空白

原因:因为表单区域中包含了空白符(空格、制表符、换行符),textarea内的空白符被认为是内容,阻止了占位符文本的显示。

正确的操作:

1 <!--文本域开始标签与结束标签紧挨着,placeholder正确表示-->
2 <textarea id="description" name="description" rows="5" cols="30" wrap="physical" placeholder="这是一个多行输入框,输入您的个人描述"></textarea>

结果:占位了!!!

inline-block的默认空白间距

默认情况下,inline-block元素之间大约有“4px”的间距(不同浏览器会有不同的大小)。

1 <ul>
2   <li>item1</li>
3   <li>item2</li>
4   <li>item3</li>
5   <li>item4</li>
6   <li>item5</li>
7 </ul>
 1 *{
 2   margin: 0;
 3   padding: 0;
 4 }
 5 ul {
 6   list-style: none outside none;
 7   padding: 10px;
 8   background: green;
 9   text-align: center;
10 }
11 ul li {
12   display: inline-block;
13   *display: inline;
14   zoom: 1;
15   background: orange;
16   padding: 5px;
17 }

原因:标签之间的空白符造成的。

解决:此时可以通过改变HTML的结构,让上一个li的结束标签与下一个li开始相连,去除空白符。

1 <ul>
2   <li>item1</li
3   ><li>item2</li
4   ><li>item3</li
5   ><li>item4</li
6   ><li>item5</li>
7 </ul>

你可以点击这里狠狠尝试demo

当然,空白符也是字符,去除它们也可以通过CSS样式letter-spacing、word-spacing来设定。详情见:如何解决inline-block元素的空白间距

存在于文本中的空白符

如下面的换行符,和空格。

<div>They can stay 72-hours
    within the Shandong      province after they have entered China via the Qingdao International Airport.</div>
结果:浏览器解析的时候只保留单词之间的空白符被合并为一个空格。They can stay 72-hours within the Shandong province after they have entered China via the Qingdao International Airport.

可以通过CSS属性white-space对文本中的空白符进行处理

white-space:normal | pre | nowrap | pre-wrap | pre-line | inherit

normal: 合并空白符,允许自动换行
nowrap: 合并空白符,不允许自动换行
pre-line: 合并空白符(不包括换行符),允许自动换行
pre: 不合并空白符,不允许自动换行
pre-wrap: 不合并空白符,允许自动换行(在pre基础上,保留自动换行) 

详情见:demo

补充一点:CSS3新增了两个换行属性word-wrap和word-break。

参考资料:

小火柴的蓝色理想:深入理解CSS中的空白符和换行

MDN:white-space

时间: 2024-09-29 16:01:16

空白符对HTML结构的影响与解决方案的相关文章

浅谈周易风水对中国建筑结构的影响

中国人都很注重一个词--"风水","风水"二字贯穿了每个中国人的一生,活时,房子的选址,要合宜风水.家具的摆放,也要合宜风水.老了,墓地的选址也要合宜风水.那么,何谓风水呢?风水学鼻祖近代的郭璞先生在<葬书>中第一次提出了风水的概念,"葬者, 乘生气也--气乘风则散, 界水则止, 古人聚之使不散, 行之使有止, 故谓之风水."翻译成现代汉语,就是说,通过自然环境的变化,使人们的居住环境产生一种看不到,摸不着的气场,这就是风水.举个例子

应用程序框架实战三十八:项目示例VS解决方案的创建(一)

进行项目开发的第一步,是创建出适合自己团队习惯的VS解决方案,虽然我已经提供了项目示例,但毕竟是我创建的,你直接使用可能并不合适,另外你如果尝试模仿重新创建该示例,中间可能碰到各种障碍,特别是项目间的依赖关系. 本文的目的是帮助.Net架构初学者能顺利搭建起适合自己的VS解决方案,我会在本文演示曾经用过的几种不同风格的目录结构,你可以根据自己的习惯选择一种并自行修改. 本系列假定你已经熟悉如何创建.NET类库等基础知识,并具有.Net开发经验,我不会详细到每一个细节.如果你是.Net初学者,尚未

HIVE RCFile高效存储结构

本文介绍了Facebook公司数据分析系统中的RCFile存储结构,该结构集行存储和列存储的优点于一身,在 MapReduce环境下的大规模数据分析中扮演重要角色. Facebook曾在2010 ICDE(IEEE International Conference on Data Engineering)会议上介绍了数据仓库Hive.Hive存储海量数据在Hadoop系统中,提供了一套类数据库的数据存储和处理机制.它采用类 SQL语言对数据进行自动化管理和处理,经过语句解析和转换,最终生成基于H

VS解决方案创建

示例VS解决方案的创建(一) 进行项目开发的第一步,是创建出适合自己团队习惯的VS解决方案,虽然我已经提供了项目示例,但毕竟是我创建的,你直接使用可能并不合适,另外你如果尝试模仿重新创建该示例,中间可能碰到各种障碍,特别是项目间的依赖关系. 本文的目的是帮助.Net架构初学者能顺利搭建起适合自己的VS解决方案,我会在本文演示曾经用过的几种不同风格的目录结构,你可以根据自己的习惯选择一种并自行修改. 本系列假定你已经熟悉如何创建.NET类库等基础知识,并具有.Net开发经验,我不会详细到每一个细节

Windows结构化异常处理浅析

近期一直被一个问题所困扰,就是写出来的程序老是出现无故崩溃,有的地方自己知道可能有问题,但是有的地方又根本没办法知道有什么问题.更苦逼的事情是,我们的程序是需要7x24服务客户,虽然不需要实时精准零差错,但是总不能出现断线丢失数据状态.故刚好通过处理该问题,找到了一些解决方案,怎么捕获访问非法内存地址或者0除以一个数.从而就遇到了这个结构化异常处理,今就简单做个介绍认识下,方便大家遇到相关问题后,首先知道问题原因,再就是如何解决.废话不多说,下面进入正题. 什么是结构化异常处理 结构化异常处理(

专业针对企业无线网络解决方案——时讯网络

1.4 企业WLAN需求分析随着智能移动终端的增加,企业BYOD的普及,高质量的WLAN已经成为企业移动办公的刚性需求. 而在具体的应用过程中企业WLAN包含以下具体的需求: 1.4.1 企业WIFI安全接入随着企业信息化建设和国家信息化工程的发展,企业办公信息化逐渐实现,企业BYOD需求激增,更多的企业采用无线网络接入自己的内部业务和办公系统.受无线网络局限性影响,其安全问题日益凸显,亟待安全接入机制,保障客户业务系统免受******. 1.4.2 企业WIFI安全办公企业业务规模不断扩大,企

C语言学习--结构体

结构体定义三种方式: 1 #include<stdio.h> 2 //第一种定义方法 3 struct point { 4 int x; 5 int y; 6 }; 7 struct point p1,p2; 8 9 //第二种定义方法 10 struct { 11 int x; 12 int y; 13 } p1,p2; 14 15 //第三种定义方法 16 struct { 17 int x; 18 int y; 19 } p1,p2; 这三种方法,对于第一和第三种,都声明了结构point

传统三层结构和MVC之于贫血模式和充血模式以及领域建模

相信很多人跟我一样,一开始在使用贫血模式的三层结构:抽象出来一个贫血的实体封装,然后把对模型的所有操作,分离出来,分离到BLL层去,然后DALL层负责把这些操作和数据库产生映射,负责读写删改的操作. 后来我开始使用Asp.net MVC来操作.网络上很多理论都是讲究:M是主要数据操作和实体,V 是显示层,一般为模板.而C是一个控制层,或者说调度层,负责把Model跟合适的View结合起来,最终呈现给用户.根据上述理论,我们可以知道V一般 为模板,而C其实是很薄的一层,只是一个负责调度.重要的层在

闭包是什么,为什么要有闭包,有什么特性,对页面有什么影响?

闭包的实质是一个函数,是一个用于返回局部变量值的函数,因为在全局中,受JavaScript链式作用域结构的影响,父级变量中无法访问到子级的变量值,为了解决这个问题,才使用闭包这个概念.由于闭包时,变量的值都保存到内存中,会导致页面加载时内存消耗很大,IE会导致内在泄露,因此尽量少用或用时要及时删除变量.