介绍一下display属性
1.display:none 表示该元素不存在,也不会显示和占用空间
2.display: inline表示该元素设置为行内元素,给元素设置宽高是没有反应的
3.display: block 表示该元素设置为块状元素,可以自己设定宽度和高度;如果没有给定宽度高度,则会继承父元素的属性,搞定一般以子元素的高度为准
4.display: list-item 表示该元素设置为列表来显示
5.display:table 表示该元素会用块级表格的方式来展示
6.display: inline-block 表示该元素既有inline的行内特性又有block的宽高特性(行内块元素)
7.display:flexflex是一种弹性布局属性,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效
接下来介绍介绍position属性
1.position:static 这个是默认的属性(块级元素和行内元素都遵守各自的特性)
2.position:relative相对定位,原来的位置会保留,可以根据top,right,bottom,left来进行位置的变化
3.position:absolute绝对定位,设置了这个属性后,原来的空间会被占用,后面的元素会顶上来,该元素就会脱离文档流;不管你设置的这个元素是块级元素还是行内元素,只要给了这个属性,该属性就可以设置宽度和高度。如果父级元素设置了相对定位,那么该元素就会相对父级来定位,如果父级元素没有设置相对定位的话就再往上找,一直找不到,那么该元素就会相对body来定位。
4.display:fixed固定定位,该属性是相对于浏览器来定位的
如果有什么什么问题,欢迎打开下面的网站来共同学习交流经验
http://www.mackxin.com/html/code.html
关注分享,体验乐趣
分享是一种态度
家都知道display可以转换元素类型,但是大多人其实对于display的属性值,比较熟悉的只是block和inline以及inline-block和none,对于其他属性值,了解都比较一般,在平时开发过程中也不太用得到其他的属性值,但是每次用这个属性的时候,脑海里都会冒出来,其他的属性值,设置了会是怎么样、有什么样的特点,这个奇奇怪怪的想法,所以找了个时间,写下这篇文章, 跟我有相同可爱想法的伙伴,如果感兴趣的,可以驻步瞄一眼哟;
display属性:规定元素应该生成的框的类型(改变元素的类型,使用display属性)。
ps:以下就是每个属性的详解了,啦啦啦啦啦啦啦;
属性值详解:
1、none:此元素不会被显示;
(1) none此单词的意思是没有一个、毫无的意思;所以当display的属性值设置为none的时候,表示的是没有框类型,没有框类型的元素,是无法在浏览器中显示的,就实现隐藏元素的作用了;
示例如下:
html结构:
<div></div>
<p>我是p,测试div消失后,会不会占据浏览器空间</p>
css样式:
<style>
div{
width:100px;
height:100px;
background:violet;
/*设置div的属性值为none,观察div是否会隐藏不可见*/
display: none;
}
p{
background:yellowgreen
}
</style>
以上代码效果可以看出,div设置none之后,实现了完全消失并且不占据浏览器的空间效果;
(2)有很多标签,display的属性值默认是none,比如 head meta style link等等;
(3)项目应用中,做二级导航效果或者鼠标悬停效果动态时,会经常用到这个属性值,下次我们写一个好玩的二级效果再来展示这个属性值的作用;
2、block:此元素将显示为块级元素,此元素前后会带有换行符。
示例如下:
html结构:
<em>我原本是行内元素</em>
css样式:
<style>
em{
width:100px;
height:100px;
background:tomato;
/*em本来是行内元素元素,现在使用display属性转换为块状元素 */
display: block;
}
</style>
3、inline 默认。此元素会被显示为内联元素,元素前后没有换行符。
示例如下:
html结构:
<div>我原本是块状元素</div>
<span>用来测试的行内元素span</span>
css样式:
<style>
div{
width:80px;
height:80px;
background:coral;
/*div标签本来是块状元素,现在使用display属性转换为行内元素;*/
display: inline;
}
span{
background:cornflowerblue
}
</style>
4、inline-block 行内块元素(CSS2.1 新增的值)
说明:行内块元素既具备行内元素的特性也具备块状元素的特性,具备行内元素前后没有换行符可以在一行内并列显示的特性,具备块状元素可以正确解释盒模型属性的特性。
示例如下:
div块状元素,span行内元素,使用此属性值转换为行内块元素;
html结构:
<div>我原本是块状元素</div>
<span>我原本是行内元素</span>
css样式:
div,span{
/*div块状元素,span行内元素,使用此属性值转换为行内块元素;*/
display: inline-block;
}
div{
width:100px;
height:100px;
background:tomato;
}
span{
width:100px;
height:100px;
background:turquoise;
}
5、list-item 此元素会作为列表显示。
(1) 此属性值表示将元素显示为列表项标签,li标签默认的display的属性值是list-item,display的属性值为list-item的标签也属于块状元素;
示例如下:
(2) li标签作为列表项标签,前面会有列表项标记,下面给div标签设置为list-item,div也会有列表项标记
html结构:
<ul>
<div>div0</div>
<li>li1</li>
<li>li2</li>
<li>li3</li>
</ul>
css样式:
ul{
background:tomato
}
ul li{
border:1px solid turquoise
}
div{
/*给div标签设置为list-item*/
display: list-item;
}
6、run-in 此元素会根据上下文作为块级元素或内联元素显示。
(1) 目前很少有浏览器支持run-in这个属性值,并且在开发过程中用不到这个属性值,不予过多的研究;
7、table 此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
(1)table标签默认的元素类型是table,显示为块级表格,可以设置大小并且单独占据一行;(2)当table标签的元素类型是table时,并且设置宽度和高度之后,后代td标签的宽度和高度,默认是由table根据内容的多少去分配的;
(3) table属于块状元素,但是对比别的块状元素,有自己的特点, table会单独占据一行,但是在没有设置width的情况下,不会与父元素同宽,而是根据内容而定;
html结构:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
<span>我是行内元素span</span>
css样式:
table{
border:2px solid red;
}
table td{
border:1px solid chocolate;
background:darkcyan
}
span{
background:cornflowerblue
}
(3)其他标签设置display的属性值为table,也不会具有表格的特性;
html结构:
<div>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</div>
css样式:
div{
height:300px;
width:300px;
border:2px solid red;
/*将div设置为表格类型*/
display: table;
}
div td{
border:1px solid chocolate;
background:darkcyan
}
span{
background:cornflowerblue
}
8、inline-table 此元素会作为内联表格来显示(类似 <table>),表格前后没有换行符。
(1)将table显示为行内表格,具有行内块元素的特征,可以和别的行内元素从左往右显示也可以设置宽度和高度;
html结构:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
<span>我是行内元素span</span>
css样式:
table{
border:2px solid red;
/*将table设置为inline-table*/
display: inline-block;
}
table td{
background:darkcyan;
}
span{
background:cornflowerblue
}
(2)将table标签设置为inline-table之后,td标签的宽度就不能是table根据内容去分配了,需要单独给td设置width和height属性实现,不然td的大小就是内容的大小
HTML结构:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
<span>我是行内元素span</span>
css样式:
table{
border:2px solid red;
/*将table设置为inline-table*/
display: inline-block;
width:300px;
height:300px;
}
table td{
background:darkcyan;
}
span{
background:cornflowerblue
}
9、table-caption 此元素会作为一个表格标题显示(类似 <caption>)
(1)caption标签display的属性值是table-caption,能设置宽度高度盒模型属性等,属于块状元素;
html结构:
<table>
<caption>我是表格的标题标签</caption>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
css样式:
table{
border:2px solid red;
width:300px;
height:300px;
}
table td{
background:darkcyan;
}
table caption{
width:400px;
height:50px;
background:cyan;
margin:10px 0;
padding:10px;
line-height:50px;
}
(2)其他标签也可以设置此属性值,但是不具备表格标题的作用
10、table-header-group 此元素会作为一个或多个行的分组来显示(类似 <thead>)。
html结构:
<table>
<thead>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</thead>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
css样式:
table{
border:2px solid red;
}
table td{
background:darkcyan;
width:100px;
height:100px;
}
table thead{
/*以下属性设置无效*/
height:60px;
width:400px;
margin:100px;
}
11、table-row-group 此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
<table>
<thead>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</tbody>
</table>
css样式:
table{
border:2px solid red;
width:300px;
height:300px;
}
table td{
background:darkcyan;
}
table tbody{
/*以下属性设置无效*/
height:60px;
width:400px;
margin:100px;
}
12、table-footer-group 此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
(1)tfoot标签display的属性值是table-footer-group;
(2)tfoot标签的大小根据table自动分配,或者根据td而定,本身不能设置大小或者其他边距
(3)其他标签可以设置此属性值,但是不具表格表尾标签的作用
HTML结构:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tfoot>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</tfoot>
</table>
css样式:
table{
border:2px solid red;
width:300px;
height:300px;
}
table td{
background:darkcyan;
}
/*以下属性设置无效*/
table tfoot{
height:60px;
width:400px;
margin:100px;
}
13、table-row 此元素会作为一个表格行显示(类似 <tr>)。
(1) tr标签display的属性值是table-row
(2) tr标签设置height有效,width 边距设置无效,具体的大小根据table和td而定;
(3) 其他标签可以设置此属性值,但是不具表格行标签的作用
HTML结构:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
css样式:
table{
border:2px solid red;
}
table td{
background:darkcyan;
}
table tr{
border:1px solid chartreuse;
margin:20px;
height:100px;
width:300px;
margin:10px;
}
14、table-cell 此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
(1)td , th标签display的属性值是table-cell
(2)设置宽度、高度、边框、内边距有效,外边距无效,单元格之间的间距,使用border-spacing实现
HTML结构:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
css样式:
<style>
table{
border:2px solid red;
border-spacing: 10px;
}
table td{
background:darkcyan;
width:100px;
height:100px;
}
</style>
(3)其他标签可以设置此属性值,但是不具单元格标签的作用
html结构:
<table>
<tr>
<span>1</span>
<span>2</span>
<span>3</span>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
css样式:
table{
border:2px solid red;
border-spacing: 10px;
}
table td{
background:darkcyan;
width:100px;
height:100px;
}
span{
display: table-cell;
width:100px;
height:100px;
background:darkcyan;
}
15、table-column-group 此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
(1)colgroup 标签 display的属性值是table-column-group
(2)此标签的特点是对列进行分组的,给分组的列设置样式;
HTML结构:
<table>
<colgroup span="1"></colgroup>
<colgroup span="2"></colgroup>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
css样式:
table{
border:2px solid red;
border-spacing: 10px;
}
table td{
background:darkcyan;
}
table colgroup:nth-child(1){
width:100px;
height:100px;
background:pink
}
table colgroup:nth-child(2){
width:50px;
height:50px;
background:green
}
16、table-column 此元素会作为一个单元格列显示(类似 <col>)
(1)col 标签 display的属性值是table-column
(2)此标签的特点是对单元格列设置效果;
HTML结构:
<table>
<col span="1">
<col span="2">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
css样式:
<style>
table{
border:2px solid red;
border-spacing: 10px;
}
table td{
width:100px;
height:100px;
}
table col:nth-child(1){
background:pink
}
table col:nth-child(2){
background:green
}
</style>
17、inherit 规定应该从父元素继承 display 属性的值。
说明:此属性值是所有css属性都有的值,能被继承的属性,自然可以继承,不能被继承的,设置了此属性值也不能实现继承;
18、compact CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
19、marker CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
通过以上的测试,可以总结出:
display的属性值为block,table的标签都为块状元素;
display的属性值为inline,inline-table,inline-block的标签为行内级元素;
表格中的标签对应的那些display的属性值,其他的标签也可以设置,但是都不具备表格标签的功能和特征,所以表格中的标签对应的display的属性值,不能泛用,相当于一种特殊的存在;
SS中的浮动(Floats)、定位(Positioning)和显示(Display)属性是前端工程师掌握页面布局的关键。本文将深入探讨这些属性的工作原理和使用场景,帮助开发者更好地理解和运用它们来构建响应式和精确的网页布局。
浮动是CSS中用于实现元素排列的一种方式,它可以让元素脱离正常的文档流,并可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动元素的边缘。
.element {
float: left; /* 或者 'right' */
}
.clear-element {
clear: both; /* 可以是 'left', 'right', 或 'both' */
}
定位属性允许你控制元素的位置,它可以是相对于它的正常位置、相对于最近的已定位祖先元素、相对于视口或绝对位置。
.element {
position: static | relative | absolute | fixed | sticky;
}
.relative-element {
position: relative;
top: 10px;
left: 20px;
}
.absolute-element {
position: absolute;
top: 0;
right: 0;
}
.fixed-element {
position: fixed;
bottom: 0;
left: 0;
}
.sticky-element {
position: sticky;
top: 10px;
}
display属性是CSS中最重要的用于控制布局的属性之一,它定义了元素如何显示在页面上。
.element {
display: block | inline | inline-block | flex | grid | none;
}
.block-element {
display: block;
}
.inline-element {
display: inline;
}
.inline-block-element {
display: inline-block;
}
.flex-container {
display: flex;
}
.grid-container {
display: grid;
}
.hidden-element {
display: none;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Float, Position, and Display Example</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="header">
<div class="logo">Logo</div>
<div class="navigation">Navigation</div>
</div>
<div class="main-content">
<div class="sidebar">Sidebar</div>
<div class="content">Content</div>
</div>
<div class="footer">Footer</div>
<div class="fixed-element">Fixed Element</div>
</body>
</html>
/* Reset some default styles */
body, h1, p {
margin: 0;
padding: 0;
}
/* Header styles */
.header {
background-color: #f8f8f8;
border-bottom: 1px solid #e7e7e7;
padding: 10px;
overflow: hidden; /* Clearfix for floated elements */
}
.logo {
float: left;
font-size: 24px;
}
.navigation {
float: right;
font-size: 18px;
}
/* Main content styles */
.main-content {
padding: 20px;
}
.sidebar {
float: left;
width: 200px;
background-color: #ddd;
padding: 10px;
}
.content {
margin-left: 220px; /* Make space for the sidebar */
background-color: #eee;
padding: 10px;
}
/* Footer styles */
.footer {
background-color: #f8f8f8;
border-top: 1px solid #e7e7e7;
text-align: center;
padding: 10px;
position: relative; /* For demonstration purposes */
top: 20px; /* Move the footer down a bit */
}
/* Fixed element styles */
.fixed-element {
position: fixed;
bottom: 10px;
right: 10px;
padding: 5px 10px;
background-color: #333;
color: #fff;
z-index: 1000; /* Ensure it stays on top */
}
/* Clearfix hack */
.clearfix::after {
content: "";
clear: both;
display: table;
}
在这个例子中,我们创建了一个包含头部、侧边栏、主要内容和页脚的基本布局。我们使用浮动来对齐头部的Logo和导航,以及创建一个侧边栏。我们还使用了相对定位来稍微下移页脚,并使用固定定位为页面添加了一个始终可见的固定元素。最后,我们使用了overflow: hidden;来清除头部中浮动元素的影响。
浮动、定位和显示属性是CSS中构建复杂布局的强大工具。通过深入理解和正确应用这些属性,前端工程师可以创建出既美观又功能强大的网页。随着Web标准的不断发展,我们也需要不断学习和适应新的CSS特性,以保持我们技能的前沿性。
*请认真填写需求信息,我们会在24小时内与您取得联系。