CSS的元素类型

前面有一篇文章讲到在css世界中,html元素的表现都是一个个盒子,而css中盒子的显示方式有三种方式,分别是块元素、行内元素和行内块元素。本文总结这三种显示方式的特征和区别。

1 写在前面

最近在整理cnblogs上页面的样式,默认右侧【随笔分类】中的标签是每行显示一个,而我想把右侧【随笔分类】中的标签设置为一行显示多个标签,至于显示多少个则随标签的大小而定,并且每个标签在鼠标放上去的时候会有背景颜色的变化。效果如下图。

下面我们就来分析一下如何让左边的标签显示方式变为右边这样的吧

2 块元素

在分析块元素之前我们首先建立html网页,以便后面的分析。html代码如下。

<html>
    <head>
        <meta charset="utf-8">
        <style type="text/css">
            body{
                width:500px;
                margin:20px auto;
                color:black;
            }
            a{
                color:inherit;
                text-decoration:none;
            }
            div{
                width:320px;
                border:1px solid red;
            }
            div ul {
                padding-left:10px;
            }
        </style>
        <link rel="stylesheet" type="text/css" href="pagestyle.css">
    </head>
    <body>
        <div>
            <ul>
                <li><a href="#">.NET(7)</a> </li>
                <li><a  href="#">Android(2)</a> </li>
                <li><a href="#">ArcgisEngine(3)</a> </li>
                <li><a  href="#">ASP.NET(1)</a> </li>
                <li><a  href="#">CSS(1)</a> </li>
                <li><a  href="#">C语言(1)</a> </li>
                <li><a  href="#">Demo(5)</a> </li>
                <li><a href="#">JavaScript(2)</a> </li>
                <li><a  href="#">Linq(1)</a> </li>
                <li><a  href="#">MSSQL(1)</a> </li>
                <li><a  href="#">其他(1)</a> </li>
                <li><a href="#">算法(3)</a> </li>
            </ul>
        </div>
    </body>
</html>

当然这段html我们给他设置一些简单的样式,去掉列表符号,和a标签的下划线。目前pagestyle.css文件中还没有任何代码,上面这段代码的效果如下。

我们可以发现,每个列表li元素都是呈单行显示的,并且他们的高度和内部的内容相当,现在我们给li元素增加一个外边框并适当的设置一下padding,在pagestyle.css中写如下代码。

li{
    border:1px solid green;
    margin-top:2px;
    padding:5px 0 5px 0;
}

效果如下。

通过给li元素设置边框,可以知道li元素默认是占一行的,它的宽度和父容器的宽度一样,而高度则是他们实际内容+padding的高度。li元素属于c块元素。下面总结一下css块元素有哪些特征。

  • 块元素默认占据一行,宽度与父容器一致,高度为内容+padding的高度。
  • 块元素可以通过设置margin和padding的值来控制块元素与其他元素的边距以及自身边框与内容的留白(内边距)。
  • 块元素可以设置宽度和高度。
  • 块元素设置高度,padding,margin会撑大父容器的文档流,当然这要在父容器没有设置固定高度的前提下。

上面说了块元素总是要占据一行的,宽度与父容器一致。当我们把li元素的宽度手动设置成很小的宽度,那么下面那个li元素会不会跑到上面来呢?答案是肯定不会跑上来的,因为块元素总是那么的霸道,即使自己宽度很小,也要独占一行的,不信看下面的代码和效果。

li{
    border:1px solid green;
    margin-top:2px;
    padding:5px 0 5px 0;
    width:150px;/*手动设置宽度*/
}

我们把li元素的宽度设置为150,效果如下。

我们可以看到li元素的宽度变了,但是它依然是独占一行的。

常见的块元素有div,h1-h6,p,ul,ol,li等等。一般布局中的父元素都是采用块元素。

3 行内元素

上面第2节讲到li元素是块元素并且独占一行的,而博客园的标签都是使用li元素。那我们需要把博客园的标签变为一行显示多个,该怎么办呢?下面开始轮到行内元素上场了。

行内元素,顾名思义即在一行内显示的元素。在css中,有一个display的属性,他可以更改html元素默认的显示方式,可以把块元素变为行内元素,行内元素变为块元素。display属性有三个值可选,分别是block:块元素;inline:行内元素;inline-block:行内块元素。

下面我们把li元素的css样式添加一个display属性看看效果。代码如下。

li{
    border:1px solid green;
    margin-left:5px;/*左边距*/
    margin-top:7px;/*设置高度*/
    display:inline;
}

效果如下。

通过设置li元素的display属性,将其改变为行内元素,li元素就可以一行显示多个,一个挨着一个,从效果中发现,我们设置了margin-left:5px这个左边距是有效果,而设置margin-top:7px是没有效果。这就是行内元素的特点。

  • 对行内元素设置高度相关的都是没有效果的,如设置margin-top,margin-bottom,padding-top,padding-bottom,height这些属性都是无效的。
  • 对行内元素设置宽度也是无效的,行内元素的宽度只有左右内边距和内容宽度来决定。

行内元素对其高度有关的属性设置都无效,导致li元素两行之间都紧靠在一起,显然在美观上不能满足我们的要求。但是css提供了另外一个属性也就是行高line-height,该属性可以设置行与行之间的高。,下面我给li元素的父容器ul元素设置行高。代码如下。

ul{
    line-height:1.5em;
}
li{
    border:1px solid green;
    margin-left:5px;
    margin-top:7px;
    display:inline;
}

效果如下。

通过设置ul元素的行高,实现了行内元素上下之间的间隔。虽然离我理想中的效果差不太远了,但是还是有些不近人意。上下边框和元素的内容挨的太近(内边距无),当鼠标移动到上面的时候,效果可能会不太好。不过我们还是按照我们理想中的效果试试。代码如下。

ul{
    line-height:1.5em;
}
li{
    /*border:1px solid green;*//*不要边框的显示*/
    margin-left:13px;
    display:inline;/*行内元素*/
    padding:11px 20px;
}
li:hover{
    background-color:blue;
    color:white;
}

效果如下。

前面说到设置行内元素与高度相关的属性都是无效的,但是上面设置的padding-top和padding-bottom好像是有效果的哈。但是实质上设置padding的上下内边距并没有增加行高,也没有撑大父容器的文档流,而且我们可以看到背景颜色显示的时候,还有覆盖了上下li元素的内容了。

行内元素设置padding的上下边距,并不会撑大父容器的文档流,但是会有效果,在上一篇文章CSS盒子模型中说到html中所有元素都是一个盒子,而背景颜色显示的范围是padding+content的范围。

上面的效果我们再美化一下css效果(修改行高和上下边距),差不多就能够达到我们想要的效果了,但是从上面效果图的右边来看,有时候一个行内元素在一行中没显示完的时候,会有一小部分在下面一行显示,如果最后出现效果图右边这种情况,那就比较尴尬了。

常见的行内元素有:a、img、input、select等。

4 行内块元素

行内块并不是兼具两者都有的特征,从字面上来理解,就是可以在行内显示的块元素,在第2节讲到块元素即使设置了宽度,也会独占一行,并会跟其他元素同行,那么行内块元素在这点上就与块元素不同。

  • 行内块元素对其设置高度,宽度,padding和margin都是有效果的。
  • 行内块元素不会独占一行,如果该行内块元素在设置完宽度、padding、margin之后,父容器后面的宽度还能够容的下第二元素,那么第二个元素就会与第一个元素同行显示,否则,另起一行。
  • 两个同行显示的行内块元素,对其上下的元素的间隔距离,以其中最大的间距为主。

关于第三点特征我们可以写代码实验一下。把ul元素下面的第一个li元素设置class属性。代码如下:

<li class="first"> <a href="#">.NET(7)</a> </li>

css的代码如下。

li{
    /*border:1px solid green;*//*不要边框的显示*/
    margin-left:13px;
    display:inline-block;/*行内块元素*/
}
li:hover{
    background-color:blue;
    color:white;
}
ul .first{
    margin-bottom:50px;/*设置第一个li元素的下边距50px*/
}

效果如下。

我们可以发现第一行有两个li元素,第一li元素我们设置了下边距为50px,而第二个没有设置默认为0,导致最终这一行与下一行的边距为第一个li元素的下边距50px,和我们预想的效果一致。

经过对行内块元素的总结,发现行内块元素能够很好的满足我们的需求。下面把li元素设置为行内块显示方式,对其进行美化,代码如下。

li{
    display:inline-block;/*行内块元素*/
    margin-bottom:5px;/*下边距5px*/
    padding:5px 7px;/*上下内边距5p,左右内边距7px*/
    border-radius:5px;/*圆角*/
}
li:hover{
    background-color:blue;
    color:white;
}

效果如下。

其实css默认的元素类型只有两种,块元素和行内元素,而行内块元素需要我们使用display去设置的。

知识分享!

                                                    来自——msay

时间: 2024-10-17 14:00:39

CSS的元素类型的相关文章

CSS:元素类型

元素分类 在CSS中,html中的标签元素大体分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 块状元素 <div>.<p>.<h1>...<h6>.<ol>.<ul>.<dl>.<table>.<address>.<blockquote> .<form> 特点 每个块级元素都从新的一行开始,并且其后的元素也另起一行. 元素的高度.宽度.行高以及顶和底边

css元素类型详解

时间真是美妙呢!我居然转行学习web前端开发,靠着对她浓厚的兴趣和爱好,终于踏出第一步…… 言归正传,从一周的时间,慢慢学习了html以及css元素类型 一. 总体来说css对显示标签来分类,分为:块状元素  :内联元素(行内元素): 对于这里有一个争议点,分为:可变元素   行内快元素: 那么这些元素在默认的情况下有什么特点呢?块状元素特点:            1:在页面中以矩形区域显示.            2:自上而下排列,独占一行            3:可以直接添加宽高    

CSS元素类型的转换

元素的类型通常分为: 块级元素 内联元素 内联块元素 块级元素: 块级元素会占据一行的位置,它后面的元素内容会换行显示 块级元素里面可以放任何内容,主要用来布局. 常见的块级元素:div h1-h6 ul li ol li p table form 行内元素:内联元素也叫行级元素它只占据他内容所占的位置,其它的内容在他后面显示,但是行级元素里面不能放块级元素 常见的行内元素:a b span i del 元素类型的转换 通过样式转换行块级元素: display:none; 隐藏对象 displa

浅谈html中的元素类型

一.元素的分类 根据css显示分类,XHTML元素被分为 三种类型:块状元素,内联元素,可变元素 1.块级元素特点 a.块状元素在网页中就是以块的形式显示,所谓块状就是元素显示为矩形区域, B:默认情况下,块状元素都会占据一行,通俗地说,两个相邻块状元素不会出现并列显示的现象:默认情况下,块状元素会按顺序自上而下排列. C:块状元素都可以定义自己的宽度和高度. D:块状元素一般都作为其他元素的容器,它可以容纳其它内联元素和其它块状元素.我们可以把这种容器比喻为一个盒子. 2.内联元素(inlin

元素类型

元素类型 一.XHTML元素分类根据css显示分类,XHTML元素被分为三种类型:块状元素,内联元素,可变元素 1.块状元素(block element) 1)块状元素在网页中就是以块的形式显示,所谓块状就是元素显示为矩形区域,常用的块状元素包块div,dl,dt,dd,ol,ul,fieldset,(h1-h6),p,form,hr,colgroup,col,table,tr,td,等: 2)默认情况下,块状元素都会占据一行,通俗地说,两个相邻块状元素不会出现并列显示的现象:默认情况下,块状元

CSS隐藏元素的几种方法

使用CSS隐藏元素的方法很多,在这里简单总结一下: 1.display:none display:none 应该是最常用的一种隐藏元素的方法,使用该方法隐藏的元素脱离文档流不占据空间,不会被浏览器解析,不能点击,搜索引擎可能会认为被隐藏的文字属于垃圾信息而被忽略,而且屏幕阅读器(是为视觉上有障碍的人设计的读取屏幕内容的程序)会忽略被隐藏的文字. 2.visibility:hidden 使用 visibility:hidden 隐藏的元素,不能点击,但是会占据文档空间,不够灵活,一般配合 posi

css确定元素水平居中和垂直居中

---恢复内容开始--- 首先,我们在了解如何通过css了解元素水平和垂直居中之前,先要了解下html都有哪些元素,这些元素与偶有哪些分类,因为不同类别的元素的水平垂直居中方法是完全不同的,究其根本当然是因为不同类别元素的性质不同.所以我们先来了解下html的元素类别. 一.HTML元素分类 1)内联(inline)元素: <a>--锚点 <abbr>--缩写 <acronym>--首字母缩写(HTML5不支持,请使用<abbr>代替) <b>-

js分析 汽_车_之_家 js生成css伪元素 hs_kw44_configUS::before

0.参考 https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle 0.1 Use with pseudo-elements getComputedStyle can pull style info from pseudo-elements (for example, ::after, ::before, ::marker, ::line-marker-see spec here). <style> h3:

文本设置+元素类型

一.文本 1.文本溢出 overflow:文本溢出设置: overflow:scroll /auto /hidden/inherit:             超出时,滚动查看(未超出时也会有滚动机制)/超出时,滚动查看(未超出时不会有滚动机制)/ 超出隐藏 /继承父级的overflow设置 2.文本空白 white-space:normal; 默认值 white-space:pre;空白会被浏览器保留,保留原有格式,不会被迫换行 white-space:pre-wrap;保留所有格式,会被迫换