<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.nav_text{
display: flex;
flex-direction: row-reverse;
}
nav{
position: relative;
background-color:#f38418
}
nav img{
position: absolute;
}
nav ul li{
list-style: none;
display: inline-block;
margin: 30px 50px;
}
</style>
</head>
<body>
<nav>
<div><img src="\logo.jpg"> </div>
<div class="nav_text">
<ul>
<li><a>泰迪</a></li>
<li><a>可卡</a></li>
<li><a>比熊</a></li>
<li><a>博美</a></li>
<li><a>边牧</a></li>
</ul>
</div>
</nav>
</body>
</html>
一、了解-Flex布局
传统的布局方式有三种,标准流、浮动和定位 准则:多个块级元素纵向排列用标准流,横向排列用浮动
布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 float布局缺点 给父元素添加 float :left 时会让父元素也脱离文档流 产生坍塌 ! 如果子元素使用定位或外边距等方法超出该元素时会被隐藏 ! 因此不建议使用 其 进行排版!
Flex布局 2009年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。 注意:设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。 任何一个容器都可以指定为Flex布局。
属性包括
.box {
flex-direction: row | row-reverse | column | column-reverse;
}
2、flex-wrap属性 默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。 .box{ flex-wrap: nowrap | wrap | wrap-reverse; } (1)nowrap(默认):不换行。 (2)wrap:换行,第一行在上方。 (3)wrap-reverse:换行,第一行在下方。 3、 flex-flow flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
.box {
flex-flow: <flex-direction> <flex-wrap>;
}
4 justify-content属性 justify-content属性定义了项目在主轴上的对齐方式。
.box { justify-content: flex-start | flex-end | center | space-between | space-around; }
- flex-start(默认值):左对齐
- flex-end:右对齐
- center: 居中
- space-between:两端对齐,项目之间的间隔都相等。
- space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
5 align-items属性 align-items属性定义项目在交叉轴上如何对齐。
.box { align-items: flex-start | flex-end | center | baseline | stretch; } 6 align-content属性 align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
.box { align-content: flex-start | flex-end | center | space-between | space-around | stretch; }
- flex-start:与交叉轴的起点对齐。
- flex-end:与交叉轴的终点对齐。
- center:与交叉轴的中点对齐。
- space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
- space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
- stretch(默认值):轴线占满整个交叉轴。
例子:
<head>
<title>Document</title>
<style>
.nav{
background: rebeccapurple;
}
.a{
width: 100px;
height: 200px;
background-color: aqua;
}
.b{
width: 100px;
height: 200px;
background-color:aquamarine;
}
.c{
width: 100px;
height: 200px;
background-color: bisque;
}
</style>
</head>
<body>
<div class="nav">
<div class="a"></div>
<div class="b"></div>
<div class="c"></div>
</div>
</body>
1、 .nav{ display: flex; background: rebeccapurple; }
二、定位
定位=定位模式+边偏移 (1)是否脱标 (2)以谁为基准点 定位有相对定位、绝对定位、固定定位、粘性定位 定位要点: 1)绝对定位盒子水平居中不能用auto,得用left:50%;margin-left:盒子的宽度一半 2)给行内元素设置定位后,可用设置宽和高 3)给块级元素加绝对或者固定定位,默认和内容大小相同 4)脱标的盒子不触及外边距塌陷 1、相对定位relative 特点: (1)以它原来的位置为基准点 (2)原来在标准流的位置仍然继续占有 (3)不脱标 2、绝对定位absolute 特点: (1)以父级元素为基准点,当元素没有父级元素或是父元素原来没有定位时,以浏览器为准 (2)以最近一级含有非static定位的父级元素为准 (3)脱标,不占有原来标准流的位置 一般这样用:子绝父相 3、固定定位ficed 特点: (1)固定在浏览器的可视区范围,跟父元素没有关系 (2)脱标,不占有原来标准流的位置 4、粘性定位sticky(不常用) 特点: (1)相对和固定的混合,以浏览器可视区为参照物移动 (2)不脱标
|