美文网首页
web前端之Html和Css应用中的细节问题

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

作者: 何wife | 来源:发表于2017-07-04 23:32 被阅读0次


    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设置

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

    分类:css

    标签:css

    好文要顶关注我收藏该文

    落叶归尘

    关注 - 4

    粉丝 - 1

    +加关注

    0

    0

    «上一篇:利用css制作横向和纵向时间轴

    »下一篇:二十五种网页加速方法和seo优化技巧

    posted on2015-12-13 11:34落叶归尘阅读(103) 评论(0)编辑收藏

    刷新评论刷新页面返回顶部

    注册用户登录后才能发表评论,请登录注册访问网站首页。

    【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库

    【免费】从零开始学编程,开发者专属实验平台免费实践!

    最新IT新闻:

    ·摩拜单车试水卖雨衣,一件售价268元

    ·三星中国回应“撤销七大支社”:创新组织管理适应市场变化

    ·不靠大V、不干扰用户,快手的风光背后有何隐忧?

    ·乐视控股高级副总裁王永利疑从乐视离职

    ·神奇百货后,自称“鬼才少女”的王凯歆下一步就是做微商?

    »更多新闻...

    最新知识库文章:

    ·小printf的故事:什么是真正的程序员?

    ·程序员的工作、学习与绩效

    ·软件开发为什么很难

    ·唱吧DevOps的落地,微服务CI/CD的范本技术解读

    ·程序员,如何从平庸走向理想?

    »更多知识库文章...

    导航

    博客园

    首页

    新随笔

    联系

    订阅

    管理

    <2017年7月>

    日一二三四五六

    2526272829301

    2345678

    9101112131415

    16171819202122

    23242526272829

    303112345

    公告

    昵称:落叶归尘

    园龄:1年7个月

    粉丝:1

    关注:4

    +加关注

    搜索

    常用链接

    我的随笔

    我的评论

    我的参与

    最新评论

    我的标签

    我的标签

    css(5)

    css hack(1)

    CSS3(1)

    Firefox(1)

    html(1)

    html5(1)

    ie和FF兼容解决方法(1)

    javascript(1)

    javascript代码(1)

    jQuery(1)

    更多

    随笔分类

    css(6)

    html(3)

    javascript(4)

    jQuery(1)

    随笔档案

    2016年1月 (1)

    2015年12月 (10)

    2015年11月 (4)

    阅读排行榜

    1. 如何在Html的CSS中去除

    标签前面小黑点,和ul、LI部分属性方法(7175)

    2. CSS元素水平居中和垂直居中的方法大全(1511)

    3. IE浏览器和Firefox浏览器兼容性问题及解决办法(1104)

    4. 利用css制作横向和纵向时间轴(482)

    5. AJAX的工作原理及其优缺点(431)

    Powered by:

    博客园

    Copyright © 落叶归尘

    相关文章

      网友评论

          本文标题:web前端之Html和Css应用中的细节问题

          本文链接:https://www.haomeiwen.com/subject/frkfhxtx.html