web前端之Html和Css应用中的细节问题

1、居中的n种方法:
①、margin: 0 20%;
——设置margin上下外边距的值设置为0,左右外边距设置成相同的百分比,既可将盒子居中。

②、margin: 0 auto;
width: 1000px;
——设置margin上下外边距的值设置为0,左右外边距都设置成auto,然后再设置盒子的宽度,既可将盒子居中。

③、#outer_div
{
padding: 30px;
text-align: center;
}
#inner_div
{display: inline-block; /*行内块元素*/
padding: 50px;
background-color: red;}
——使用两个盒子的嵌套实现,这里只需要将父盒子中的text-align的值设置为center,然后再将子盒子display的值设置成inline-block(行内块元素)便可实现居中。

2、关于margin属性之外边距合并问题:
①、在常规文档流中,2个或以上的块级盒模型相邻的垂直margin会被合并。最终的margin值计算方法如下:
a、全部都为正值,取最大者;
b、不全是正值,则都取绝对值,然后用正值减去最大值;
c、没有正值,则都取绝对值,然后用0减去最大值。
②、相邻的盒模型中,如果其中的一个是浮动的(floated),垂直margin不会被合并,甚至一个浮动的盒模型和它的子元素之间也是这样。
③、设置了overflow属性的元素和它的子元素之间的margin不会被合并(overflow取值为visible除外)。
④、设置了绝对定位(position:absolute)的盒模型,垂直margin不会被合并,甚至和他们的子元素之间也是一样。
⑤、设置了display:inline-block的元素,垂直margin不会被合并,甚至和他们的子元素之间也是一样。
⑥、如果一个盒模型的上下margin相邻,这时它的margin可能合并覆盖(collapse through)它。在这种情况下,元素的位置(position)取决于它的相邻元素的margin是否被合并。
a、如果元素的margin和它的父元素的margin-top折叠在一起,盒模型border-top的边界定义和它的父元素相同。
b、另外,任意元素的父元素不参与margin的合并,或者说只有父元素的margin-bottom是参与计算的。如果元素的border-top非零,那么元素的border-top边界位置和原来一样。
一个应用了清除操作的元素的margin-top绝不会和它的块级父元素的margin-bottom合并。
注意,那些已经被合并覆盖的元素的位置对其他已经被合并的元素的位置没有任何影响;只有在对这些元素的子元素定位时,border-top边界位置才是必需的。
⑦、根元素的垂直margin不会被合并。

解决方案:
l 在父层div加上:overflow:hidden;
l 把margin-top外边距改成padding-top内边距;
l 父元素产生边距重叠的边有不为 0 的 padding 或宽度不为 0 且 style 不为 none 的 border
父层div加: padding-top: 1px;
让父元素生成一个 block formating context,以下属性可以实现
l * float: left/right
l * position: absolute
l * display: inline-block/table-cell(或其他 table 类型)
l * overflow: hidden/auto
l 父层div加:position: absolute;

3、float属性的消除:
①、清除浮动方法一:(clear:both;)
ul{list-style:none;}
ul li{float:left; margin:5px;}
.clear{clear:both;overflow:hidden;}

②、清除浮动方法二:(overflow:auto)
ul
{
list-style:none;
overflow:auto;
_zoom:1;
/*zoom是为了兼容ie6做的,触发ie6下的haslayout属性*/
}
ul li
{
float:left;
margin:5px;
}

③、清除浮动方法三:(:after 伪类元素)
#after ul:after
{
content: ".";
display: block;
height: 0;
line-height: 0;
clear: both;
visibility: hidden;
}
④、采用display:table将对象变成table形式
⑤、采用div标签,以及css的clear属性
⑥、采用br标签,以及css的clear属性
⑦、采用br标签,以及其自身HTML的clear属性

4、浏览器的兼容性:

①、浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同
问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。
碰到频率:100%
解决方案:CSS里 *{margin:0;padding:0;}

备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设置各个标签的内外补丁是0。

②、浏览器兼容问题二:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大
问题症状:常见症状是IE6中后面的一块被顶到下一行
碰到频率:90%(稍微复杂点的页面都会碰到,float布局最常见的浏览器兼容问题)
解决方案:在float的标签样式控制中加入 display:inline;将其转化为行内属性
备注:我们最常用的就是div+CSS布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用div float实现的,横向的间距设置如果用margin实现,这就是一个必然会碰到的兼容性问题。

③、浏览器兼容问题三:设置较小高度标签(一般小于10px),在IE6,IE7,遨游中高度超出自己设置高度
问题症状:IE6、7和遨游里这个标签的高度不受控制,超出自己设置的高度
碰到频率:60%
解决方案:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。
备注:这种情况一般出现在我们设置小圆角背景的标签里。出现这个问题的原因是IE8之前的浏览器都会给标签一个最小默认的行高的高度。即使你的标签是空的,这个标签的高度还是会达到默认的行高。

④、浏览器兼容问题四:行内属性标签,设置display:block后采用float布局,又有横行的margin的情况,IE6间距bug
问题症状:IE6里的间距比超过设置的间距
碰到几率:20%
解决方案:在display:block;后面加入display:inline;display:table;
备注:行内属性标签,为了设置宽高,我们需要设置display:block;(除了input标签比较特殊)。在用float布局并有横向的margin后,在IE6下,他就具有了块属性float后的横向margin的bug。不过因为它本身就是行内属性标签,所以我们再加上display:inline的话,它的高宽就不可设了。这时候我们还需要在display:inline后面加入display:talbe。

⑤、浏览器兼容问题五:图片默认有间距
问题症状:几个img标签放在一起的时候,有些浏览器会有默认的间距,加了问题一中提到的通配符也不起作用。
碰到几率:20%
解决方案:使用float属性为img布局
备注:因为img标签是行内属性标签,所以只要不超出容器宽度,img标签都会排在一行里,但是部分浏览器的img标签之间会有个间距。去掉这个间距使用float是正道。(使用负margin,虽然能解决,但负margin本身就是容易引起浏览器兼容问题的用法,所以建议不要使用)

⑥、浏览器兼容问题六:标签最低高度设置min-height不兼容
问题症状:因为min-height本身就是一个不兼容的CSS属性,所以设置min-height时不能很好的被各个浏览器兼容
碰到几率:5%
解决方案:如果我们要设置一个标签的最小高度200px,需要进行的设置为:
{
min-height:200px;
height:auto !important;
height:200px;
overflow:visible;
}

⑦、浏览器兼容问题七:透明度的兼容CSS设置
做兼容页面的方法是:每写一小段代码(布局中的一行或者一块)我们都要在不同的浏览器中看是否兼容,当然熟练到一定的程度就没这么麻烦了。建议经常会碰到兼容性问题的新手使用。很多兼容性问题都是因为浏览器对标签的默认属性解析不同造成的,只要我们稍加设置都能轻松地解决这些兼容问题。如果我们熟悉标签的默认属性的话,就能很好的理解为什么会出现兼容问题以及怎么去解决这些兼容问题。

时间: 2024-12-21 17:57:47

web前端之Html和Css应用中的细节问题的相关文章

Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行

  H1/H2/H3/H4标题标签常常使用在一个网页中唯一标题.重要栏目.重要标题等情形下. H1在一个网页中最好只使用一次,如对一个网页唯一标题使用.H2.H3.H4标签则可以在一个网页中多次出现,但必要随意添加或添加过度. 在Web前端开发中,经常要使用H1标签对关键字进行优化,可是如果是一行文字中的某个词加上了H1标记,就会换行.可以使用下面的方法,H标签就不会强制换行了.Css控制为一行文字中某个字加上<h2>标签不换行,display:inline; 解释为:内联对象的默认值.用该值

好程序员web前端学习路线分享css模块化方案

好程序员web前端学习路线分享css模块化方案,这篇文章主要介绍了css模块化方案,css的模块化方案可能和js的一样多,下面简单介绍几种主要的模块方案,非常具有实用价值,需要的小伙伴可以参考下. css的模块化方案可能和js的一样多,下面简单介绍几种主要的模块方案.oocss面对对象的规则,主要的原则是两种:分离结构和外观,分离容器和内容.名词解释1.分离结构和外观:增加可重复的设计单元,同时去推进产品和ui对这方面的思考,比如下面的css使用时对象模式的命名和模块化规则.2.分离容器和内容:

好程序员web前端学习路线之在JavaScript中使用getters和setter

好程序员web前端学习路线之在JavaScript中使用getters和setter,大多数面向对象的编程语言都存在getter和setter,包括JavaScript.它们是代码构造,可帮助开发人员以安全的方式访问对象的属性.使用getter,您可以从外部代码访问("获取")属性的值,而setter允许您更改("设置")它们的值.我们将向您展示如何在JavaScript中创建getter和setter. JavaScript对象可以具有多个属性和存储的静态数据和动

VisualStudio环境下的Web前端开发经验总结(css,javascript)

vs是我最熟悉的开发环境,但使用做web前端开发时时,碰到一些问题: 1.一个文件几万行代码,如何有效的组织代码,才能快速的找到某个模块? 2.js代码如何使用#region方式折叠? 3.js代码的intellisence有些情况下会失效,痛苦. 4.js选择何种类定义,有效的实现信息封装 5.如果高效的写css. 经过摸索,总结出如下的经验.(注:vs 的版本是2012) 一.安装vs插件,解决问题1.2 插件1:Web Essentials,主要的好处是支持js的代码折叠(#region.

web前端入门到实战:HTML-JS中的单双引混合处理原则

Web 开发时常会遇到 链接中调用JS操作,如: <a href="#" onclick="showName('donhwa')">查看名字</a> 这里的名字? donhwa ,偶尔会带有 单引,或双引,或兼有之. 这时,又要如何调整才不会暴脚本感叹号呢? 也许你我都经常遇到,偶尔调整一阵可以了就这样过了,没有总结下来. 下面是整理了一下的结果,记录一下. <html> <head> ? ? ? ? <titl

web前端入门到实战:HTML中img标签的src属性绝对路径问题解决办法,完全解决!

HTML中img标签的src属性绝对路径问题解决办法,完全解决 需求:有时候自己的项目img的src路径需要用到本地某文件夹下的图片,而不是直接使用项目根目录下的图片. 场景:eclipse,tomcat,html,img,src,java 注意:不需要寻找tomcat真实路径下的server.xml去修改,这个地方不需要修改. 解决办法:1.在eclipse中找到你的项目发布的tomcat服务器,然后找到左侧Servers下对应的你的Tomcat服务器中的server.xml文件,如下图所示:

web前端入门到实战:CSS3中的弹性盒子模型

介绍 在css2当中,存在标准模式下的盒子模型和IE下的怪异盒子模型.这两种方案表示的是一种盒子模型的渲染模式.而在css3当中,新增加了弹性盒子模型,弹性盒子模型是一种新增加的强大的.灵活的布局方案.弹性盒子模型是css3中新提出的一种布局方案.是一种为了应对针对不同屏幕宽度不同设备的一整套新的布局方案.主要是对一个容器中的子元素进行排列.对齐和分配空白空间的方案的调整. 新旧版本的弹性盒子模型在之前,css3曾经推出过旧版本的弹性盒子模型.相对于新版本的弹性盒子模型而言,旧版本的内容与新版本

WEB前端开发学习----6.CSS 和 JS 在html的使用方法

CSS的导入总共有四大方法: 1. 行内式:直接在html标签元素内嵌入css样式(不推荐) 2.嵌入式:在html头部head部分内插入style声明 3.导入式:使用@import引用外部CSS文件方法:<style type="text/css">@import "mystyle.css";</style> 4.链接式:使用link来调用外部的css文件(推荐):<link href="mystyle.css"

web前端面试试题总结---css篇

CSS 介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? (1)有两种, IE 盒子模型.W3C 盒子模型: (2)盒模型: 内容(content).填充(padding).边界(margin). 边框(border): (3)区 别: IE的content部分把 border 和 padding计算了进去; CSS选择符有哪些?哪些属性可以继承? * 1.id选择器( # myid) 2.类选择器(.myclassname) 3.标签选择器(div, h1, p) 4.相邻选