css 中的position定位和flex布局分析

版权声明:原创博文,转载请注明出处~ https://blog.csdn.net/She_lock/article/details/80690247

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布局以后,子元素的floatclearvertical-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 布局教程:语法篇

展开阅读全文

没有更多推荐了,返回首页