css中display属性有哪些值,css display什么意思
本篇文章给大家谈谈css中display属性有哪些值,以及css display什么意思对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
CSS3中的display属性默认值是什么
CSS3中的display属性默认值是inline。
默认值说明:在CSS3中,display属性用于定义元素应该如何显示。对于大多数HTML元素,其默认的display值为inline,这意味着元素会在一行内显示,并且不会独占一行。例如,<span>、<a>等元素默认就是inline显示。常见display值:block:元素会独占一行,并且可以设置宽度、高度等属性。例如,<div>、<p>等元素默认就是block显示。
inline-block:元素在一行内显示,但可以设置宽度、高度等属性,类似于block但不会独占一行。
flex:将元素设置为弹性容器,其子元素会按照弹性布局进行排列。
grid:将元素设置为网格容器,其子元素会按照网格布局进行排列。
none:元素不会被显示,也不会占据页面空间。
与position属性的区别:display属性主要控制元素的显示方式,而position属性则控制元素在页面中的定位方式。
position属性的默认值是static,表示元素按照正常的文档流进行排列。
relative、absolute、fixed和sticky是position属性的其他值,它们分别表示相对定位、绝对定位、固定定位和粘性定位。
注意事项:在使用display和position属性时,需要注意它们之间的相互作用。例如,将display设置为none时,position属性将不再生效。
不同的display值会影响元素的布局和渲染方式,因此在使用时需要根据实际需求进行选择。
通过理解display属性的默认值及其常见值,可以更好地控制元素的显示方式和布局效果。同时,也需要注意display与position等属性的区别和相互作用,以确保页面布局的正确性和稳定性。
如何理解CSS的display属性
display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有:
none
block
inline
inline-block
inherit
下面,我将按照顺序将上述几种属性做一个完整的讲解。
第一部分:display:none
none这个值表示此元素将不被显示。比如,当我们在浏览网页时,如果看到了某个烦人的广告遮挡了我们的实现,更为可气的是,它还没有关闭的选项,这时(以chrome为例),我们就可以按下F12,打开开发者工具,点击element,然后使用左上角的选择工具选中想要删除的广告,可以看到element中会有高亮的一行或几行代码,右键,点击Add Attribute,然后输入:style="display:none",这时就可以发现广告不见啦!当然display:none的用法绝不是专门用于这里的,它还可以用于二级下拉菜单的制作中将二级下拉菜单先设置位display:none;,当鼠标滑过一级菜单时,再显示出来(详见《如何实现导航菜单中的二级下拉菜单》)。还可以用于登陆模态框的制作等等。
第二部分:display:block
使用了display:block;之后,此元素将显示为块级元素,此元素前后会带有换行符。我们先来回顾以下块级元素是什么,他有什么特点。
既然要区分块级元素和行内元素,就得先说说标准文档流了。标准文档流:简称标准流,指的是在不使用其他的与排列和定位相关的css规则时,各种元素的排列规则。于是,我们将“各种元素”分为块级元素和行内元素。(注:实际上还有空元素,如<br>用于换行,<hr>为一条水平线,这里对空元素不做过多讨论)
块级元素特点:
总是以一个块的形式表现出来,占领一整行。若干同级块元素会从上之下依次排列(使用float属性除外)。
可以设置高度、宽度、各个方向外补丁(margin)以及各个方向的内补丁(padding)。
当宽度(width)缺省时,它的宽度时其容器的100%,除非我们给它设定了固定的宽度。
块级元素中可以容纳其他块级元素或行内元素。
常见的块级元素由<p><div><h1><li>等等。
块级元素的display属性值默认为block。
行内元素特点:
它不会单独占据一整行,而是只占领自身的宽度和高度所在的空间。若干同级行内元素会从左到右(即某个行内元素可以和其他行内元素共处一行),从上到下依次排列。
行内元素不可以设置高度、宽度,其高度一般由其字体的大小来决定,其宽度由内容的长度控制。
行内元素只能设置左右的margin值和左右的padding值,而不能设置上下的margin值和上下的padding值。因此我们可以通过设置左右的padding值来改变行内元素的宽度。
常见的行内元素由<a><em><img>等等。
行内元素一般不可以包含块级元素。
块级元素的display属性值默认为inline。
ok!简单回顾了块级元素和行内元素之后,我们就可以进行下一步讲解了。
通过对一个行内元素设置display:block;可以将行内元素设置为块级元素,进而设置它的宽高和上下左右的padding和margin。
应用:
如果我们经常会制作导航栏,这时就要使用ul li和a组合的方式,但是<a>是行内元素,我们无法设置它的宽和高,这时,就可以在<a>的样式表中,将之设置为display:block。这样就可以设置它的宽和高,以及上下左右的margin和padding以达到我们想要的效果了。
css中display:inline-block
很多时候我们必须使一些块元素并排显示,一般想到的是必须使用浮动,但是块元素浮动给边距(margin)的时候在IE下会出现加倍的BUG,所以很多时候不得不把这个块元素套在一个内联元素里面,然后给内联元素浮动和边距。今天看到了怿飞、秦歌和乌龙茶关于display:inline-block的文章,很不错,综合一下,记录下来。
display:inline-block
简单来说就是将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。但是这个属性目前不是所有的浏览器都支持,只有Opera和Safari支持,FireFox3和IE8据说将会支持,Firefox2和IE使用特殊办法可以实现这种效果,下面就来探讨一下
在Firefox2中有-moz-inline-stack和-moz-inline-box实现,但是这两个私有属性在某些情况下都会有异常,具体如下:
1、display:-moz-inline-stack
“当它所应用的外包装器(wrapper)的display为inline的时候,它所包含的a或button将无法点击或无法选取,需要通过position:relative还hack掉这个bug”--乌龙茶
2、display:-moz-inline-box
使用这一属性后,text-align就会出问题,必须使用Firefox的私有属性-moz-box-align来解决
所以,建议不要使用-moz-inline-box,还是使用-moz-inline-stack
在IE(以下IE8除外)下,如果对内联元素,比如a或span元素,使用inline-block属性是有效的,似乎IE是支持的,其实是触发了IE的layout,从而拥有了inline-block属性的表症。这样我们就有了一种在IE下实现display:inline-block效果的两种方法:
1、先用display:inline-block属性触发块元素,然后再定义display:inline,让块元素呈递为内联对象(原理:这是IE的一个经典bug,如果先定义了display:inline-block,然后再设置display回inline或block,layout不会消失),代码如下:
div{display:inline-block;}
div{display:inline;}
2、直接让块元素设置为内联对象(display:inline),然后通过zoom:1触发块元素的layout,代码如下:
div{display:inline; zoom:1;}
那么为了能够让所有浏览器支持display:inline-block,综合一下,最终的实现代码如下(参考怿飞:模拟兼容性的 inline-block属性):
display:inline-block;/*一方面Firefox3 beta、IE8 beta、Opera、Safari支持,另一方面下触发IE下inline元素的 hasLayout*/
display:-moz-inline-stack;/* Firefox的私有属性,需要时还必须用到position:relative解决上面提到的bug*/
zoom:1;/*同样是IE下触发 hasLayout*/
*display:inline;/*一旦IE下触发了 hasLayout,设置 block元素为 inline会使 display:inline效果与 display:inline-block相似*/
/*扩展一下一些其他可能用到的属性*/
text-indent:-9999px;
*text-indent:0;
font-size:0;
line-height:0;/*如需隐藏文字,可用这四个属性*/
/*另外上面隐藏文字,还可以用更简化的方法:line-height:超级大值;font-size:0;*/
overflow:hidden;/*隐藏溢出的内容*/
vertical-align:middle;/*行内垂直居中,针对 Opera比较大的偏离*/
width:?px;/*?为任意非auto值*/
height:?px;/*?为任意非auto值*/
关于css中display属性有哪些值的内容到此结束,希望对大家有所帮助。