马三荷

display属性

在css中如果我们想把块级元素转换成内联元素怎么办,通常我们都用css属性中的display来解决;

语法
display:属性值;
display属性
属性值 说明
block 块元素
inline 行内元素
inline-block 行内块元素
table 以表格形式出现类似table
table-row 以表格行的形式出现类似tr
table-cell 以表格单元格形式出现类似td
none 隐藏元素

inline-block

这个属性的特点是他结合了块元素的特点和行内元素的特点

 

 
 

display:none

display:none我们经常和JavaScript用来动态隐藏元素,经常隐藏的元素比如二级导航、tab选项卡等

使用display:none需要注意的两个地方:

1、"display:none"通常使用JavaScript动态隐藏元素,且不占原来的位置

2、"display:none"隐藏一些对SEO关键的部分,因为搜索引擎会直接忽略隐藏的那一部分

 

display:none和visibility:hidden的区别

在css中我们隐藏元素通常使用这两个方法,

这两个的区别就是:

display:none隐藏元素后,元素不占原来的位置,就是彻底消失了

visibility:hidden 隐藏元素后,还占原来的位置,也就是看不见但是摸的找

 

dispaly:table -cell

在css中我们将元素转换成table-cell类型,元素以表格单元格形式呈现,也就是说类似于表格的单元格td的特点

这个属性在IE8+及其他现代浏览器都支持,但IE6、7并不支持,由于现在IE6、7逐渐退出浏览器这块区域,我们还是果断使用"display:table-cell"这一布局神器

 

display:table-cell非常强大,其布局功能主要分为三种

(1)图片垂直居中与元素

(2)等高布局

(3)自动平均划分元素,并且在一行显示

 

图片垂直居中于元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>table-cell应用</title>
    <style type="text/css">
        div{
            width: 150px;
            height: 150px;
            display: table-cell;
            text-align: center;
            vertical-align: middle;
            border: 1px solid yellow;
        }
    </style>
</head>
<body>
    <div><img src="images/q1.jpg"></div>
    <div><img src="images/q2.jpg"></div>
    <div><img src="images/q3.jpg"></div>
</body>
</html>

 

结果:

 

分析:图片水平居中我们用"text-align:center",使图片垂直居中我们使用"display:table-cell"和"vetical-align:middle"配合使用

 

等高布局

我们知道,同一行的单元格td是同高的,因此table-cell也具有这个特性,我们可以就此实现等高的效果;

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>table-cell应用</title>
    <style type="text/css">
        div{
            width: 150px;
            height: 150px;
            display: table-cell;
            text-align: center;
            vertical-align: middle;
            border: 1px solid yellow;
        }
    </style>
</head>
<body>
    <div><img src="images/q1.jpg"></div>
    <div><img src="images/q2.jpg"></div>
    <div><img src="images/q3.jpg"></div>
</body>
</html>

 

结果

 分析:

我们发现我们并没有定义它们的高度,但它们的高度一致,并且高度由最高的那个决定。这就是自适应高度布局。

它的应用比如我们发动态时候有好友评论,好友评论栏就是使用自适应等高布局。这个布局也是两栏的,左栏是好友头像,右栏是好友评论,因为我们不知道好友评论内容的长度所有不能给它们固定高,只能让它们自适应

。这个技巧非常使用,一定要掌握

自动平均划分元素

 

 如果我们想用ul实现上面的图片,我们可能第一个想到就是用float来实现,但是这样我们就需要精确每一个li的宽度,但是使用display:table-cell;就很快速

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自动平均划分元素</title>
    <style type="text/css">
        ul{
            display: table;
            width: 300px;
            list-style: none;
        }
        li{
            height: 60px;
            display: table-cell;
            text-align: center;
            line-height: 60px;
            color: white;
        }
        ul li:nth-child(1){
            background-color: red;
        }
        ul li:nth-child(2){
            background-color: purple;
        }
        ul li:nth-child(3){
            background-color: yellow;
        }
        ul li:nth-child(4){
            background-color: blue;
        }
        ul li:nth-child(5){
            background-color: green;
        }
        ul li:nth-child(6){
            background-color: black;
        }
    </style>
</head>
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
</body>
</html>

 

 

分析:

其中

:nth-child(n)是css3选择器现在所有主流浏览器均支持 :nth-child() 选择器,除了 IE8 及更早的版本。

:nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型。

n 可以是数字、关键词或公式。

 

 

去除inline-bloc元素的间距

首先看一个例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>去除inline-block元素间距</title>
    <style type="text/css">
*{padding:0;
margin:0;
}
        ul{
            list-style: none;
        }
        li{
            display: inline-block;
            width: 60px;
            height: 60px;
            background-color: yellow;
            text-align: center;
            line-height: 60px;
        }
    </style>
</head>
<body>
    <ul>
        <li>A</li>
        <li>B</li>
        <li>C</li>
    </ul>
</body>
</html>

 

结果

在图中,我们看到inline-block是会产生间距的,这个间距是会影响我们的布局,大多数为了不影响布局的情况,我们会去除掉这个间距。在css中我们就使用"font-size:0"来去除

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>去除inline-block元素间距</title>
    <style type="text/css">
        ul{
            list-style: none;
            font-size: 0;
        }
        li{
            display: inline-block;
            width: 60px;
            height: 60px;
            background-color: yellow;
            text-align: center;
            line-height: 60px;
            font-size: 30px;
        }
    </style>
</head>
<body>
    <ul>
        <li>A</li>
        <li>B</li>
        <li>C</li>
    </ul>
</body>
</html>

 

结果

注意:这个font-size:0是放在父级的

 

posted on 2018-01-17 19:40  马三荷  阅读(234)  评论(0编辑  收藏  举报

导航