码迷,mamicode.com
首页 > 其他好文 > 详细

2014-6-29

时间:2014-06-30 14:43:04      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   使用   width   2014   

  前段时间学习HTML和CSS,天天练习写页面。由于刚开始对很多属性、标签、选择符不熟悉,写页面那个慢啊,而且往往花了大把时间写出来的页面,效果跟便便一样。。。~~上周终于结束了HTML和CSS的学习,开始正式学习JS,感觉任务相对较轻。所以趁这会饭后无聊的时间,把前段时间的知识点——我认为有必要记录的总结下,都是些零零碎碎的、基本技巧,不过对像我这种rookie来说还是很有帮助的。

  <1>居中的方法:

    1.水平居中:

        水平居中的话比较容易实现:

      1)行内元素:直接设置父级元素的text-align属性为center就好了。

      2)块级元素:在宽度确定的情况下,设置自己的左右margin:0 auto;就能在水平方向居中。

    2.垂直方向居中:

        在CSS中垂直方向居中比较麻烦,不过也有很多方法可以实现,目前以我的了解,比较好用的垂直居中的方法有下面几种:

        1)用display:table-cell;将需要居中的div的显示方式设置为表格单元格,然后使用vertical-align:middle属性将其居中。(demo代码就不写了,这里介绍下思路,有兴趣的同学可以自己试试。另,table-cell在创建流动布局时也是个神器,只不过对IE及老版本浏览器的兼容性不太友好~关于这个可以参看Charles Wyke-Smith的《CSS权威指南》一书)

        2)行内元素垂直居中:这个简单,只需设置其line-height和height为相同值即可。

        3)这种方法,在 content 元素外插入一个 div,让其浮动,并设置此 div height:50%; margin-bottom:-contentheight/2;

          代码如下:

<div id="floater"></div>
<div id="content">
	Content here
</div>
#floater	{float:left; height:50%; margin-bottom:-120px;}
#content	{clear:both; height:240px; position:relative;}

        4)这个方法使用了一个 position:absolute,有固定宽度和高度的 div。这个 div 被设置为 top:0; bottom:0;。但是因为它有固定高度,其实并不能和上下            都间距为 0,因此 margin:auto; 会使它居中。

            HTML代码

                                 <div class="content">  Content goes here</div>

            CSS代码

           #content { position:absolute;top:0; bottom:0;left:50px; margin:auto;height:240px;} 
 
<2>介绍一下display:inline-block属性
  1.大家都知道,HTML中块级元素会默认换行,而且默认占满父级元素的宽度。而inline-block这个属性可以让块级元素在同一行显示,而且在没有声明宽度的条件下,会让其宽度仅仅足够包含其内容。其实从它的字面意思就可以看出来这个设置了这个属性的元素,其表现行为是介于inline元素和block元素之间的,因为我们不仅可以像块级那样设置其宽和高,又能像行内元素那样让他们并排显示。说道这可能有同学会想到,既然能让元素并排显示,那能否利用其创建分栏布局呢?答案是当然可以,而且用这种方法布局不用像用float那样要清除浮动,也不会对文档的前后造成影响,也不用理会float布局中要求每列元素必须具有相同高度(否则会出现锯齿相错的现象)可以说是代替float布局的一种很好的方法。不过,要是想实现文字环绕效果,那最好的方法还是float,毕竟设计出float属性的初衷不就是为了这个么~不过,CSS中好用的属性总有个但是……,我这里就我的理解说说关于这属性的”但是……“吧!
  2.首先是兼容性了。。。。inline-block在IE6/7中有兼容性问题,使用的时候需要hack下,关于这点,有兴趣可以看下这人的博客http://www.zhangxinxu.com/wordpress/
  3.然后就是用inline-block排列的块级元素之间会默认有几个px的间距(如果你标签换行的话),解决的方法有几个:1)设置父元素的font-size=0(然后在子元素里再修改回来);2)用letter-spacing;同样也是设置父亲元素的letter-spacing为负值,不过这得根据当前字体大小,使用的是何种字体决定,通常是-3px到-8px之间(同样要在子元素样式中修改到正常,不过0pera貌似极限为1px...);3)比较稳妥的方法,将设置了inline-block属性的块级元素标签的闭合标签和开始标签挨着写,中间不要有空格或者换行(其实说到底这里的间距还是因为换行或者空格造成的)。
  4.用inline-block布局的话就不可避免的要用到vertical-align属性,而此属性的BUG较多,IE中对此属性的解释跟DOM支持浏览器不太一样,不过在内容的行高不是很大的情况下基本看不出来区别。
<3>.margin-top的一点问题。
    
很多时候我们在用margin-top的时候会发现怎么没跟父元素拉开距离,反而把父元素跟body之间顶开了呢?其实是这样的:在为父亲元素的第一个子元素设置margin-top后,如果父亲元素没有设置border或者padding,那这个子元素的margin会一直向上找,直到遇到border或者padding或者上一个块级元素为止。既然我们明白了机理,就不难解决这个问题。容易想到的就是直接为父亲元素设置border或者padding,不过有时候我们根本不需要border怎么办呢。其实还有个方法就是给父亲元素加上个overflow:hidden属性,这样,子元素的margin-top就乖乖听话了。(顺带提一下,overflow:hidden也可以在子元素浮动时加在父元素上,强制父元素包含浮动的子元素)。

  好了,絮絮叨叨,暂时就先写到这吧,水平有限,哪里有不对的地方欢迎指出来~大家共同学习,共同努力!

  文章部分引用:http://www.qianduan.net/css-to-achieve-the-vertical-center-of-the-five-kinds-of-methods.html


     

2014-6-29,布布扣,bubuko.com

2014-6-29

标签:style   http   color   使用   width   2014   

原文地址:http://www.cnblogs.com/veitch007/p/3815911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!