position定位
fixed绝对定位
fixed
生成绝对定位的元素,相对于浏览器窗口(或手机等终端窗口)进行定位。元素的位置通过"left", "top", "right"
以及"bottom"
属性进行规定。
实例:
<view style='position:fixed;bottom:100rpx;right:100rpx'>
<image style=' width:102rpx; height:110rpx' src="/images/music/music-start.png"></image>
</view>
基于浏览器窗口(或手机等终端窗口)浮动于文档流之上,随着滚动一直停留在屏幕之中。
absolute绝对定位
absolute
生成绝对定位的元素。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。
例1,一个列表中的相对定位:
<view style='position:absolute;'>
<image style=' width:102rpx; height:110rpx' src="/images/music/music-start.png"></image>
</view>
在没有使用 “left”, “top”, “right” 以及 “bottom” 属性之前,基于文档流的位置停留在在文档流之外,随着滚动并不一直停留在屏幕中。
例2:
<view style='position:absolute;bottom:100rpx;right:100rpx'>
<image style=' width:102rpx; height:110rpx' src="/images/music/music-start.png"></image>
</view>
在使用 “left”, “top”, “right” 以及 “bottom” 属性之后,位置就不是基于文档流时候的位置,而是根据这些设置的属性基于整个屏幕的位置确定的。随着滚动并不一直停留在屏幕中。
relative相对定位
生成相对定位的元素,相对于其正常位置进行定位。因此,”left:20” 会向元素的 LEFT 位置添加 20 像素。
<html>
<head>
<style type="text/css">
h2.pos_left
{
position:relative;
left:-20px
}
h2.pos_right
{
position:relative;
left:20px
}
.container{
margin-left:100px;
border:5px solid #405f80;
}
</style>
</head>
<body>
<div class="container">
<h2>这是位于正常位置的标题</h2>
<h2 class="pos_left">这个标题相对于其正常位置向左移动</h2>
<h2 class="pos_right">这个标题相对于其正常位置向右移动</h2>
</div>
</body>
</html>
效果如下:
static默认定位
默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
flex布局
盒子属性
1、Flex
布局
.box{
display: flex | inline-flex ;
}
- flex :任何一个容器都可以指定为 Flex 布局。
- inline-flex :行内元素也可以使用 Flex 布局。
设为Flex
布局以后,子元素的float
、clear
和vertical-align
属性将失效。
2、flex-direction
属性决定主轴的方向(即项目的排列方向)。
.box {
flex-direction: row | row-reverse | column | column-reverse;
}
- row(默认值):主轴为水平方向,起点在左端。
- row-reverse:主轴为水平方向,起点在右端。
- column:主轴为垂直方向,起点在上沿。
- column-reverse:主轴为垂直方向,起点在下沿。
3、flex-wrap属性
默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。
.box{
flex-wrap: nowrap | wrap | wrap-reverse;
}
- nowrap(默认):不换行。
- wrap:换行,第一行在上方。
- wrap-reverse:换行,第一行在下方。
4、justify-conten
t属性定义了项目在主轴上的对齐方式。
.box {
justify-content: flex-start | flex-end | center | space-between | space-around;
}
- flex-start(默认值):左对齐
- flex-end:右对齐
- center: 居中
- space-between:两端对齐,项目之间的间隔都相等。
- space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
5、align-items
属性定义项目在交叉轴上如何对齐。
.box {
align-items: flex-start | flex-end | center | baseline | stretch;
}
- flex-start:交叉轴的起点对齐。
- flex-end:交叉轴的终点对齐。
- center:交叉轴的中点对齐。
- baseline: 项目的第一行文字的基线对齐。
- stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
条目属性
1、order
属性定义项目的排列顺序。数值越小,排列越靠前,默认为0
。
.item {
order: <integer>;
}
2、flex-grow
属性定义项目的放大比例,按照比例分配剩余空间,默认为0,即如果存在剩余空间,也不放大。
.item {
flex-grow: <number>; /* default 0 */
}
3、flex-shrink
属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。负值对该属性无效。
.item {
flex-shrink: <number>; /* default 1 */
}
4、align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。该属性可能取6个值,除了auto,其他都与align-items属性完全一致。
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
本文部分参考了 Flex 布局教程:语法篇