HTML出现错位的问题
引起网页HTML显示错位的几个常见问题:
1、在HTML代码中缺失元素的开始或结束标签
2、CSS设置中对边界、填充或边框的设置超出了父级容器的范围
3、CSS和HTML的编码不统一
4、浏览器的解析问题(这个问题是最容易出现的,同时也是最难解决的)
以上4点大致可以归为引用网页HTML显示错位的元凶,现在,分别来讨论一下如何解决上述出现的4种问题
1、在HTML代码中缺失元素的开始或结束标签
答:这个问题看似比较简单,但是也是大多数人最容易犯的问题,在现实的工作中,我们一般都是用开发工具,如Dreamweaver或Editplus等一些高级的编辑器,虽然这些工具在一定程度上减少了我们的工作量,但是随之出现的问题也多了起来,毕竟这些工具在做语法检测时,不可能做到像人工检查那样细致。所以当代码量达到一定的量的时候,就会乱,我们在修改其中内容时,如删除或修改都有可能只改了前一半,但是没有改后一半。出现这种情况,我们也要使用一些手段来应对,办法也很简单,那就是多写注释。(<!—此处是注释内容 -->)一个良好的代码工,对注释的要求也是非常高的。一个优秀的应用,同样也不可能少了注释。养成一样良好的书写习惯,为以后的工作奠定基础。
2、CSS设置中对边界、填充或边框的设置超出了父级容器的范围
答:在解释这个问题之前,先让大家清楚一下子父级关系,如:
<div class=”layout”><!—布局div开始,该class样式中设置宽度为500px,高度为200px-->
<table align=”center” border=”10” width=”500” height=”200”>
<tr>
<td>这里是内容</td>
</tr>
</table>
</div><!—布局div结束-->
在上述代码中,div就为父级容器,而table就为子元素,看注释,在class样式中,明明对div设置的是宽500px,高200px;表格也设置的是宽500px,高200px。但是就是出现错位。是因为table中设置的border=”10”,这样就会为table的上下左右边框各加10px。所以实质上table的宽度为520px,高度为200px。这样一来,就超出了div的宽高,所以有可能会出现错位。修改方法,将div的宽高各加20px,或把table的宽高各减20px。
3、CSS和HTML的编码不统一
答:这个问题出现的机率不大,但是也可能出现。废话少说,直奔主题,如CSS样式表文件的编码是GBK,而HTML的编码为UTF-8,这样你在HTML文件中使用link标签引用CSS样式表文件时,没错,但是在浏览器解析时会出错。原因有了,修改也很简单,将编码统一就OK了。步骤:记事本打开文件—另存为UTF-8(GBK)编码。
4、浏览器的解析问题
答:这个问题是最容易出现的,因为在现实中我们所做的网站可能会在不同的浏览器下跑,所以这时候就得考虑浏览器的兼容性问题。先来解释一下浏览器不兼容是如何产生的,主流浏览器IE、Firefox、Google等,这些浏览器厂商为了让自己的浏览器的市场更广,所以不会去顾及标准,他们会以自己的解析为标准去解析HTML文件。这使得IE、Firefox、Google等浏览的解析标准是不同的,所以就产生了浏览器的不兼容。这是引起浏览器不兼容最原始的凶手,但是我们却改变不了这种现状,所以这点我们不考虑。我们要考虑的是规范自己的HTML和CSS代码。
- 规范HTML:这个相对来说比较容易,在HTML的头部都有一个DTD的约束,你只需要把这个DTD文件下载下来,然后查看这个DTD文件里的内容,这里面包含了一些HTML的书写规范,如一个页面中都可以出现哪些元素,这些元素都有哪些属性等等。只要将其看懂了,HTML自然也就规范了。在HTML规范这里要注意的是布局规范,好多朋友的代码看起来很强大,但其实上很乱。用了float后就要对父容器做出clear。
- 规范CSS:这个说起来比较困难,如CSS也是有许多不常见的写法的,如!important、_width:20px、max-height:60px等等一些比较怪异的写法。下面来一一解释。
a) !important是改变优先级的,如有两个css文件同时定义了一个.layout{}的样式,但是其中的宽度不一样,一个是50px,一个是100px,这样写出来就会以后面调用那个起作用,但是你如果就想让前一个作用怎么办,加!important就可以了。写法:.layout{width:50px !important;}
b) 在样式前加下划线“_”,这是设置只在IE6内核浏览器下起作用的,有时候IE6和IE8显示效果不一样,就可以用这种方法来调试。写法:.layout{_width:20px;}
c) Max和min,顾名思义,最大和最小。这种写法就是规定这个元素的最大值和最小值。如max-height就是说最大的高度是多少,如果不满最大值,则以height设置的为准。
d) 最后一点,在HTML中body,ul,ol,input,form,dd,dt,dl,h1,h2,h3,h4,h5,h6等元素默认是有margin和padding的。在用这前,我们可以将这些元素的margin和padding清0。
好了,说了这么多,希望HTML的爱好者们借鉴一下,也希望说的不对的地方,请大家提出宝贵的意见,帮助俊南多多提高自身能力。
HTML出现错位的问题的更多相关文章
- [LeetCode] Anagrams 错位词
Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...
- div错位/解决IE6、IE7、IE8样式不兼容问题
IE6里DIV错位的问题 原文:chinafine 采用”FLOAT:LEFT“的DIV在IE8.IE7.都没问题,IE6下却向下移动,出现空白.这是因为,IE6采用的内核默认把DIV之间的距离 ...
- android listview 异步加载图片并防止错位
网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象, 重用 convertVie ...
- css通用小笔记03——浏览器窗口变小 div错位的问题
我最近写网页的时候,经常碰到一个普遍的问题,经过我的查阅和尝试,终于解决了这一问题,这里有两种方法提供给大家,如果博友还有更好的方法,欢迎补充. 一.使用min-width属性: 我们先看看下面这段代 ...
- Android中ListView错位布局实现(无聊向)
由于某些原因,需要个错位的页面,在网上找不到好的例子,试着动手写了写. 不考虑配色的完成图如下: 首先考虑的是,listview每一行左右都有可能缩进. 先假设一行的布局就是ImageView,Tex ...
- easyui使用datagrid时列名包含特殊字符导致表头与数据错位的问题
做一个用easyui的datagrid显示数据的功能时发现表格的列头与数据错位了,而且这个现象不总是能重现,一直没搞清楚原因.后来偶然在控制台看出了一点端倪: 推测表头或者单元格的class名应该是用 ...
- ofo走出校园观察:市场定位导致产品错位?
Ofo和摩拜单车虽然同样都是做单车共享,但实际上两者在最初的市场定位是有明显的差异的,因此提供的产品方案也存在巨大的差异. 市场定位不同,导致产品方案的巨大差异 摩拜单车一开始就定位于开放市场,充分的 ...
- sqoop中,如果数据中本身有换行符,会导致数据错位
sqoop中,如果数据中本身有换行符,会导致数据错位: 解决办法: 在sqoop import时修改配置文件 sudo -u hive sqoop import --connect jdbc:mysq ...
- 解决iphone填写表单时,表单项获取焦点时往下拉屏,导致顶部标题栏下滑错位
$(function () { //解决iphone填写表单时,表单项获取焦点时往下拉屏,导致顶部标题栏下滑错位 var u = navigator.userAgent; var isiOS = !! ...
- ubuntu14.04 键盘错位小问题
分享一个ubuntu14.04里的小问题,不知道有没有人跟我一样悲催 问题: 键盘错位了,@和"两个符合正好颠倒,~#这几个也错乱了,~符号跑到了|上,#跑到了shift+|上,这个问题在敲 ...
随机推荐
- Island Perimeter
You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represen ...
- Element-ui Theme浅析
一.浅析 1.采用BEM方式管理类名 B:block,模块,一个块是一个独立的实体,块可以包含其它块,名字单词间用-连接:如一个搜索块: E:element,元素,一个元素是块的一部分,具有某种功能, ...
- Echarts数据可视化series-radar雷达图,开发全解+完美注释
全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...
- [js高手之路]html5 canvas动画教程 - 自己动手做一个类似windows的画图软件
这个绘图工具,我还没有做完,不过已经实现了总架构,以及常见的简易图形绘制功能: 1,可以绘制直线,圆,矩形,正多边形[已完成] 2,填充颜色和描边颜色的选择[已完成] 3,描边和填充功能的选择[已完成 ...
- 面试题:使用LinkedList来模拟一个堆栈或者队列数据结构
请使用LinkedList来模拟一个堆栈或者队列数据结构. 堆栈:先进后出 First In Last Out (FILO) 队列:先进先出 First In First Out (FIFO) 我 ...
- Java继承--覆盖
java中支持单继承.不直接支持多继承,但对C++中的多继承机制进行改良. 单继承:一个子类只能有一个直接父类. 多继承:一个子类可以有多个直接父类(java中不允许,进行改良).不直接支持,因为多个 ...
- 如何搭建ftp的yum源
ftp的yum的搭建步骤 第一步:安装vsftpd程序包(系统已经安装) [root@station40 ~]# rpm -qa |grep vsftpd vsftpd-2.2 ...
- 数据库.MongoDB.安装MongoDB数据库
树莓派安装方法 版本: mongodb 2.4.10 sudo apt-get install mongodb -y 安装完成后,检查命令 mongo 看到下图的内容,表示已安装并启动成功 ===== ...
- LeetCode 217. Contains Duplicate (包含重复项)
Given an array of integers, find if the array contains any duplicates. Your function should return t ...
- 【20171027早】alert(1) to win 第9,10,11,12题
人在江湖,不服就干! 第9题: function escape(s) { function htmlEscape(s) { return s.replace(/./g, function(x) { r ...